css图片后的文字无法居中对齐怎么解决?

比如说,现在我要做一个简单的删除按钮,只由一个icon和“删除”两个字组成,你会如何布局,给你30秒时间考虑。

好,先亮出HTML代码如下:

<div class="del"><span class="icon"></span><span>删除</span></div>

很简单,就是一个class为del的div元素下有两个span标签,当然icon你也可以直接用伪元素代替(还不知道伪元素的面壁思过去...)。

接下来你可能会这么写CSS:

.del {
	font-size: 18px;
}

.del .icon {
	display: inline-block;
	width: 16px;
	height: 24px;
	margin-right: 5px;
	background: url("imgs/delete.png") no-repeat center;
	background-size: 100%;
}

然后它就变成这个样子了:

咦?好像跟想象的不太一样啊!为什么图片和文字垂直方向上不能对齐呢?Why?

这是因为图片和文字在行内垂直方向默认是以基线(baseline)对齐的,图片基线在图片底部,而文字基线却在文字中点偏下的位置,所以才会显示成上图的样子。那么这个问题该如何解决呢?

很简单,我们只需给图片和文字分别加上 vertical-align: middle即可:

.del .icon {
	display: inline-block;
	width: 18px;
	height: 24px;
	margin-right: 5px;
	vertical-align: middle;
	background: url("imgs/delete.png") no-repeat center;
	background-size: 100%;
}

.del span {
	vertical-align: middle;
}

这样的话,图片和文字就以其中心线对齐了:

说明:

vertical-align 属性设置元素的垂直对齐方式。

vertical-align属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

使用vertical-align:middle 可以把元素放置在父元素的中部。

Image placeholder
前端答疑
未设置
  85人点赞

没有讨论,发表一下自己的看法吧

推荐文章
css文字水平垂直居中怎么设置?

1、文字水平居中在CSS中想要让文字水平居中,可以使用text-align:center;。text-align是一个基本的属性,它会影响一个元素中的文本行互相间的对齐方式。值left、right和c

css图片在ie8中不显示怎么办?

