Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[css] 21. li 与 li 之间有看不见的空白间隔是什么原因引起的?有什么解决办法? #90

Open
qiilee opened this issue Sep 29, 2019 · 0 comments
Labels

Comments

@qiilee
Copy link
Member

qiilee commented Sep 29, 2019

答案:浏览器的默认行为是把 inline 元素间的空白字符(空格换行 tab)渲染成一个空格,也就是我们上面的代码

  • 换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度。

    解决方案:

    方法一:既然是因为<li>换行导致的,那就可以将<li>代码全部写在一排,如下

    <div class="wrap">
      <h3>li标签空白测试</h3>
      <ul>
        <li class="part1"></li>
        <li class="part2"></li>
        <li class="part3"></li>
        <li class="part4"></li>
      </ul>
    </div>

    方法二:我们为了代码美观以及方便修改,很多时候我们不可能将<li>全部写在一排,那怎么办?既然是空格占一个字符的宽度,那我们索性就将<ul>内的字符尺寸直接设为 0,将下面样式放入样式表,问题解决。

    .wrap ul {
      font-size: 0px;
    }

    但随着而来的就是<ul>中的其他文字就不见了,因为其尺寸被设为 0px 了,我们只好将他们重新设定字符尺寸。
    方法三:本来以为方法二能够完全解决问题,但经测试,将 li 父级标签字符设置为 0 在 Safari 浏览器依然出现间隔空白;既然设置字符大小为 0 不行,那咱就将间隔消除了,将下面代码替换方法二的代码,目前测试完美解决。同样随来而来的问题是 li 内的字符间隔也被设置了,我们需要将 li 内的字符间隔设为默认。

    .wrap ul {
      letter-spacing: -5px;
    }

    之后记得设置 li 内字符间隔

    .wrap ul li {
      letter-spacing: normal;
    }
  • @qiilee qiilee added the CSS label Sep 29, 2019
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    Projects
    None yet
    Development

    No branches or pull requests

    1 participant