如果页面上存在具有多种边框颜色的元素,则默认情况下,这些颜色相交的角创建斜角.这似乎是边角式的奇怪选择.我宁愿选择其中一个边框"压制"另一个边框,而是显示一条直线.
为了说明这种效果,请考虑以下事项:

请参阅我在这里创建的示例jsFiddle示例.
前两项显示默认的斜角行为.底部两个显示所需的预期行为,在这种情况下,边界顶部"超能力"或"覆盖"边界左边和右边边角.
顶级案例的标记:
<div class="container">
<div class="border">Item one</div>
<div class="border">Item two</div>
</div>
Run Code Online (Sandbox Code Playgroud)
而CSS:
.container {
margin: 5px;
width: 150px;
background: yellow;
}
.border {
padding: 5px;
border: 15px solid red;
border-top: 15px solid teal;
}
Run Code Online (Sandbox Code Playgroud)
底壳的标记:
<div class="container">
<div class="border-top"></div>
<div class="border-reg">Item one</div>
<div class="border-top"></div>
<div class="border-reg">Item two</div>
</div>
Run Code Online (Sandbox Code Playgroud)
而CSS:
.border-top {
border-top: 15px solid teal;
}
.border-reg {
border: 15px solid red;
border-top: 0;
padding: 5px;
}
Run Code Online (Sandbox Code Playgroud)
虽然我设计的第二种方法确实产生了我想要的效果,但似乎这对于我认为具有默认状态的东西来说是不必要的乏味.例如,如果我希望border-left覆盖其他边框,我将不得不处理一些float: left内联元素的疯狂.
有没有更简单的方法来删除在所有浏览器上观察到的默认斜角行为?
虽然上面详述的案例很容易让边框顶部或边框底部覆盖角落,但这并不容易,例如,如果我需要边框左边和右边边框来覆盖边框 - 顶部和边界底部.
如果您不需要对旧浏览器(IE 8 及更低版本)的支持,您可以使用box-shadow:
.border {
padding : 35px 20px 20px 20px;
box-shadow: inset 0 0 0 15px red, inset 0 15px 0 15px teal;
}
Run Code Online (Sandbox Code Playgroud)
这就是边界的工作方式,我相信如果没有额外的元素就没有办法改变它。
您可以使用包装 div,而不是空 div。
<div class="outer">
<div class="inner">test</div>
</div>
Run Code Online (Sandbox Code Playgroud)
.inner {
padding : 5px;
border : 15px solid red;
border-top: 0;
}
.outer {
border-top : 15px solid teal;
}
Run Code Online (Sandbox Code Playgroud)
演示: http: //jsfiddle.net/fmcvY/
还有另一种方法可以使用:before/:after伪元素来做到这一点,但它有点混乱,但它不需要额外的标记:
<div>test</div>
Run Code Online (Sandbox Code Playgroud)
div {
padding : 5px;
border : 15px solid red;
border-top: 0;
position:relative;
padding-top: 20px; /* border width plus desired padding */
}
div:before {
content:' ';
display:block;
background: teal;
height:15px;
padding:0 15px; /* border width plus div padding */
width:100%;
position:absolute;
top: 0;
left:-15px; /* border width plus div padding */
}
Run Code Online (Sandbox Code Playgroud)
您可以用多种不同的方式编写 CSS 来达到相同的效果。演示: http: //jsfiddle.net/fmcvY/3/
| 归档时间: |
|
| 查看次数: |
4364 次 |
| 最近记录: |