css图片在ie8中不显示怎么办?css背景图片在ie8中不能显示是因为no-repeat前面缺少空格,添加一个空格,改成background:url(图片地址)no-repeat即可。代码:(相关课

css图片属性如何设置?

css图片属性如何设置?首先新建一个style标签;然后在style标签内使用语法img{属性:值}即可,比如设置图片边框属性img{border:1pxsolidred}。语法:img{ 属性:值;

css背景图片显示不完怎么解决?

css设置背景图片显示不全是因为背景图片过大导致的,我们可以通过设置div大小大于背景图片或使用background-size属性设置背景图片小于div大小使背景图片显示完全。示例:下面我们来看一下通

css怎么让表单右对齐?

css怎么让表单右对齐?只需要在表单外套个div标签,设置text-align:right;即可。(相关课程推荐:css视频教程) 居中对齐 .a{ width:300px; height:3

css怎么设置div居中?

css设置div居中的方法1、利用margin,div1的宽减去div2的宽就是div2margin-left的数值:(100-40)/2=30div1的高减去div2的高就是div2margin-t

css使用float怎么居中?

css使用float怎么居中?css并没有float:center,但是实现水平居中浮动是可以实现的。以下面的Li列表为例,我们要实现中间LI的居中浮动: 列表一 列表二 列表三 我们需要先了解下

css定位怎么实现居中?

css定位怎么实现居中?使用绝对定位absolute是一种常用、兼容性很好的方式。.element{ width:600px;height:400px; position:absolute; left

css不同浏览器兼容性问题怎么解决?

css不同浏览器兼容性问题的解决方案1.浏览器CSS样式初始化由于每个浏览器的css默认样式不尽相同,所以最简单有效的方式就是对其进行初始化,相信很多朋友都写过这样的代码,在所有CSS开始前,先把ma

css因mime类型不匹配而被忽略怎么解决?

怎么解决?进入注册表编辑器,查看HKEY_CLASSES_ROOT\.css里面的ContentType是否是text/css1、如何进入注册表编辑器通过快捷键"win"+"R",调用运行窗口在运行窗

css文件中文乱码怎么解决?

css文件中文乱码怎么解决?一、字体乱码:1、比如设置字体为宋体:font-family:’宋体’;但因此产生的一个问题是,如果CSS编码有误,会导致页面加载后CSS中的中文字体乱码。通常会采用对中文

php中css不加载怎么解决?

php中css不加载怎么解决?解决方法:1、首先打开HTML文档;2、然后在head标签中找到引入css文件的link标签;3、最后在link标签的href属性的值前面,加上__STATIC__即可。

ie6加载不了css怎么解决?

ie6加载不了css怎么解决?IE6不加载css文件,是因为css文件的编码不正确,使用记事本创建的css文件,默认编码时ANSI,这种情况下在其他浏览器下CSS样式会正常显示,但IE6及以下版本就不

ie11下不能引入外部css怎么解决?

ie11下不能引入外部css怎么解决?问题:在IE11下使用link标签引入css时,无法正常引入,直接在页面中使用style标签没问题。原因:头文件的问题。解决方法:●删除头部的●或者,将头部改成

如何不写css使div居中显示

如何不写css使div居中显示不使用css使div居中显示,可以使用标签,对其所包括的文本进行水平居中。html代码如下: 这是div 效果:(相关课程推荐:css视频教程)标签说明HT

css水平垂直居中有几种实现方式?

css水平垂直居中有几种实现方式?1、水平对齐+行高【思路一】text-align+line-height实现单行文本水平垂直居中 .f10.test{ text-align:center; line

css中背景透明的图片不透明怎么解决

css中背景透明的图片不透明怎么解决一、使用滤镜解决img{ background:transparent; -ms-filter:"progid:DXImageTransform.Microsoft

iis部署html css无法显示怎么解决

iis部署htmlcss无法显示怎么解决如果你的网站在VS或其他软件中运行时具有CSS和JS功能,但到了IIS中就消失了,导致网站变成纯文字界面。你需要进行如下尝试。1、首先确认是否打开IIS中的“动

CSS怎么给文字添加描边?

CSS怎么给文字添加描边?给需要实现文字描边的元素添加如下CSS3的属性text-shadow:#0001px00,#00001px0,#000-1px00,#0000-1px0; -webkit-t

笔记:element固定表头的表格,如果表格太宽了拉到最右侧会出现表头和内容不对齐的情况

在顶级样式文件里面加下面的代码.el-table--borderth.gutter:last-of-type{ display:block!important; width:8px!important

JavaScript中对“this”的简单理解

1.this的奥秘很多时候,JS中的this对于咱们的初学者很容易产生困惑不解。this的功能很强大,但需要一定付出才能慢慢理解它。对Java、PHP或其他标准语言来看,this表示类方法中当前对象的

jquery版本冲突怎么解决?

jquery版本冲突怎么解决?jQuery多个版本冲突的解决方法。1、分别引入不同版本的jquery库;2、使用jQuery.noConflict(true)方法为jquery设置一个别名;3、使用立

jQuery名称冲突怎么解决?

因为许多JavaScript库使用$作为函数或变量名,jquery也一样。其实$只是jquery的一个别名而已,假如我们需要使用jquery之外的另一js库,我们可以通过调用$.noConflict(

Jquery load()乱码怎么解决?

Jqueryload()乱码怎么解决?如果用jQueryload方法加载的文档中包含中文字符,可能会引起乱码问题。要解决这个问题,方法1:所加载的文档本身应当采用UTF-8格式编码。在记事本中,默认的

jquery ajax提交数据乱码怎么解决?

为了避免乱码,可以做到以下几步解决方法1、保持编码的统一,包括文件编码,数据库编码,网页content-type编码检查一下建议中文都是用UTF-8,使用gbk/gb2312有可能会出现乱码2、使用p