我在html和css中修改了一个导航栏。在栏中有链接到其他页面,我想当我用鼠标浏览它们时,专用于链接的导航栏中的div改变了中红色边框的颜色,问题是当我查看链接时带边框导航栏变宽了。
#access {
background: #222; /* Show a solid color for older browsers */
background: -moz-linear-gradient(#252525, #0a0a0a);
background: -o-linear-gradient(#252525, #0a0a0a);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#252525), to(#0a0a0a)); /* older webkit syntax */
background: -webkit-linear-gradient(#252525, #0a0a0a);
-webkit-box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 2px;
-moz-box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 2px;
box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 2px;
clear: both;
display: block;
margin: 0 auto 6px;
width: 100%;
text-align: center;
line-height: 0;
}
#access ul {
font-size: 13.5px;
list-style: none;
margin: 0 0 0 -0.8125em;
padding-left: 0;
display:inline-block;
}
#access li:hover > a,
#access ul ul :hover > a,
#access a:focus {
background: #efefef;
border-bottom-style:solid;
border-width:5px;
border-color:red;
}
答案 0 :(得分:3)
将透明边框置于默认状态,或使用与其所在背景相同的颜色,即:
a {
border-bottom: 2px solid #222
}
a:hover {
border-bottom: 2px solid red;
}
答案 1 :(得分:1)
正确。这是因为CSS基于box model,其中对象的总可见宽度实际上是:
visible width = width + padding + border
box-sizing
是CSS规范的新手,但具有良好的浏览器支持(尽管有供应商前缀)。这基本上使得总可见宽度=宽度。边框,填充等都是从宽度中取出来的!
visible width = width
阅读本文以获取更多信息:http://css-tricks.com/box-sizing/
JSFiddle:http://jsfiddle.net/ErY9T/
请注意宽度的明显差异。
<div class="default"></div>
<div class="box-sized"></div>
div {
width: 300px;
height: 100px;
background-color: lime;
margin: 10px;
}
.default {
border: 10px solid red;
}
.box-sized {
border: 10px solid red;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}