2010-11-08 130 views
0

为什么这个代码只生产一个白色背景:CSS水平导航栏

ul.nav { 
    width: 30%; 
    border: 1px solid #999; 
    margin: 0px auto; 
    background-color: #00ff7f; 
} 
ul.nav li { 
    display: inline; 
    float: left; 
    width: 20%;   
} 
+0

什么是html代码? – 2010-11-08 16:21:38

回答

2

两件事:

1)更基本的开始,给你的元素的高度和宽度。在你可能在CSS开发阶段,百分比只会让你感到困惑。此外,你应该按字母顺序排列你使用的所有CSS属性;它会给你一些zen我的朋友代码。

2)失去显示:内联;引用并用display:block;替换它。联机显示只会占用它需要的空间,仅此而已。在您的代码中,它不需要占用任何空间,因为您只将空间定义为百分比。你可以在这里阅读更多:http://www.webdesignfromscratch.com/html-css/css-block-and-inline/

试试这个代码,而不是:

ul.nav { 
    background-color: #00ff7f;  
    border: 1px solid #999; 
    height: 20px; /*This is an example*/ 
    margin: 0px auto; 
    width: 400px;   
} 

ul.nav li { 
    background-color: #86182d; /*Example background color*/ 
    display: block; 
    float: left; 
    height: 20px; /*This is an example*/ 
    width: 80px; /*This is 20% of 400px*/  
} 

这必将输出有形的东西,你可以从百分比作为你学习更努力了。

3)对于有人在这里为您回答的每个问题,请尝试自己回答。它会帮助你学习超出你的想象。祝你好运在编码...

+0

这是一个很好的答案。 – Ziggy 2012-08-24 04:53:14

0

由于所有ul.nav的孩子都是浮动的,在ul.nav具有内容以提供高度。由于其高度为零,因此不呈现背景颜色。您可以使用Firebug来确认ul的大小。

+0

谢谢!我如何修复它,使其高度是例如li-element + 5 px内的文本高度? – 2010-11-08 16:27:19

1

UL由于内部浮动元素(李氏)而折叠。用ul.nav隐藏UL:清除UL。

ul.nav 
{ 
    width: 30%; 
    border: 1px solid #999; 
    margin: 0px auto; 
    background-color: #00ff7f; 
    overflow: hidden; 
} 
+1

或'overflow:auto'。任何溢出值都会做 – Jan 2010-11-08 20:38:24

+0

好点,1月 – Damien 2010-11-09 10:27:09

0

只是删除ul.nav lifloat和改变display:inlinedisplay:inline-block

0

,因为会显示您的李联和浮动,这意味着含UL确实来自其子网获取的高度。或者给ul一个高度或者在ul周围有一个包含元素,并且明确:在ul之后并且给出背景颜色

0

这个问题已被多次询问并以多种方式提出:“为什么不是容器封装我浮动的物品?“。这是因为css不是一种编程语言,它是一种造型语言。 CSS流畅地和隐含地反应,许多程序员希望需要给出明确的指示。

我强烈建议你阅读更多关于在CSS中漂浮。 quirksmode有一个很好的page about it。此外,您应该阅读w3c spec以深入了解该主题。

+0

是的,这是因为浮动图像在文本中,你不希望每个段落都清除图像。这可能会扰乱段落之间的空白。 – Jan 2010-11-08 20:41:56