博客
关于我
li与li之间的空白
阅读量:352 次
发布时间:2019-03-04

本文共 1597 字,大约阅读时间需要 5 分钟。

li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?

有时,在写页面的时候,会需要将<li>这个块状元素横排显示,此时就需要将display属性设置为inline-block,此时问题出现了,在两个<li>元素之间会出现大约8px左右的空白间隙,下面举例说明:

demo

li标签空白测试

页面效果如图所示

这里写图片描述

这时候肯定有小伙伴会说,可以直接设置float:left;浮动不就可以了么?其实不然,有些容器是不能设置浮动,如左右切换的焦点图等,总之我们的前提是需要将<li>标签设置为display:inline-block;

引起这种空白间隔的原因:

浏览器的默认行为是把inline元素间的空白字符(空格换行tab)渲染成一个空格,也就是我们上面的代码<li>换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度。

解决方案:

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

li标签空白测试

再刷新页面看就没有空白了,就是这么神奇~

方法二:我们为了代码美观以及方便修改,很多时候我们不可能将<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;}

总结

浏览器会把inline元素间的空白字符(空格、换行、Tab等)渲染成一个空格。而为了美观。我们通常是一个li放在一行,这导致li换行后产生换行字符,它变成一个空格,占用了一个字符的宽度。

解决办法:

(1)为
  • 设置float:left。不足:有些容器是不能设置浮动,如左右切换的焦点图等。(2)将所有
  • 写在同一行。不足:代码不美观。(3)将
      内的字符尺寸直接设为0,即font-size:0。不足:
        中的其他字符尺寸也被设为0,需要额外重新设定其他字符尺寸,且在Safari浏览器依然会出现空白间隔。(4)消除
          的字符间隔letter-spacing:-8px,不足:这也设置了
        • 内的字符间隔,因此需要将
        • 内的字符间隔设为默认letter-spacing:normal。 并且如果ul中存在文本,也会由于设置了leeter-space而被挤压
  • letter-space:设置字符间距,正数增大字符间距,负数减小字符间距,过于小会导致字符重叠在一起

    你可能感兴趣的文章
    Netty工作笔记0034---Netty架构设计--线程模型
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0057---Netty群聊系统服务端
    查看>>
    Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
    查看>>
    Netty工作笔记0063---WebSocket长连接开发2
    查看>>
    Netty工作笔记0068---Protobuf机制简述
    查看>>
    Netty工作笔记0070---Protobuf使用案例Codec使用
    查看>>
    Netty工作笔记0072---Protobuf内容小结
    查看>>
    Netty工作笔记0074---handler链调用机制实例1
    查看>>
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0081---编解码器和处理器链梳理
    查看>>
    Netty工作笔记0083---通过自定义协议解决粘包拆包问题1
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty工作笔记0085---TCP粘包拆包内容梳理
    查看>>
    Netty常用组件一
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty心跳检测
    查看>>
    Netty心跳检测机制
    查看>>
    netty既做服务端又做客户端_网易新闻客户端广告怎么做
    查看>>