如果不喜欢看分析过程,可以跳到最后看最终兼容方案

史前方法:

以前实现两端对齐是这样的:

<p class="box1">密&emsp;&emsp;码</p>
<p class="box1">用&emsp;户&emsp;名</p>
<p class="box1">身&emsp;份&emsp;证&emsp;号</p>

效果是这样:

然后再慢慢加&emsp 或者&nbsp 来调整。原始、粗暴、效率低。em。。。应该摒弃。。。

现代方式:

自从了解到 text-align:justify 发现,原来还有这种操作。

<ul>
<li>密码</li>
<li>用户名</li>
<li>身份证号</li>
</ul>
ul li{
width: 120px;
text-align: justify;
}

满怀期待,结果是

???不是两端对齐么,怎么会无效???

原来是这样的:

(1)  text-align:justify 不处理强制打断的行,也不处理块内的最后一行。通俗一点讲,就是只有一行显示的时候这个属性是不起作用的,或者使用了word-break: break-all;这种强制换行的属性,也是不起作用的。

(2) 如果内容是多于一行的时候,除了最后一行,都是两端对齐的效果。

问:那么当只有一行显示的时候,怎么让它能左右两端对齐呢?

方法一:在内容中添加一个用于占位的标签,让内容处于第一行,就能达到效果:

<ul>
<li>密码<p class="zw"></p></li>
<li>用户名<p class="zw"></p></li>
<li>身份证号<p class="zw"></p></li>
</ul>
ul li{
width: 120px;
text-align: justify;
}
.zw{
display: inline-block;
width: 100%;
}

 这时结果为:

为什么内容效果实现了,但是下面会多出空白来呢?设置zw元素 height:0 都不起作用。。。我估计产生间隙的原因是 display: inline-block; 导致的。那么怎么解决呢?

这时就只有设置 li 的高度,比如给 li 添加 height: 40px;line-height: 40px; 。

结果如下:

这样就解决了空白的问题。

注意:如果只设置height,不设置line-height的话,当height设置的值有点小,比如20,还是看不出来空白,但是设置有点大,比如40的时候,空白又会出现,但是这空白并不是占位符的空白,而是内容没有垂直居中,剩下的div的空白

所以设置高度时最好line-height都带上。

方法二:使用:after伪元素(ie7及以下不支持伪类)

<ul>
<li>密码</li>
<li>用户名</li>
<li>身份证号</li>
</ul>
ul li{
width: 120px;
height: 40px;
line-height: 40px;
text-align: justify;
}
ul li:after{
content: '';
display: inline-block;
width: 100%;
}

 效果:

(1) 和上面的效果一样,空白部分也可以通过设置height和line-height来避免。

(2) 这个方法的好处就是少了占位标签。

方法三:使用 text-align-last:justify 属性

<ul>
<li>密码</li>
<li>用户名</li>
<li>身份证号</li>
</ul>
ul li{
width: 120px;
text-align: justify;
text-align-last:justify
}

效果:

(1)这个方法使用了 text-align-last:justify 这个属性,这样就只需两个属性就能达到两端对齐的效果

(2) text-align-last:justify 这个属性的兼容性不好。

(3)这样的结果在谷歌、火狐浏览器上能正确显示,但是在其它浏览器中却没效果。因为大部分浏览器要使得两端对齐生效,需在文本间插入空白,如空格。

所以,才有了兼容多种浏览器的终极兼容方法

<ul>
<li>密 码</li>
<li>用 户 名</li>
<li>身 份 证 号</li>
</ul>
ul li{
width: 120px;
height: 40px;
line-height: 40px;
text-align: justify;
text-align-last:justify
}
ul li:after{
content: '';
display: inline-block;
width: 100%;
}

(1)注意每个单词之间都有空格,这个很重要,很重要,很重要,而且只需一个空格就行,多个空格也不影响。如果没有这个空格,兼容性很差,基本只有谷歌和火狐支持。

(2)这个方法兼容ie7及以上,还有其它的浏览器。ie6没测,所以不敢下结论。

(3)多行内容也可以使用同样的方法,只是最后一行如果不去加空格,还是不会处理,只是默认的往左对齐。

