【css】text-align:justify实现两端对齐

text-align

text-align 作用在 块级元素上,用来控制 块级元素 里 内联元素 的水平对齐方式。
4个属性值。

  • left
    内联元素左侧 与 块级元素左侧 对齐,即左对齐
  • right
    内联元素右侧 与 块级元素右侧对齐,即右对齐
  • center
    内联元素中心 与 块级元素中心 对齐,即居中对齐
  • justify
    内联元素左侧与块级元素左侧对齐,且内联元素右侧与块级元素右侧对齐, 即两端对齐

来直观地感受下。

    .box{
      width:200px;height:100px;
      border:1px solid lightskyblue
    }
<body>
  <div class="box">hello world</div>
</body>

在这里插入图片描述

问题

left|right|center时,OK;但justify时,文本“hello world”没有两端对齐。
我们让 文本长一点,“hello world hello world hello world hello world”。
在这里插入图片描述
这时 文本分两行了,且第一行的文本两端对齐了,但最后一行的文本没有两端对齐。

解决方法

既然最后一行没有两端对齐,那我们就想办法让最后一行对齐。
有两种解决方法。

第一种 text-align-last
    .box{
      width:200px;height:100px;
      border:1px solid lightskyblue;

      text-align:justify;
      text-align-last:justify;
    }

在这里插入图片描述
在这里插入图片描述
text-align-last 也作用在 块级元素上,用来控制 块级元素内 最后一行 的对齐方式。
最后一行也是内联元素,像 文本、span 等 display 为 inline | inline-block 的元素。
7个属性值。

  • left
    最后一行左侧 与 内容盒子左侧 对齐,即左对齐
  • right
    最后一行右侧 与 内容盒子右侧 对齐,即右对齐
  • center
    最后一行中心 与 内容盒子中心 对齐,即居中对齐
  • justify
    最后一行左侧 与 内容盒子左侧对齐,最后一行右侧 与 内容盒子右侧对齐,即两端对齐
  • auto
    text-align值为left,此时text-align-last:auto相当于 text-align-last:left
    text-align值为right,此时text-align-last:auto相当于 text-align-last:right
    text-align值为center,此时text-align-last:auto相当于 text-align-last:center
    text-align值为justify,text-align-last这会儿突然就傲娇了,不随text-align了。此时,text-align-last:auto相当于 text-align-last:start
  • start
    direction值为ltr,此时text-align-last:start相当于text-align-last:left,左对齐;
    direction值为rtl,此时text-align-last:start相当于text-align-last:right,右对齐;
  • end
    direction值为ltr,此时text-align-last:end相当于text-align-last:right,右对齐;
    direction值为rtl,此时text-align-last:end相当于text-align-last:left,左对齐;

我们重新回到问题。
此时的 text-align值为justify,text-align-last值为auto,direction值为ltr,所以最终的效果是,最后一行左对齐,即最后的文本左侧 与 内容盒子左侧对齐,没毛病。
蓝色部分就是 内容盒子
在这里插入图片描述

第二种 使用伪元素

让伪元素成为最后一行。

    .box{
      width:200px;height:100px;
      border:1px solid lightskyblue;
      text-align:justify;
    }
    .box:after{
      content:"";
      display:inline-block;
      width:100%;
    }

在这里插入图片描述

实例:两端对齐 等间隔
实例1
  .container{
    list-style: none;
    margin:0;
    padding:0;
    width:300px;
    height:100px;
    border:1px solid lightskyblue;
    text-align:justify;
    text-align-last:justify;
  }
  .box{
    width:50px;
    height:inherit;
    background-color:lightblue;
    display:inline-block;
  }
<body>
<ul class="container">
  <li class="box"></li>
  <li class="box"></li>
  <li class="box"></li>
  <li class="box"></li>
  <li class="box"></li>
</ul>
</body>

在这里插入图片描述

实例2
  .container{
    list-style: none;
    margin:0;padding:0;
    width:600px;
    border:5px solid rgb(241, 241, 217);
    background-color:#fff;
    text-align:justify;
    text-align-last:justify;
  }
  .content{
    display:inline-block;
    text-align:center;
    width:180px;
  }
  .note{
    text-align-last:center;
  }
<body>
  <ul class="container">
    <li class="content">
      <img src="./imgs/路飞.jpg" alt="路飞">
      <div class="note">路飞</div>
    </li>
    <li class="content">
      <img src="./imgs/海贼王.jpg" alt="海贼王">
      <div class="note">海贼王</div>
    </li>    
    <li class="content">
      <img src="./imgs/船长.jpg" alt="船长">
      <div class="note">船长</div>
    </li>   
  </ul>
</body>

在这里插入图片描述

问题
<body>
  <ul class="container">
    <li class="content">
      <img src="./imgs/路飞.jpg" alt="路飞">
      <div class="note">路飞</div>
    </li>
    <li class="content">
      <img src="./imgs/海贼王.jpg" alt="海贼王">
      <div class="note">海贼王</div>
    </li>    
    <li class="content">
      <img src="./imgs/船长.jpg" alt="船长">
      <div class="note">船长</div>
    </li>  
    <li class="content">
      <img src="./imgs/海贼王.jpg" alt="海贼王">
      <div class="note">海贼王</div>
    </li>    
    <li class="content">
      <img src="./imgs/船长.jpg" alt="船长">
      <div class="note">船长</div>
    </li> 
  </ul>
</body>

在这里插入图片描述

解决方法

一行有3列,所以使用3个空的标签来占位,<li class="content"></li>

  <ul class="container">
    <li class="content">
      <img src="./imgs/路飞.jpg" alt="路飞">
      <div class="note">路飞</div>
    </li>
    <li class="content">
      <img src="./imgs/海贼王.jpg" alt="海贼王">
      <div class="note">海贼王</div>
    </li>    
    <li class="content">
      <img src="./imgs/船长.jpg" alt="船长">
      <div class="note">船长</div>
    </li>  
    <li class="content">
      <img src="./imgs/海贼王.jpg" alt="海贼王">
      <div class="note">海贼王</div>
    </li>    
    <li class="content">
      <img src="./imgs/船长.jpg" alt="船长">
      <div class="note">船长</div>
    </li> 
    <li class="content"></li>
    <li class="content"></li>
    <li class="content"></li>
  </ul>

在这里插入图片描述
多出的高度是 幽灵节点捣的鬼!
ul.containerfont-size设置为0li.contentfont-size设置为16px即可。
综上,css样式如下:

  .container{
    list-style: none;
    margin:0;padding:0;
    width:600px;
    border:5px solid rgb(241, 241, 217);
    background-color:#fff;
    text-align:justify;
    text-align-last:justify;
    font-size:0;
  }
  .content{
    display:inline-block;
    text-align:center;
    width:180px;
    font-size:16px;
  }
  .note{
    text-align-last:center;
  }
参考文章

text-align
text-align-last

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值