CSS (三)display:inline-block的缝隙和错位问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012832088/article/details/82217158

display:inline-block的缝隙和错位问题

一、 缝隙问题

这里写图片描述

<style type="text/css">
   *{
     border: 0;
     padding: 0;
     margin: 0;
   }
   ul li{
     display: inline-block;
     border: 1px solid #000000;
   }
</style>
<body>
    <ul>
      <li>1111</li>
      <li>2222</li>
      <li>3333</li>
      <li>4444</li>
      <li>5555</li>
    </ul>
  </body>

这每个li之间的间隙是符合W3C标准规范的表现,是元素书写的时候换行产生的空白符造成的问题。但不满足业务需求。完善这种的缝隙有如下几种方法:

一、书写的时候,省略空格

这里写图片描述

 <body>
    <ul>
      <li>1111</li><li>2222</li><li>3333</li><li>4444</li><li>5555</li>
    </ul>
  </body>

二、第一种方法,元素少的情况下还可以满足,但不符合实际业务开发。第二种方法就是设置父元素的font-size:0px,然后再设置各个子元素的font-size数值。

ul{
font-size: 0;
}
ul li{
  display: inline-block;
  border: 1px solid #000000;
  font-size: 14px;
}
 <body>
    <ul>
        <li>1111</li>
         <li>2222</li>
         <li>3333</li>
         <li>4444</li>
         <li>5555</li>
    </ul>
</body>

排列错位问题

这里写图片描述

<style type="text/css">
    .box{
      border: 4px solid #000000;
      width: 200px;
      height: 200px;
      display: inline-block;
    }
    .itemSmall_1{
      background-color: chartreuse;
      width: 40px;
      height: 40px;
      border: 2px solid #000000;
      /* float: left; */
    }
    .itemSmall_2{
      background-color: chartreuse;
      width: 40px;
      height: 40px;
      border: 2px solid #000000;
      float: left;
    }
    .itemBig1{
      background-color: blue;
      width: 150px;
      height: 150px;
      border: 2px solid #000000;
    }
    .itemBig2{
      background-color: blue;
      width: 150px;
      height: 150px;
      border: 2px solid #000000;
      float: left;
    }
  </style>
   <body>
    <div class="box">
      <div class="itemSmall_1">
      </div>
      <div class="itemBig1">
      </div>
    </div>

    <div class="box">
      <div class="itemSmall_2">
      </div>
      行内元素行内元素行内元素行内元素行内元素行内元素行内元素行内元素行内元素行内元素行内元素
    </div>
  </body>

原因,可能是快元素和行元素的baseline不一样导致上下不齐,所以解决的办法就是设置统一的vertical-align属性。基于同一个baseline值。

.box{
    border: 4px solid #000000;
     width: 200px;
     height: 200px;
     display: inline-block;
     vertical-align: top;
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012832088/article/details/82217158