本文摘自PHP中文网,作者V,侵删。
目标:
css实现不同浏览器下兼容文本两端对齐。
在 form 表单的前端布局中,我们经常需要将文本框的提示文本两端对齐,例如:
解决过程:
1、首先想到是能不能直接靠 css 解决问题
css
1 2 3 |
|
html
1 2 3 |
|
好吧,text-align:justify 完全无效,不甘心,于是用一段文本测试了下,效果如下:
(推荐教程:CSS教程)
原来这个属性是针对段落文本两端对齐的,接着试一下 text-align-last: justify 这个属性
css
1 2 3 |
|
效果是达到了,但缺点是完全不兼容 ie 和 safari 浏览器。
2、接着思考,既然上述实现存在兼容性问题,那么能不能为 2 个,3 个,4 个等这样长度的文本单独写 css 类解决,因为表单的文本框提示文字也不会很多。
css
1 2 3 4 5 6 7 8 9 |
|
html
1 2 3 |
|
这种方案看起来能够解决问题,应对大部分场景应该没问题了,但遗憾的是并不是真正的两端对齐,特殊显示的情况下还是无法满足需求,我们先放着,继续往下尝试。
2、以上是纯 css 实现方式,接下来我们看看 css 和 dom 结合能不能做出统一形式的解决方案。
html
1 2 3 4 |
|
css
1 2 3 4 5 6 7 |
|
想想还有一些小激动呢,而且完美兼容 ie 和 safari,这种方案其实就是第一种段落对齐方案的扩展,用空格强制分词,然后用 span 伪造最后一行(test-justify 不会对最后一行进行对齐)。
为了增加扩展性,我们还得对这种方案进行优化,因为大多数情况下文本是后端加载的。
例如: .net core razor 视图加载 model displayname 的写法
1 |
|
只要加一小段js然后就应该能兼容所有场景了。
css
1 2 3 4 5 6 7 8 9 10 11 |
|
html
相关阅读 >>
更多相关阅读请进入《css》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者