对于横向布局li之间存在间隙这个问题,简单解析以及几种修改方式~

首先,这是一个初级程序员和初级简书使用者的第一篇小文章,如果有什么错误请指正,蟹蟹~

遇到的问题是,ul下面的li在横向排列的时候出现4px(或8px)的空隙

首先,我是如何遇到这个问题的呢?在一般的时候我不是太会注意到这儿的li之间会有4px得到缝隙,直到我在用js代码动态添加ul,li代码的时候发现布局发生了变化,初学者一定会遇到这样的情况,那么这到底是什么样的情况呢?其实是浏览器解析li那块代码的时候将<li></li>结尾的回车当成了一个空白字符。

先上一段代码

//最基本的ul和li结构,通常我们会这么写
<ul>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
</ul>

在这个时候,我们有需求要让li横排显示,那么设置li的display:inline-block;属性,如果是纯粹的块级元素,那么不会产生干扰,但是行内元素有空格就会有影响了,结果就会产生这个问题。

解决方法来了,这是我看到比较简单易懂的方法:

1.通过代码书写去解决这个问题:
第一种:

//遇到这个问题最简单粗暴的解决方式,但是如果每个li内的代码比较多那就比较糟了,别说维护了,就是自己写也会乱套
<ul>
    <li>aaa</li><li>bbb</li><li>ccc</li>
</ul>

第二种:

//这个就感觉有点逼格了,li标签结尾的 > 可以放在下一行,这样就相当于li标签是连起来没有空白字符,也就不会出现空隙
<ul>
    <li>aaa</li
    ><li>bbb</li
    ><li>ccc</li>
</ul>

第三种:

//这一种看起来就比较反人类了,但是标签的书写不会分离,减少代码错误
<ul>
    <li>
     aaa</li><li>
     bbb</li><li>
     ccc</li>
</ul>

注意:html5的便签不闭合写法也可以解决这个问题,但是我个人是不推荐的,即使标准更改之后支持这样写法,但是如果doctype是xhtml就又不好用了,还是严谨一点的写法比较稳妥!

2.通过css样式上去解决这个问题:
第一种:float:left;

//这个其实是将 css 样式写回去了,因为我们使用 inline-block 实质上就是替换掉使用 float:left;
ul{float:left;}

第二种:(margin 设置负值)

//利用了盒模型
ul{margin:-4px;}

第三种:ul的font-size:0px;

//将字体的大小在li的样式上设置,ul上字体字号设置为0
//当然这种方法有一些缺陷,比如在safari上就不好用,其他的都是好用的
ul{font-size:0;}
li{font-size:12px;}

首先绝对是不赞成第二种方式,即使原理很简单,盒模型嘛,不选择的原因有两个:
第一个:margin:-npx;n值是不确定的,因为如果你更改了ul的字号,这个间距的大小是会变的!!!
第二个:只会让你代码的水准更加下降,没有腔调阿喂,没有逼格阿喂!

3.全兼容写法
第一个:jquery方法,百度一下吧。
第二个:css的第三种方法

ul{
   letter-spacing:-npx;//兼容safari
   font-size:0px;//兼容chrome
}

选择哪种看自己,不过多学一点也是对自己的提高!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,814评论 1 92
  • 不会用代码框,所以看着有些乱套,,,,html部分 <!DOCTYPE html> 迅雷看看 ...
    这就是个帅气的名字阅读 1,564评论 0 0
  • 一 外部式css样式 (也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css...
    KunMitnic阅读 965评论 0 1
  • 一哥们看稍微有点暴露的照片就会勃起,我们说他硬点太低。
    f56be8bf4817阅读 254评论 0 0
  • 7月18日:犯懒,什么也没留下
    安星阅读 107评论 0 0