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

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

作者: 祁稷 | 来源:发表于2016-11-05 18:57 被阅读0次

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

    遇到的问题是,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
    }
    

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/okkguttx.html