`

css3总结之: text-align: justify (两端对齐)

    博客分类:
  • CSS
CSS 
阅读更多

        大家都知道 text-align 属性是规定元素中的文本的水平对齐方式,最常用的值是left、right、center,那么justify是什么呢?

  在W3C上是这样介绍的:

    justify 可以使文本的两端都对齐在两端对齐文本中,文本行的左右两端都放在父元素的内边界上。然后,调整单词和字母间的间隔,使各行的长度恰好相等(但会带来一些问题)

        先举个简单例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .demo{
            width: 70px;
            /*text-align: justify;*/
        }
    </style>
</head>
<body>
    <div class = 'demo'>
        <p>飞洒发fd达fasdf省sdf份发f送fdfd大df夫df萨</p>
    </div>
</body>
</html>

上面例子显示正常

 

下面我们来说下text-algin:justify属性带来的问题

1.【单行设置text-align:justify不起作用】

先来看个例子:

<p class="center">我是两端对齐文字端对齐文字</p>
.center{
  text-align:justify;
}

 我们发现,段落单行时设置text-align:justify属性无效,查阅后得知(原因如下):

 

    text-align不会处理被打断的行和最后一行,因为这里的文字只占了一行,也是最后一行了,所以text-align设置为justify不会产生任何效果

解决方法:使用text-align-last,并将其设置为justify。不过不幸的是,text-align-last不是所有浏览器支持。

所以对于不支持text-align-last的,可以在最后一行人工生成两行文本,然后把第二行隐藏了,那么我们要现实的第一行自然就可以实现两端对齐了

 

       这个问题是我在项目中碰到的,由于我发现这个问题不可行,于是各种&ensp;&emsp;&nbsp;各种用。但是发现在safari中微软雅黑不识别&emsp;等,于是只能找解决办法。最终在开心网的源代码中找到了解决办法。具体想法是:

  首先既然单行不行,那么就用多行。但是怎么用单行呢?——(1)用after或者(2)添加标签,就是在最后一行人工生成两行文本,然后把第二行隐藏了,那么我们要现实的第一行自然就可以实现两端对齐了

       方案一:(原理与方案二相同,隐藏第2行;但是需要将span设置为float: left,:after为inline-block)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        span{
            width: 100px;
            text-align: justify;
            float: left;
        }
        span:after{
            content:'.';
            width: 100%;
            display: inline-block;
            overflow: hidden;
            height: 0;
        }
        input{
            width: 100px;
        }
    </style>
</head>
<body>
    <div class="demo">
        <span>昵称</span>:<input type="text" style = 'width: 100px'><br><br>
        <span>电子邮箱</span>:<input type="email" style = 'width: 100px;'>
    </div>
</body>
</html>

      方案二:(添加标签,原理隐藏第2行)

<p class="center">我是两端对齐文字端对齐文字<span></span></p>
.center{
  text-align:justify;
}
span{
  display:inline-block;
  width:100%;
  height: 0;
  margin: 0;
}

 

 

 

2.【IE兼容问题】

text-align:justify可以使文字两端对齐,但IE下不正常

方案:

ie兼容属性text-justify,给div加上text-justify:inter-ideograph; 在ie下效果就正常了,text-justify只在ie下有用,而且必须和text-align:justify一起使用才有效

 

3.【应用举例】

如果这个方法排版会是怎样的呢?

<ul class="justify_list">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
<style type="text/css">
    .justify_list{text-align: justify;text-justify:distribute-all-lines;width: 600px;}
    li{width:100px;    height:100px;background-color: #0086b3;    
       display: inline-block; list-style:none; }
</style>

 效果:第二行显示错乱

 

        经过查询才知道原来是text-align:justify 不处理块内的最后一行文本(包括块内仅有一行文本的情况,这时既是第一行也是最后一行)

既然如此,解决方法就简单了:

.justify_list:after {width: 100%;height: 0;margin: 0;display: inline-block;
                     overflow: hidden;content: '';}

       总体来说实现得还不错。在排版的时候不需要计算每个列表元素间的margin间距,比用float的时候省事很多。

 

 

4.【好处】

简单方便,只要一个简单的text-align:justify声明,里面的元素就自动等间距两端对齐布局啦!根本无需计算每个列表元素间的margin间距,更不用去修改父容器的宽度

 

 

 

 

 

【总结】

①text-align一行文本不进行处理,还有就是强制换行的也不处理

 

.

分享到:
评论

相关推荐

    使用text-align:justify实现两端对齐一例

    本文主要讲述了使用CSS属性text-align:justify实现两端对齐的方法,并讨论了不同浏览器对中文和英文的理解和处理方式。 一、text-align:justify的使用 text-align:justify是CSS中的一个属性,它可以使文本在一行中...

    text-algin:justify实现文本两端对齐方法小结

    text-align:justify与text-align-last:justify 1.text-align MDN中这样介绍到:“text-align CSS属性定义行内内容...所以就需要控制最后一行文本对齐方式的CSS属性:text-align-last。 2.text-align-last text-align-l

    text-align:justify实现文本两端对齐 兼容IE

    对于text-align 我们再熟悉不过了,可是它有个justify属性,平时很少用到,就鲜为人知了。justify是一种文本靠两边布局方式,一般应用于书刊杂志排版;合理运用text-align:justify 有时会省去很多开发的时间。 要想...

    CSS教程:水平对齐(text-align)

    语法:text-align:left|right|center|justify 说明:设定元素内文本的水平对齐方式。 参数:left:左对齐;right:右对齐;center:居中;justify:两端对齐 初始值:跟浏览器的设置有关 继承性:可继承 适用于:block...

    实例方式学CSS text-align怎么用

    语法:text-align : left | right | center | justify 说明:设定元素内文本的水平对齐方式。 参数:left : 左对齐;right : 右对齐;center : 居中;justify : 两端对齐 初始值:跟浏览器的设置有关 继承性:可继承...

    使用CSS实现文字的竖排的简单方法

    样式表的文字处理属性中有两个重要的属性:writing-mode和text-align。让我们先看看它们的用法:  1. writing-mode(设置对象书写方向) ... 语法:text-align : left、right、center、justify 参数:left:左对齐 

    css常用代码大全.pdf

    * 对齐:`text-align`,可以取值为 `justify`、`left`、`right` 等,例如 `text-align: justify;` * 缩进:`text-indent`,例如 `text-indent: 20px;` * 垂直对齐:`vertical-align`,可以取值为 `baseline`、`sub`...

    css 文本两端对齐应用实例

    这样我们就要用到 text-align, text-justify样式了。 text-align直接设为justify就行了,text-justify的情况相对比较复杂 IE的取值如下: auto :允许浏览器用户代理确定使用的两端对齐法则 inter-word :通过增加...

    Justify:一款实现inline-block元素两端对齐布局的javascript插件(a javascript plug-in implementation inline-block elements full-justified layout)

    元素均分宽度、两端自适应对齐的布局在移动web项目中的需求还是挺多的,使用inline-block元素,配合text-align:justify,再注意处理好一些细节问题,便可以在现代浏览器上实现两端对齐,但是最后一行的处理却是个...

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

    在 form 表单的前端布局中,我们经常需要将文本框的提示文本两端对齐,例如: 比较粗暴的做法是在需要隔离边距的文本中加标签,然后分别控制每个文字的边距,这种方法比直接加空格或者占位符更精准,我之前也都是...

    vue组件实现文字居中对齐的方法

    上图为公司自营的一个微信商城的某一部分截图,可以看到红框内部分的文字多行与单行是居中对齐的,我们现在要做的就是使用Vue把里边的文字模块制作成一个可以复用的组件。 首先我们先把css部分拿下来  css: .word-...

    css&js&vue.docx

    使用:通过text-align-last:justify设置文本两端对齐。 场景:未知字数中文对齐。 使用:通过flexbox或inline-block的形式横向排列元素,对父元素设置overflow-x:auto 横向滚动查看。 场景:横向滚动列表、元素...

    css入门笔记

    1.css的概述 1.问题 HTML属性修饰有一定局限,是不太便捷 2.css的语法规范 1.使用css样式方式 1.内联样式 行内样式 特点:将css样式定义在HTML标记中 语法: 样式声明:用样式属性和值组成(属性:值;) ...

    css控制字间距和对齐方式及其所用属性介绍

    justify:两端对齐,均匀分布 list-style-type: none 无标记。 disc 默认。标记是实心圆。 circle 标记是空心圆。 square 标记是实心方块。 decimal 标记是数字。 decimal-leading-zero 0开头的数字标记。(01, 02...

    desvendando-css-grid:在实践中解散CSS网格

    CSS网格 网格 二维的 将整个页面分为行和列 将元素放置在此分区的任何位置 网格或柔性盒 网格:二维(列和行) Flexbox:一维(或列或行) 一个补充了另一个的工作 检查哪些浏览器尚未接受网格 特性 我们将分为两...

    scss-masterclass:(S)CSS布局大师类:Flexbox&Grid

    (S)CSS布局大师班:Flexbox和网格( ) 弹性盒 弹性方向 证明内容 对齐项目 自我调整 订购 柔性包装 逆转 对齐内容 弹性成长 弯曲收缩 弹性基础 第一规则:Flex容器包装 . parent { display : flex; } ...

    flexbox-cheatsheet:Flexbox属性的快速CSS参考

    CSS Flexbox速查表这些CSS规则位于flex容器(包含要对齐的框的元素)内。 flex容器可以是一个元素: display: flex; 或display: inline-flex; 。 这些属性及其可能的值是最常用的摘要:justify-content:水平flex-...

Global site tag (gtag.js) - Google Analytics