如何创建不接触纯css边缘的双边框?

Jit*_*yas 2 css css3

在导航设计中,我需要像这样给出边框.我知道如何创建双边框,但不知道如何创建在顶部和底部有一些间隙的边框.

在此输入图像描述

我知道它可以使用图像完成,但很想知道是否可以只在CSS中制作

Ana*_*Ana 8

是的,只需使用CSS即可轻松完成.

演示

HTML:

<ul class='navigation'>
    <li><a href='#'>nav item</a></li>
    <!-- as many navigation items as you would like -->
    <li><a href='#'>nav item</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

相关CSS:

.navigation { padding: 0; list-style: none; }
.navigation li {
    float: left;
    padding: .35em 0;
    border-top: solid 2px #e4e4e3;
    border-bottom: solid 3px #94a10f;
    background: linear-gradient(#fafafa, #e5e5e5);
}
.navigation a {
    display: block;
    padding: .5em;
    border-left: solid 1px #fff;
    border-right: solid 1px #a4a4e3;
    color: #000;
    text-decoration: none;
}
.navigation li:first-child a { border-left: none; }
.navigation li:last-child a { border-right: none; }
Run Code Online (Sandbox Code Playgroud)

或者,如果您不希望在顶部和底部有一个不可点击的区域,您可以尝试另一种方式:

演示

CSS:

.navigation {
    display: inline-block;
    overflow: hidden;
    padding: .35em 0;
    border-top: solid 2px #e4e4e3;
    border-bottom: solid 3px #94a10f;
    background: linear-gradient(#fafafa, #e5e5e5);
    list-style: none;
}
.navigation li {
    float: left;
    border-left: solid 1px #fff;
    border-right: solid 1px #a4a4e3;
}
.navigation a {
    display: block;
    padding: .5em;
    margin: -.35em 0;
    color: #000;
    text-decoration: none;
}
.navigation li:first-child { border-left: none; }
.navigation li:last-child { border-right: none; }
Run Code Online (Sandbox Code Playgroud)

第三种方法是将可点击区域扩展到边界,也就是在链接上使用伪元素来获得横向边界.

演示

CSS:

.navigation { margin-top: 7em; list-style: none; }
.navigation li {
    float: left;
    background: linear-gradient(#fafafa, #e5e5e5);
}
.navigation a {
    display: block;
    position: relative;
    padding: .85em;
    border-top: solid 2px #e4e4e3;
    border-bottom: solid 3px #94a10f;
    color: #000;
    text-decoration: none;
}
.navigation a:before {
    position: absolute;
    top: .35em; bottom: .35em; left: 0;
    border-right: solid 1px #fff;
    border-left: solid 1px #a4a4e3;
    content: '';
}
.navigation li:first-child a:before { border: none; }
Run Code Online (Sandbox Code Playgroud)

  • 我现在还添加了第三种方法 - 这个方法也将可点击区域扩展到边框. (2认同)