Blogger Information
Blog 100
fans 8
comment 2
visits 149896
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
css设置了 display:inline-block 的块元素之间空白间隙处理办法
lilove的博客
Original
1882 people have browsed it

我们在html页面样式表中使用:

display:inline-block;

案例代码:

  • css结构:
  1. * {
  2. margin: 0;
  3. padding: 0;
  4. box-sizing: border-box;
  5. }
  6. .container {
  7. width: 500px;
  8. margin: 100px auto;
  9. border: 1px solid black;
  10. }
  11. .tabs {
  12. width: 300px;
  13. font-size: large;
  14. }
  15. .tabs>p {
  16. width: 80px;
  17. display: inline-block;
  18. background-color: lightblue;
  19. text-align: center;
  20. }
  • html结构:
  1. <div class="container">
  2. <div class="tabs">
  3. <p>选项卡1</p>
  4. <p>选项卡2</p>
  5. <p>选项卡3</p>
  6. </div>
  7. </div>
  • 发现网页上明明没有设置间隙, .tabs 下的 p 之间出现了间隙:

  • 这是为什么呢?

  • 原来,html解析 inline-block 元素的时候会将元素之间的 空格、换行等white-space (默认是normal,合并空白符)的方式合并成一个空白符,形成了随字体大小变化的间隙。

那么如何解决这个问题呢?

1. 使用空白注释(此方法降低html代码可读性不推荐):

  • 在有间隙的标签之间加上 <--...-->
  1. <div class="container">
  2. <div class="tabs"><!--
  3. --><p>选项卡1</p><!--
  4. --><p>选项卡2</p><!--
  5. --><p>选项卡3</p>
  6. </div>
  • 效果:


2.在父元素上设置:font-size:0; 后,再单独设置有间隙的子元素字体大小:

  1. .tabs {
  2. width: 300px;
  3. font-size: 0;
  4. }
  5. .tabs>p {
  6. width: 80px;
  7. display: inline-block;
  8. background-color: lightblue;
  9. text-align: center;
  10. font-size: 16px;
  11. }
  • 效果:


3.设置 margin 负值抵消空白区域(不推荐,掌握不好空隙宽度)

4.有间隙的元素设置 float(浮动) (极不推荐,会破坏文档流,如果使用浮动也没必要设置inline-block了)

5.设置父元素的 letter-spacingword-spacing 为负值,再设置子元素为0

  1. .tabs {
  2. width: 300px;
  3. /* padding: 10px; */
  4. letter-spacing: -0.5em;
  5. word-spacing: -0.5em;
  6. }
  7. .tabs>p {
  8. width: 80px;
  9. display: inline-block;
  10. background-color: lightblue;
  11. text-align: center;
  12. letter-spacing: 0;
  13. word-spacing: 0;
  14. }
  • 效果

以上就是消除 inline-block 块元素之间间隙的方法。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post