视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
处理inline元素之间换行产生的空白_html/css
2020-11-27 16:36:02 责编:小采
文档


图片来自网络

inline, inline-block元素之间的换行符会造成类似空格的空白。不知道你遇到过没?比如以下代码:

12

这种问题对布局影响不大,容易被忽略。但是某些极端情况就会把这个问题放大。例如以下代码:

 
  • Item content
  • Item content
  • Item content
  • 这样一行的结构,精确的分配了行内元素的宽度,而换行产生的空白的影响被放大了。如何解决这种问题呢?

    1. 选用浮动的block代替inline-block, 因为曾经要处理IE6对inline-block的兼容性,养成了不适用inline-block的习惯,所以第一个想到这种方案。
    2. 编码时不使用换行,例如以下代码:
    3. Item content
    4. Item content
    5. Item content
    6. 这种方法没有解决问题,而是规避了问题。这是最简单而不会带来任何影响的方法,但是之后其他人很容易排版你的代码从而导致问题,明显这种方法的可维护性太低。
    7. 将父级font-size置0,行内元素再恢复字体大小。这种方式是本人最喜欢的,不是因为它貌似"高大上",而是因为它揭开了产生问题的原理。
    8. 利用注释进行代码排版,例如以下代码:
       
    9. Item content
    10. Item content
    11. Item content
    12. 使用返回标签,类似上一种办法,代码如下:
       
    13. Item content
    14. Item content
    15. Item content
    16. 利用css 否定边距,例如以下代码:
      .inline-block-list li { margin-left: -4px;}
      这种方法是最差的,因为这很有可能为了解决问题而增加了新问题的风险,同时降低了强壮性和可维护性。解决方案都经过了测试,建议采用第一种和第三种。

    本文通过Segmentfault,参考了文章Remove Whitespace Between Inline-Block Elements.

    下载本文
    显示全文
    专题