V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pertersonvv
V2EX  ›  程序员

为何 ul 和 li 之间有很大空隙? CSS 疑问

  •  
  •   pertersonvv · 2014-12-25 10:38:26 +08:00 · 4650 次点击
    这是一个创建于 3401 天前的主题,其中的信息可能已经有所发展或是发生改变。

    源码位置(请戳我)

    没有设置margin啊,为何会有这么大空隙呢?

    第 1 条附言  ·  2014-12-25 11:30:15 +08:00
    ![](http://img.itc.cn/photo/j3TQRxIePoM)
    ul左侧padding是WebKit默认的,并且不可修改,没看到 ul和li之间的margin是怎么生成的:(
    20 条回复    2014-12-25 14:10:53 +08:00
    emric
        1
    emric  
       2014-12-25 10:42:23 +08:00
    浏览器有默认样式, 善用F12.
    coolzjy
        2
    coolzjy  
       2014-12-25 10:48:56 +08:00   ❤️ 1
    ul, menu, dir {
    display: block;
    list-style-type: disc;
    -webkit-margin-before: 1em;
    -webkit-margin-after: 1em;
    -webkit-margin-start: 0px;
    -webkit-margin-end: 0px;
    -webkit-padding-start: 40px;
    }
    dallaslu
        3
    dallaslu  
       2014-12-25 10:49:12 +08:00
    ul 默认有 margin-top 属性;善用 css reset:

    * { margin: 0; padding: 0}
    seki
        4
    seki  
       2014-12-25 10:51:39 +08:00
    开发者模式看看 computed 里边给你怎么算的
    seki
        5
    seki  
       2014-12-25 10:52:04 +08:00
    口误 -= =
    开发者工具看看 computed 里边给你怎么算的
    sunhk25
        6
    sunhk25  
       2014-12-25 11:01:30 +08:00
    这是因为每个元素都有默认属性的。HTML 4-------
    h4, p,
    blockquote, ul,
    fieldset, form,
    ol, dl, dir,
    menu { margin: 1.12em 0 }
    learnshare
        7
    learnshare  
       2014-12-25 11:01:57 +08:00   ❤️ 2
    首先,你用错了 li 和 ul 两个标签。ul 里边不建议直接放文本,需要放而且只能放 li 标签,然后 li 标签里再放文本。

    然后,ul 有一些默认样式,列举如下:

    Chrome:

    -webkit-margin-before: 1em; // 16px
    -webkit-margin-after: 1em; // 16px
    -webkit-padding-start: 40px;
    line-height: normal; // 21px

    FF:

    margin-top: 1em; // 16px
    margin-bottom: 1em; // 16px
    padding-left: 40px;
    line-height: 20px;

    IE:

    margin-top: 16px;
    margin-bottom: 16px;
    padding-left: 40px;
    line-height: 18.4px;

    第三,建议使用 http://necolas.github.io/normalize.css/latest/test.html 去统一一下浏览器样式,而非 reset。为什么? 看这里 http://www.zhihu.com/question/20094066
    浏览器给元素一些默认属性,是有它的道理的。你直接重置掉,不就跟拿 word 写 txt 一样么。
    kmvan
        8
    kmvan  
       2014-12-25 11:07:48 +08:00
    "也谈 HTML5 语义标签,赶脚是个鸡肋" 上次lz发的贴。。。
    robertlyc
        9
    robertlyc  
       2014-12-25 11:24:21 +08:00
    写个页面都能无病呻吟那么多帖 也是醉了
    pertersonvv
        10
    pertersonvv  
    OP
       2014-12-25 11:25:20 +08:00
    tokki
        11
    tokki  
       2014-12-25 11:27:23 +08:00
    看你一直问我东西
    看下这个项目
    https://github.com/necolas/normalize.css
    pertersonvv
        12
    pertersonvv  
    OP
       2014-12-25 11:33:22 +08:00
    @seki http://img.itc.cn/photo/j3TQRxIePoM 截图,ul左侧padding是WebKit默认的,并且不可修改,没看到 ul和li之间的margin是怎么生成的:(
    pertersonvv
        13
    pertersonvv  
    OP
       2014-12-25 12:10:14 +08:00
    @sunhk25 哪里可以找到各个浏览器中页面元素的默认属性呢?
    a591826944
        14
    a591826944  
       2014-12-25 12:15:59 +08:00
    在 f12 里面 有盒子模型 能看到
    pertersonvv
        15
    pertersonvv  
    OP
       2014-12-25 12:17:18 +08:00
    @a591826944 1em是16像素的意思,之前看到这个了,但是没看懂em,呵呵
    a591826944
        16
    a591826944  
       2014-12-25 12:19:46 +08:00
    1em 不是 16像素的意思。。em是相对值。不对应具体的像素
    sunhk25
        17
    sunhk25  
       2014-12-25 13:07:20 +08:00
    binux
        18
    binux  
       2014-12-25 13:11:20 +08:00
    现在的年轻人。。
    能找本书好好看看吗,别弄个什么视频,示例代码就搞,然后在那猜。
    然后尽问点基础问题。(比如 em)
    seki
        19
    seki  
       2014-12-25 14:01:09 +08:00
    @kmvan
    @robertlyc
    才发现问问题的原来是昨天那位,的确醉了……

    @pertersonvv
    有一些属性是浏览器在解释的时候自动添加的,如果你自己有设置的话就会覆盖掉
    切到 computed 选项卡,看看是哪个的盒子出问题,改之
    pertersonvv
        20
    pertersonvv  
    OP
       2014-12-25 14:10:53 +08:00
    @seki 看15楼,我已经找到原因了:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5730 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:45 · PVG 09:45 · LAX 18:45 · JFK 21:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.