2015-10-10 32 views
1

我有这种布局,需要堆叠在一起的一堆盒子,它们都有一个1px边框。 为了使边框始终为1px,我将-1px的边距底部放在所有框中,但是当我更改悬停时的边框颜色时,它并不像预期的那样工作。这里是一个例子: Border collapsedCSS - 堆积边框

我怎样才能让它在悬停时不重叠?

我的代码:

.main-content ul li a { 
    margin-bottom:-1px; 
    padding:15px 23px; 
    display:block; 
    border:1px solid #545353; 
    color:#545353; 
} 
.main-content ul li a:hover { 
    border-color:#fff; 
    color:#fff; 
} 

我试图让他们所有的z-index,然后做出更高悬停,但它没有工作,要么... 任何想法?

谢谢!

编辑添加HTML

<div class="row main-content"> 
    <div class="container"> 
    <div class="col-md-8 col-md-offset-2"> 
     <ul> 
     <li><a href="#">Bienvenida</a></li> 
     <li><a href="#">¿Por qué es la decisión correcta?</a></li> 
     <li><a href="#">¿Cómo funciona este servicio?</a></li> 
     <li><a href="#">¿Cuánto cuesta este servicio?</a></li> 
     <li><a href="#">Estoy interesado, ¿qué hago?</a></li> 
     <li><a href="#">Registro</a></li> 
     </ul> 
    </div> 
    </div> 
</div> 
+0

使用'的位置是:绝对的;'和'Z-index'上':hover'操作呢? – leonixyz

回答

2

您可以使用属性:

box-sizing: border-box; 

所以元素正是你想他们是宽度和高度。元素中的边框将为1px,而不是伸展到其他元素。

为了保持边界在1px的,使用这个CSS:

.main-content ul li a { 
position: relative; 
z-index: 30; 
margin-bottom:-1px; 
padding:15px 23px; 
display:block; 
border:1px solid #545353; 
color:#545353; 
} 
.main-content ul li a:hover { 
border-color:#fff; 
color:#fff; 
z-index: 99; 
} 

我所做的更改了设置的z-index两个unhovered链接和链接徘徊。位置:相对被添加,因为除非指定了位置,否则z-index不会反映。

+0

这是有效的,但当箱子见面有两个边缘因为两个边界相交时,我想要的是边框堆叠在一起,但是当我将鼠标悬停在元素边框应该是“顶部”的项目上时 – Dogmatics

+0

您可以尝试使用z-index,并将其应用于悬停时的框。 z-index所做的是将屏幕上的一个元素优先于另一个元素,这似乎是你想要的。您可以通过以下方式执行此操作: .main-content ul li a:hover { z-index:10; } 而其余的z-索引小于该值。您还需要将位置设置为绝对或相对才能工作。 –

+0

我试过把z-index:99;在:悬停,但也没有工作,有什么我在这里失踪?我怎么能让它与pos一起工作。绝对? – Dogmatics

0

试试这个https://jsfiddle.net/L565nwaL/1/

<div class="main-content"> 
    <ul> 
     <li><a href="#">item one</a></li> 
     <li><a href="#">item two</a></li> 
     <li><a href="#">item three large</a></li> 
     <li><a href="#">item four</a></li> 
    </ul> 
</div> 

CSS

.main-content ul li a { 
    padding:15px 23px; 
    display:block; 
    border:1px solid #545353; 
    border-bottom: transparent; 
    color:#545353; 
} 
.main-content ul li a:hover { 
    border:1px solid #fff; 
    color:#fff; 

} 

.main-content { 
    background: #161616; 
    box-sizing: border-box; 

} 
+0

这是有效的,但再次,有两个像素的地方,在那里应该只有一个 – Dogmatics

+0

我想过,但由于一些盒子比其他人大,你可以看到有没有底部边界 – Dogmatics

+0

是我想到了在我发布回答后:)对不起。 –