前言
可能很多人一开始学前端时都会觉得CSS简单,没错,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;}
这样的话,图片和文字就以其中心线对齐了:
说到这里,其实本文基本已经结束了,但是经过本人亲测发现,在移动端却会发现图片和文字又会出现不对齐的情况了,但这只是部分浏览器出现的兼容性问题,解决方法也是有的,就是在设置文字字体大小和icon大小时尽量设置为5的整数倍,并尽量让icon高度与字体大小相同。那么本例的代码将写成下面这样:
.del{ font-size: 20px;} .del .icon{ display: inline-block; width: 20px; height: 25px; margin-right: 5px; vertical-align: middle; background: url("imgs/delete.png") no-repeat center; background-size: 100%;} .del span{ vertical-align: middle;}
这样基本也没有什么问题了……
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
在设计的工作中,很多时候会听到参加评审的设计师或者是某些领导说,这设计稿细...
春风好媒妁,说动一树榴红。偶来雨多,茅屋又新破,且戴一笠,借故去访邻居家老...
本文作者:易潇 她的 Github: https://github.com/lilyzhaoyilu 大家好,我是易...
本地生活综合性需求图谱(GENE: lifestyle GEneral NEeds net),是从用户需求视...
下面一段代码给大家介绍CSS实现图片等比例缩小不变形 ,具体代码如下所示: img ...
全文5000字,解读 vscode 背后的代码高亮实现原理,欢迎点赞关注转发。 Vscode ...
整理文档,搜刮出一个H5调用相机拍照并压缩图片的实例代码,稍微整理精简一下做...
不过,美中不足的是,它内置的一些验证,在中国的实际应用中并不是很大,因为它...
前言 《数据结构-使用JS实现四叉树》 上文中简单介绍了四叉树的一些实现和应用场...
前言 目前,很多APP设计师小伙伴已经开始转向H5前端开发啦,但是解决所有iPhone...