ul> li style并将其保持在一行内

时间:2013-03-19 18:59:54

标签: html css

我正在尝试创建一个包含4个项目的菜单列表项,但由于某种原因它不会在一行内输入。我尝试用嵌套的div嵌套它,但没有运气。当我添加padding: 10px;时,问题就开始发生了。

这是我拥有的最新HTML和CSS:

HTML:

<div id="header">
    <ul id="menu">
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Info</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div>

CSS:

#menu {
    margin: 0;
    padding: 0;
}

#menu li {
    display: block;
    float: left;
    margin: 0;
    width: 25%;
    background-color: gray;
    padding: 10px;
}

我也有一个jsfiddle:http://jsfiddle.net/GLh92/1/

如您所见,它不适合一行。我在这里也有回应关注。因此,它需要在一条线内适合不同的屏幕分辨率。

知道如何以干净的方式完成这项工作吗?

6 个答案:

答案 0 :(得分:5)

box-sizing: border-box元素上使用li。这将使填充部分成为宽度计算。

http://jsfiddle.net/ExplosionPIlls/GLh92/5/

答案 1 :(得分:4)

查看box-sizing css属性,它将改变你的生活。

#menu li {
    display: inline-block;
    float: left;
    margin: 0;
    width: 25%;
    background-color: gray;
    padding: 10px;
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box;    /* Firefox, other Gecko */
    box-sizing: border-box;         /* Opera/IE 8+ */
}

答案 2 :(得分:1)

解决方案是将填充添加到<a>标记,而不是<li>标记,因为填充会增加实际宽度。

  1. <li>
  2. 删除填充
  3. padding: 10px;添加到<a>
  4. 关闭<a>代码
  5. http://jsfiddle.net/GLh92/7/

    <强> HTML:

    <div id="header">
        <ul id="menu">
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Info</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
    </div>
    

    <强> CSS:

    #menu {
        margin: 0;
        padding: 0;
    }
    
    #menu li {
        display: block;
        float: left;
        margin: 0;
        width: 25%;
        background-color: gray;
    }
    
    #menu li a {
        display: block;
        padding: 10px;
    }
    

答案 3 :(得分:0)

填充为元素添加宽度和/或高度,您应该使用li元素的子元素处理填充或边距。

答案 4 :(得分:0)

当您提到padding:10px;时,它也会增加<li>项的宽度。所以你需要照顾width:20%;

试试这个:

#menu li {
    display: block;
    float: left;
    margin: 0;
    width: 20%;
    background-color: gray;
    padding:10px;
}

它将属于同一条线。这是你在寻找什么?

答案 5 :(得分:0)

问题是您要将每个li元素的宽度设置为25%。 你有四个列表元素,只要没有填充就可以了(25 * 4 = 100)但是当你添加填充时,其中一个元素移动到下一行。(25 * 4 + 10(填充)&gt; 100)

将宽度值更改为其他行15%

#menu li {
display: inline-block;
float: left;
margin: 0;
width: 15%;
background-color: gray;
padding: 10px;

}

http://jsfiddle.net/GLh92/9/