zoukankan      html  css  js  c++  java
  • 移动两端对齐的多种解决方案

    一、display:inline-block/text-align:justify

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

    适合场景:多行需要自动换行,对每行个数不限。

    缺点:不能设置最小的边距。

    1 .main {
    2   text-align: justify;
    3   font-size: 0;
    4 }
    5 .main li {
    6   display: inline-block;
    7   text-align: center;
    8   margin: 10px;
    9 }
     1 <h3>text-align:justify</h3>
     2 <div class="main">
     3   <ul>
     4     <li><div class="img"></div><span>xxx</span></li>
     5     <li><div class="img"></div><span>xxx</span></li>
     6     <li><div class="img"></div><span>xxx</span></li>
     7     <li><div class="img"></div><span>xxx</span></li>
     8     <li><div class="img"></div><span>xxx</span></li>
     9     <li><div class="img"></div><span>xxx</span></li>
    10     <li><div class="img"></div><span>xxx</span></li>
    11     <li><div class="img"></div><span>xxx</span></li>
    12     <li><div class="img"></div><span>xxx</span></li>
    13   </ul>
    14 </div>

    悲剧了,哈哈,最后一行没有两端对齐。继续往下......

    列表(或者文字)要两端对齐的前提就是内容必须超过一行,所以要解决最后一行元素无法两端对齐的文字其实很简单,就是在列表(或文字段)的最后创建一个高度为0的宽度100%的透明的inline-block的标签层就可以了。

    1 .main ul:after {
    2   content: '';
    3   display: inline-block;
    4   width: 100%;
    5   height: 0;
    6   overflow: hidden;
    7 }

    二、flexbox

    既然是移动端,css3肯定也会有对应的解决方案。

    优点:代码最少。

    适合场景:一行的普通场景。

    缺点:不适合多行以及特殊情况。

    .main{
      height:100px;
      width:100%;
      display:-webkit-flex;
      -webkit-box-pack: justify;
      -webkit-justify-content: space-between;  
    }
    <h3> 纯flexbox </h3>
    <div class="main">
      <div class="img a"></div>
      <div class="img b"></div>
      <div class="img c"></div>
      <div class="img d"></div>
    </div>

    这种方法已经能解决大部分问题了。

    三、flexbox + margin

    有一种情形有可能会在需求中,不仅要求图片列表两端对齐,两两之间还要加分隔线,这就需要用到下面这个方法。

    适合场景:两个元素中间需要间隔的情况。

    缺点:多行的情况。

    .main3 {
        display: -webkit-box;
        height: 100px;
        width: 100%;
    }
    
    .box {
        border-right: 1px solid #f43;
        -webkit-box-flex: 1;
        margin-left: 50px;
        width: 0;
        position: relative;
    }
    
    .box2 {
        -webkit-box-flex: 2;
    }
    
    .box3 {
        -webkit-box-flex: 2;
    }
    
    .box4 {
        -webkit-box-flex: 1;
        border-right: 0;
    }
    
    .box .img {
        position: absolute;
        left: 50%;
        margin-left: -50px;
    }
    
    .box1 .img {
        left: 0;
    }
    
    .box4 .img {
        left: 100%;
    }

    四、padding + box-sizing

    欢迎 扫描 加入前端问题讨论公众号 拥有更多前端内容分享

  • 相关阅读:
    反思二
    安装Electron时卡在install.js不动的解决方案
    解决npm 下载速度慢的问题
    覆盖第三方jar包中的某一个类。妙!!
    关于拦截器是用注解方便,还是用配置文件写死方便的总结。
    yapi 启动后,老是自动关闭的问题。
    BaseResponse公共响应类,与我的设计一模一样,靠、ApiResponse
    HashMap 的 7 种遍历方式与性能分析!(强烈推荐)、forEach
    Jackson objectMapper.readValue 方法 详解
    yapi tag的问题,暂时只保留一个tag
  • 原文地址:https://www.cnblogs.com/zhengwenping/p/4215801.html
Copyright © 2011-2022 走看看