Home > Web Front-end > HTML Tutorial > 处理inline元素之间换行产生的空白_html/css_WEB-ITnose

处理inline元素之间换行产生的空白_html/css_WEB-ITnose

WBOY
Release: 2016-06-21 09:01:05
Original
1210 people have browsed it

图片来自网络

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

<a>1</a><a>2</a>
Copy after login

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

<ul>  <li>Item content</li>  <li>Item content</li>  <li>Item content</li></ul><style>li{  width:33.3%;  display:inline-block;  background:#abc; }</style>
Copy after login

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

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

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template