13

这是为您准备的 CSS 脑筋急转弯。我想创建一个只有文本字段周围角落的边框,如下图所示:

http://i41.tinypic.com/2yy9lqs.png

我考虑过创建 2 个矩形 div,一个带有蓝色边框,另一个带有白色边框,然后覆盖它们,但这似乎不太优雅(例如,如果我想改变背景,它就不会很好地工作)。

有什么想法我还能怎么做?

编辑:

这是HTML:

<div class="blue white1 white">text</div>

.blue {

border: blue 4px solid;
etc..
}
4

5 回答 5

11

使用 1 个 div 和 1 个节点进行定位。http://jsfiddle.net/eCEds/2/

HTML:

<div class="blue white1 white"><p>Text</p></div>

CSS:

.blue {position:relative;width:400px;height:300px;}
.blue:before, .blue:after, .blue>:first-child:before, .blue>:first-child:after {
    position:absolute;
    width:80px; height: 80px;
    border-color:blue;
    border-style:solid;
    content: ' ';
}
.blue:before {top:0;left:0;border-width: 4px 0 0 4px}
.blue:after {top:0;right:0;border-width: 4px 4px 0 0}
.blue>:first-child:before {bottom:0;right:0;border-width: 0 4px 4px 0}
.blue>:first-child:after {bottom:0;left:0;border-width: 0 0 4px 4px}
于 2013-07-05T13:08:07.223 回答
2

.text
{
    border: 1px solid #00f;
    height: 200px;
    position: relative;
    width: 200px;
}
.text:after
{
     position:absolute;
     top: 10%;
     height: 80%;
     content: "";
     width: 99%;
     left: -3px;
     border-left: 5px solid #fff;
     border-right: 5px solid #fff;
}
.text:before
{
     position:absolute;
     left: 10%;
     height: 99%;
     content: " ";
     width: 80%;
     top: -3px;
     border-top: 5px solid #fff;
     border-bottom: 5px solid #fff;  
}
<div class="text">test test gfgfgf gfg f</div>

这是我的变种。

于 2013-07-05T13:12:02.533 回答
1

使用 CSS 渐变和多种背景可以实现这样的效果:http: //jsbin.com/usegup/1/edit。但可能 SVG 背景会更适合这种情况。

于 2013-07-05T13:15:09.237 回答
0

这样的事情会起作用,并且在旧版浏览器中可以减少启动问题:

    <style>
.blue {
    width: 500px;
    height: 500px;
    position: relative;
}
.corner {
    position: absolute;
    border-color: blue;
    width: 30px;
    height: 30px;
}
.tl {
    top: 0;
    left: 0;
    border-top: 2px solid;
    border-left: 2px solid;
}
.tr {
    top: 0;
    right: 0;
    border-top: 2px solid;
    border-right: 2px solid;
}

.br {
    bottom: 0;
    right: 0;
    border-bottom: 2px solid;
    border-right: 2px solid;
}

.bl {
    bottom: 0;
    left: 0;
    border-bottom: 2px solid;
    border-left: 2px solid;
}
</style>

<div class="blue">
    <div class="tl corner"></div>
    <div class="tr corner"></div>
    <div class="bl corner"></div>
    <div class="br corner"></div>
</div>
于 2013-07-05T13:10:05.153 回答
0

你的意思是这样的:http: //jsfiddle.net/FlameTrap/F5bC6/

HTML

<div class="text">
    <span class="corner TL"></span>
    <span class="corner TR"></span>
    <span class="corner BL"></span>
    <span class="corner BR"></span>
    <div class="text">Text</div>
</div>

CSS

.text {
    background: #fff;
    width: 300px;
    height: 200px;
    position: relative;
    z-index: 3;
}
.corner {
    position: absolute;
    background: blue;
    width: 20px;
    height: 20px;
    z-index: 2;
}
.TL {
    top: -10px;
    left: -10px
}
.TR {
    top: -10px;
    right: -10px
}
.BL {
    bottom: -10px;
    left: -10px
}
.BR {
    bottom: -10px;
    right: -10px
}
于 2013-07-05T13:05:45.927 回答