防止CSS中出现"双重"边框

joh*_*ith 70 css

假设我有两个相邻的div(以https://chrome.google.com/webstore/category/home作为参考)带边框.

有没有办法(最好是一个CSS技巧)来阻止我的div出现像双边框?看看这张图片,以便更好地理解我的意思:

你可以看到两个div相遇的地方,看起来它们有一个双边框.

cim*_*non 59

如果我们谈论的元素不能保证以任何特定的顺序出现(可能是一行中有3个元素,后面跟一个带有2个元素的行等),你想要的东西可以放在集合中的每个元素上.该解决方案应涵盖:

.collection {
    /* these styles are optional here, you might not need/want them */
    margin-top: -1px;
    margin-left: -1px;
}

.collection .child {
    outline: 1px solid; /* use instead of border */
    margin-top: 1px;
    margin-left: 1px;
}
Run Code Online (Sandbox Code Playgroud)

请注意,大纲在旧版浏览器(IE7及更早版本)中不起作用.

或者,您可以坚持使用边框并使用负边距:

.collection .child {
    margin-top: -1px;
    margin-left: -1px;
}
Run Code Online (Sandbox Code Playgroud)

  • 非常有用。我还添加了“ position:relative; left:1px;”,以还原负边距。 (2认同)

Gio*_*ona 19

HTML:

<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

div {
    border: 1px solid #000;
    float: left;
}

div:nth-child(n+2) {
    margin-left: -1px;
}
Run Code Online (Sandbox Code Playgroud)

演示

包含IE9支持的ie9.js(它对所有CSS选择器/伪元素非常有用).


And*_*ndy 14

#divNumberOne { border-right: 0; }

  • 没有.我需要能够将它应用于许多元素. (13认同)
  • 这是唯一真正做到这一点的方法,不会弄乱其他东西.如果你需要做多个元素,地狱,比如100个div,你可以做`div {border-right:none; } div:last-child {border-right:1px solid black; 这将给你预期的效果 (10认同)
  • 这是纯粹的CSS,我使用了一个伪类(最后一个孩子),所以我还没有修改html,有很多伪类,我会说沿着这条路走,因为我认为没有替代方案 (3认同)

Ste*_*han 12

可能考虑的另一个解决方案是使用CSS Adjacent兄弟选择器.

CSS

div {
    border: 1px solid black;
}

div + div {
    border-left: 0;
}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Mic*_*umo 9

我迟到了,但尝试使用 outline 属性,如下所示:

.item {
  outline: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)

CSS 中的轮廓不占用物理空间,因此会重叠以防止出现双边框。

  • 不适合我。仍然有双边框和可能的错误。您可以看到滚动条上方的轮廓,而边框则不会出现这种情况。 (7认同)

Rod*_*eas 5

如果 div 都具有相同的类名:

div.things {
    border: 1px solid black;
    border-left: none;
}

div.things:first-child {
    border-right: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)

这里有一个JSFiddle 演示


cod*_*eek 5

您可以使用奇数选择器来实现

.child{
   width:50%;
   float:left;
   box-sizing:border-box;
   text-align:center;
   padding:10px;
   border:1px solid black;
   border-bottom:none;
}
.child:nth-child(odd){
   border-right:none;
}
.child:nth-last-child(2),
.child:nth-last-child(2) ~ .child{
   border-bottom:1px solid black
}
Run Code Online (Sandbox Code Playgroud)
<div>
    <div class="child" >1</div>
    <div class="child" >2</div>
    <div class="child" >3</div>
    <div class="child" >4</div>
    <div class="child" >5</div>
    <div class="child" >6</div>
    <div class="child" >7</div>
    <div class="child" >8</div>
</div>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明