(4)li 这个标签要设置 list-style: none; 去掉默认属性,否则当只有一行的时候,会出现并没有左右两端对齐,而是类似右对齐的bug。。。

(5)如果没有写height和line-height,出现占位符after占据得有位置,或者内容有点错位,可以把after加上一个 position:absolute 绝对定位的样式再试一下。

使用text-align:justify,让内容两端对齐,兼容IE及主流浏览器的方法的更多相关文章

  1. CSS _text-align:justify;实现两端对齐

    参考:https://segmentfault.com/q/1010000007136263 法一:text-align-last:justify: html <div> <p cl ...

  2. text-align:justify实现文本两端对齐布局,兼容IE

    要想更好的理解 css, 尤其是 IE 下对 css 的渲染,haslayout 是一个非常有必要彻底弄清楚的概念.大多 IE下的显示错误,就是源于 haslayout. 什么是 haslayout ...

  3. table表单中的td内容两端对齐

  4. css中文字两端对齐兼容IE

    text-align: justify; text-justify:inter-ideograph;

  5. css text-align文字两端对齐

    text-align:start | end | left | right | center | justify | match-parent | justify-all justify: 内容两端对 ...

  6. 让盒子两端对齐小技巧 => inline-block

    今天在项目中碰到了设计盒子两端对齐的栗子,咱们用inline-block方法轻松的解决了,下面是我的经验: 原理: 利用文字text-align:justify; 操纵inline-block盒子,能 ...

  7. 【原】css实现两端对齐的3种方法

    说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐.右对齐的方式来对齐页面 ...

  8. css实现两端对齐的3种方法

    两端对齐在移动端非常见,说到两端对齐,大家并不陌生,在word.powerpoint.outlook等界面导航处,其实都有一个两端对齐(分散对齐)的按钮,平时使用的也不多,我们更习惯与左对齐.居中对齐 ...

  9. Zclip:复制页面内容到剪贴板兼容各浏览器

    WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮,只需要轻轻一点这个复制按钮,内容将会被复制, ...

随机推荐

  1. hdu-1176(dp)

    解题思路:用dp做的,dp[i][j]表示在i时刻,j点的最大馅饼.a[i][j]表示在i这个时刻j点同时掉落的馅饼: 每个点除了0和10之外,都有三种状态: 1.没有移动,这样值就为dp[i][j] ...

  2. [TaskList] 省选前板子补完计划

    省选前本子补完计划 [ ] 带权并查集 [ ] 树上莫队 - UOJ58 [WC2013]糖果公园 loj2485「CEOI2017」Chase

  3. Nginx 减少磁盘读写次数

    L:133

  4. POJ1442-查询第K大-Treap模板题

    模板题,以后要学splay,大概看一下treap就好了. #include <cstdio> #include <algorithm> #include <cstring ...

  5. MT【289】含参绝对值的最大值之三

    已知$a>0$,函数$f(x)=e^x+3ax^2-2e x-a+1$,(1)若$f(x)$在$[0,1]$上单调递减,求$a$的取值范围.(2)$|f(x)|\le1$对任意$x\in[0,1 ...

  6. 【NOI2002】

    A 银河英雄传说 带权并查集 B 贪吃的九头龙 树形dp f[x][j][0] = min(f[x][j][0], min(f[vv][t][0] + tmp[j - t][0] + ww * (m ...

  7. mysql 提示表损坏处理方法

     公司网站有些页面打不开,第二次出现这个情况 重启数据库,提示有一个表crashed:这是第二次出现这个问题,这个时候,进入数据库文件目录输入:myisamchk -r "Table_Nam ...

  8. Hdoj 1905.Pseudoprime numbers 题解

    Problem Description Fermat's theorem states that for any prime number p and for any integer a > 1 ...

  9. 【BZOJ4408】[FJOI2016]神秘数(主席树)

    [BZOJ4408][FJOI2016]神秘数(主席树) 题面 BZOJ 洛谷 题解 考虑只有一次询问. 我们把所有数排个序,假设当前可以表示出的最大数是\(x\). 起始\(x=0\). 依次考虑接 ...

  10. [JLOI2014]聪明的燕姿(搜索)

    城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S, ...