• 关于display:inline-block布局导致错位问题分析


    移动端设计稿需求是这样的,如下图:

    未知的几个头像从左至右并行居中排列。

    一般可能直接使用float,但是设计图要求头像排列始终是居中的,于是想到要让它们成为行内元素,然后可使用的方法有flex box,inline-block;

    因为是在移动端,于是使用flex box:

    .user-list {
    margin: 20px auto;
    display:-webkit-box;

    -webkit-pack:center;
    }

    .user-list li {
    46px;
    height: 46px;
    margin: 0 5px;
    border-radius: 50%;
    overflow: hidden;
    }

    .user-list li img {
       100%;
    }

    <ul class="user-list">
                    <li><img src="images/u137.png" /></li>
                    <li><img src="images/user2.jpg" /></li>
                    <li><img src="images/u137.png" /></li>
                    <li><img src="images/user.jpg" /></li>
                    <li><img src="images/u137.png" /></li>
    </ul>

    嗯嗯,一切看起来很完美,居中了,可以放下好几个。但是,如果要放下10个,擦,没法换行,悲剧了。

    于是使用display:inline-block,大家都知道块级元素和行内元素的区别,inline-block就是让你两者兼顾。

    .user-list {
            margin: 20px auto;
            text-align: center;
        }
        
        .user-list li {
            display: inline-block;
             46px;
            height: 46px;
            margin: 0 5px;
            border-radius: 50%;
            overflow: hidden;
        }

      .user-list li img {
         100%;
      }

     

    于是出现了下面这种情况:

    在IOS上是这样的:

    在chrome:

    你妹,到底几个意思,上上下下的....

    这些问题在手机上出现的,测试的就找到我问什么情况,我说在PC上浏览器都是好的啊,我估计是inline-block导致的,但是试了半天一切正常。最后估摸着我写的demo里面各个图片是一样大小的,会不会真是数据头像不一样大?

    然后换了上面的图片,在PC上复现了问题。既然能在PC上复现,那问题就好解决多了。

    导致人问题分析如下:

    1、display:inline-block,是基于baseline对齐的,大小不一会导致上下不齐,所以设置的时候最好设置vertical-align属性。

    2、图片的宽度设置是100%自适应的,长宽高不一致会导致头像显示不完整,如上面,成半圆了,所以设置成max-height:100%;

    搞定!

    .user-list {
            margin: 20px auto;
            text-align: center;
        }
        
        .user-list li {
            display: inline-block;
             46px;
            height: 46px;
            margin: 0 5px;
            border-radius: 50%;
            overflow: hidden;
            vertical-align: top;
        }
        
        .user-list li img {
            max-height: 100%;
        }

     对于display:inline-block的知识可以参考:http://ued.taobao.org/blog/2012/08/inline-block/

  • 相关阅读:
    _MSC_VER
    git之撤销修改
    vi/vim如何添加或删除多行注释
    C++ 读取文件数据和输出数据到文件
    git上传本地单独修改的文件
    Git学习笔记
    C++中类的声明
    linux中ldconfig的使用介绍
    #define 和 typedef 中的##
    find、xargs、grep基本用法
  • 原文地址:https://www.cnblogs.com/hutuzhu/p/4533270.html
Copyright © 2020-2023  润新知