css实现不同浏览器下兼容文本两端对齐

2020-05-16 07:12:05易采站长站整理

在 form 表单的前端布局中,我们经常需要将文本框的提示文本两端对齐,例如:

比较粗暴的做法是在需要隔离边距的文本中加标签,然后分别控制每个文字的边距,这种方法比直接加空格或者占位符更精准,我之前也都是这么做的。但是写的多了之后开始思考能不能抽象出来用于更多的场景?让代码更好看一些?维护成本更低一些?

1、首先想到是能不能直接靠 css 解决问题

css


.test-justify {
text-align: justify;
}

html


<div class="test-justify">
测试文本
</div>

好吧,

text-align:justify
完全无效,不甘心,于是用一段文本测试了下,效果如下:

原来这个属性是针对段落文本两端对齐的,接着试一下

text-align-last: justify
这个属性

css


.test-justify {
text-align: justify;
}

效果是达到了,但缺点是完全不兼容 ie 和 safari 浏览器。

2、接着思考,既然上述实现存在兼容性问题,那么能不能为 2 个,3 个,4 个等这样长度的文本单独写 css 类解决,因为表单的文本框提示文字也不会很多。

css


div {
width: 100px;
}
.w2 {
letter-spacing: 2em;
}
.w3 {
letter-spacing: 0.5em;
}

html


<div class="w2">测试</div>
<div class="w3">测试了</div>
<div>测试来了</div>


 

这种方案看起来能够解决问题,应对大部分场景应该没问题了,但遗憾的是并不是真正的两端对齐,特殊显示的情况下还是无法满足需求,我们先放着,继续往下尝试。

2、以上是纯 css 实现方式,接下来我们看看 css 和 dom 结合能不能做出统一形式的解决方案。

html


<div class="test-justify">
测 试 文 本
<span></span>
</div>

css


.test-justify {
text-align: justify;
}
span {