嵌入式图片描述了我的布局。如您所见,问题出在我的水平菜单中。首先,它是右对齐,然后选定的选项卡没有底部边框(这会产生前纸效果)。如果您选择第二个标签,则第二个 li 将没有底部边框,其余部分将被连接。
问题是,如何实现这一目标?我能想到的唯一解决方案是:悬停img,删除选定的底部边框将为空白。
到目前为止的守则:
body
{
font:100% 'century gothic', Verdana, Arial, Helvetica, sans-serif;
color:#3F3F3F;
}
#wrapper
{
width:960px;
height:700px; /*temp*/
margin:0 auto;
background:#FFF;
}
#header /*not visible on the embedded layout*/
{
width:960px;
height:91px;
}
#nav-bar
{
width:960px;
height:50px;
border-bottom:#000070 1px solid;
/*
If only <ul> has bottom border then i wouldn't have the bottom border for
the whole #nav-right. But this is also a problem for the selected
tab that doesn't have any
*/
}
#nav-left
{
float:left;
width:73px;
height:50px;
border-right:1px #000070 solid;
}
#nav-right
{
float:left;
width:882px;
height:50px;
display:inline-block;
position:relative;
/*now i can use absolute on the <ul> for bottom-right positioning*/
}
#nav-right ul
{
list-style: none;
/*padding: ... ;*/
position:absolute;
bottom:0px;
right:5px;
border-top:1px solid #000070;
border-left:1px solid #000070;
border-right:1px solid #000070;
}
#nav-right li
{
display:inline-block;
/*padding: ...;*/
}
#nav-right li a
{
/*padding: ...;*/
text-decoration:none;
margin:0;
color:#CCC;
}
#nav-right li a:hover
{
color:#000070;
font-weight:bold;
}
#content
{
width:960px;
clear:both;
}
#con-left{/*...*/}
#con-right{/*...*/}
HTML STRUCTURE:
<body>
<div id="wrapper">
<div id="header"><img src="#" /></div>
<div id="nav-bar">
<div id="nav-left"></div>
<div id="nav-right">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Items</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div> <!--END: nav-bar-->
<div id="content">
<div id="con-left"></div>
<div id="con-right">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ultrices semper orci in euismod. Proin sed justo at lectus dapibus <br>
interdum. Donec quis elit massa, id porttitor eros. Nullam vel consectetur diam. <br>
Phasellus bibendum, justo sed vehicula luctus, velit lectus rhoncus velit, at placerat nibh sapien quis felis. Mauris id aliquet. <br>
Integer mattis convallis luctus. Vivamus suscipit euismod sodales. Suspendisse cursus, erat eu egestas gravida, est mi semper ,<br>
quis sagittis purus mi sit amet nisl. Praesent adipiscing molestie sem. Mauris vitae arcu nibh, tristique laoreet nisi. Proin quis<br>
id sapien condimentum facilisis et at odio. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. <br>
Morbi eget est elit, nec rutrum enim. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.<br>
</p>
</div>
</div>
</div><!--END: wrapper-->
有关如何为选定标签完成无底边框效果的任何建议吗?
我制作小图片的效果不是很好,如果有可能我想用CSS做。如果它涉及添加几个div左右无关紧要。
答案 0 :(得分:3)
您可以添加以下css:
ul li:hover {
border-bottom: 1px solid white;
margin-bottom: -1px;
}
因此,当您将菜单的li
悬停时,白色边框会与容器div的蓝色边框重叠。
答案 1 :(得分:1)
如何定义选定的css类并将其仅应用于li
中当前选定的ul
元素。是否删除了通常应用于所有ul
元素的边框?我假设在页面之间导航的任何机制也可以将该css类添加到适当的li
元素。
使用类选择器时,您使用的是特定于id的css选择器可能会更强大。假设您有以下样式;
.nav-left { border-bottom: 1px solid black; }
.nav-selected { border-bottom: 0 solid black; color:blue; }
#nav-item-1 { background-color: red; }
#nav-item-2 { background-color: green; }
#nav-item-2 .nav-selected { color: orange; }
如果必须呈现输出并且不使用jQuery这样的框架将客户端样式应用于元素,那么元素中可以有多个类说明符。
<li id="nav-item-1" class="nav-left nav-selected">
<li id="nav-item-2" class="nav-left">
类属性的顺序会覆盖以前的类选择器,因此nav-selected
将删除应用nav-left
的边框。对于item-1
和item-2
元素,添加id选择器将分别为红色和橙色绿色。