所以我一直在构建这个css导航栏,我有一些问题希望有人可以提供帮助 。这是Navigation bar的方式。但是在设置" .cssmenu ul li"的浮动属性时离开整个绿色背景消失Navigation with float enabled。为什么会这样?另外我使用了:before伪类来创建下划线扩展效果,但即使我已经设置了宽度:100%,它也不会伸展到整个宽度。 提前谢谢。
因为"链接到jsfiddle.net必须附带代码"
.cssmenu{
width : auto;
background : #27ae60;
}
.cssmenu ul{
list-style: none;
margin: 0;
padding: 0;
line-height: 1;
display: block;
zoom: 1;
}
.cssmenu ul li{
display: block;
padding: 0;
}
在.cssmenu ul li中启用float属性的事情搞乱了。
答案 0 :(得分:2)
浮动元素的父元素不会扩展到子元素的大小。想想这就像孩子们position: absolute
一样。
要强制父元素包含其所有浮动子元素,请将overflow: hidden
添加到父元素。在您的情况下,您可以将其添加到.cssmenu
:
.cssmenu {
overflow: hidden;
}
对于下划线,将:before
元素的宽度设置为100%
会使下划线与a
元素的宽度相同。这是文本的宽度。
相反,您应该将:before
元素添加到li
元素:
.cssmenu ul li:before {
...
}
.cssmenu ul li:hover:before {
...
}
现在100%宽度表示li
元素的宽度,即" full"菜单项的宽度。
注意:您还必须更改:before
元素的某些指标,例如top
,left
等。
答案 1 :(得分:1)
答案 2 :(得分:1)
您是否尝试内联导航元素?想知道你想要完成什么,这可能有助于我们更好地回答你的问题。我有点不清楚,但这里什么都没有!
这是我的镜头:
http://jsfiddle.net/jasonbelmonti/CYR7V/
这是你想要实现的目标吗?
这是我用的css:
@import url(http://fonts.googleapis.com/css?family=Open+Sans:700);
.cssmenu{
width : auto;
background : #27ae60;
overflow: hidden;
}
.cssmenu ul{
list-style: none;
margin: 0;
padding: 0;
width: 100%;
line-height: 1;
display: block;
zoom: 1;
}
.cssmenu ul li{
display: inline-block;
width: 33%;
padding-top: 15px;
padding-bottom: 17px;
}
.cssmenu ul li a{
display : block;
position : relative;
font-family: "Open Sans";
color : #fff;
text-decoration: none;
padding : 0 px;
text-transform: uppercase;
transition : all .3s;
font-size :14px;
}
.cssmenu ul li a span
{
padding-left: 15px;
}
.cssmenu ul li a:before{
content : ' ';
display : block;
height :3px;
width : 0px;
background : #2c3e50;
position : relative;
top : 30px;
left : -25px;
transition : all .3s;
}
.cssmenu ul li a:hover:before{
width : 100%;
left: 0;
}
.cssmenu ul li a:hover{
color : #34495e;
}