css图标跟文字对齐的两种方式

作者:Jasmine - 2020年09月04日

css图标跟文字对齐的两种方式:

第一种方式参考张鑫旭的css世界这本书中的讲解方式:

效果:

方式1:

.box {
	line-height: 20px;
}

.box .icon {
	display: inline-block;
	width: 20px;
	height: 20px;
	white-space: nowrap;
	letter-spacing: -1em;
	text-indent: -999em;
}
.box .icon:before {
	content: '\3000';
}
.icon-delete {
	background: url(img/delete.png) no-repeat center;
}
.large {
	font-size: 20px;
}
<div class="box">
	<h4>1. 空标签后面跟随文本</h4>
	<p><i class="icon icon-delete"></i>删除</p>
	<h4>2. 标签里面有“删除”文本</h4>
	<p><i class="icon icon-delete">删除</i>随便什么文字</p>
	<h4>3. 字号变大</h4>
	<p class="large"><i class="icon icon-delete"></i>删除 随便什么文字</p>
</div>

分析:

(1)图标高度和当前行高都是 20px。很多小图标背景合并工具都是图标宽高多大生成的CSS 宽高就是多大,这其实并不利于形成可以整站通用的 CSS 策略,我的建议是图标原图先扩展成统一规格,比方说这里的 20px×20px,然后再进行合并,可以节约大量 CSS 以及对每个图标对齐进行不同处理的开发成本。

(2)图标标签里面永远有字符。这个可以借助:before 或:after 伪元素生成一个空格字符轻松搞定。

(3)图标 CSS 不使用 overflow:hidden 保证基线为里面字符的基线,但是要让里面潜在的字符不可见。


方式2

.box2 i {
	width: 20px;
	height: 20px;
}
.box2 i {
	vertical-align: middle;
	display: inline-block;
}
.box2 span {
	vertical-align: middle;
	display: inline-block;
}
<div class="box2">
	<h4>-----------------------------------</h4>
	<h4>1. 空标签后面跟随文本,文本加span标签</h4>
	<p><i class="icon icon-delete"></i><span>删除</span></p>
	<h4>2. 字号变大</h4>
	<p class="large"><i class="icon icon-delete"></i><span>删除</span></p>
</div>

分析:这个主要用vertical-align和inline-block两种对齐,也要给图标文字加标签才行。


本文作者: Jasmine

本文链接: https://www.jianbaizhan.com/article/687

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!