Как создать границу, которая полностью покрывает смежные углы в CSS?
У меня есть div с 1px-границей, и я пытаюсь создать границу 3px в другом цвете для этого div. Я использую этот код:
box {
border: 1px solid #ddd;
border-top: 3px solid #3F9BD0;
}
но на углах граница не очень хорошая, см. изображение:
![плохая граница]()
Как я могу сделать эту границу хорошо выглядеть, например:
![желаемая граница с прямоугольными углами]()
скрипт: https://jsfiddle.net/15tory3z/
Ответы
Ответ 1
Вместо border-top
попробуйте использовать псевдо-элемент :after
, чтобы воссоздать необходимый эффект.
.box {
width: 200px;
height: 100px;
border: 1px solid #ddd;
position: relative;
}
.box:after {
position: absolute;
content: "";
width: 100%;
height: 5px;
top: -5px;
background: dodgerblue;
padding: 1px;
left: -1px;
}
<div class="box"></div>
Ответ 2
Вы можете нарисовать их с помощью вложенных теней и дополнений:
div {
padding:12px 5px 5px;
width: 40%;
height: 200px;
box-shadow: inset 0 10px #3F9BD0, inset 4px 0 gray, inset -4px 0 gray, inset 0 -4px gray
}
<div></div>
Ответ 3
Это также помещает строку сверху:
.box1 {
border: 10px solid #ddd;
border-top: 0;
box-shadow: 0 -30px 0 #3F9BD0;
float: left;
width: 300px;
height: 300px;
}
<div class="box1"></div>
Ответ 4
Используйте css :after
псевдокласс, docs
.box_big {
border: 10px solid #ddd;
position:relative;
z-index: 1;
}
.box_big:after{
height: 10px;
position: absolute;
top:-10px; left:-10px; right:-10px;
content: " ";
z-index: 2;
background: red;
}
.box {
border: 1px solid #ddd;
position:relative;
z-index: 1;
}
.box:after{
height: 3px;
position: absolute;
top:-3px; left:-1px; right:-1px;
content: " ";
z-index: 2;
background: red;
}
<div class="box_big">
big box
</div>
<hr />
<div class="box">
your box
</div>
Ответ 5
Добро пожаловать в рамки css. Единственный способ сделать это - использовать псевдоэлементы :after
или :before
.
Fiddle
.box {
border: 1px solid #ddd;
position: relative;
}
.box:after {
position: absolute;
display: block;
content:'';
/* Positioning */
top: 0;
width: 100%;
height: 3px;
left: 0;
right: 0;
/* Color */
background-color: #3F9BD0;
}
Ответ 6
Попробуйте следующее:
.box {
outline: 2px solid #ddd;
margin-top: -2px;
border-top: 10px solid #3F9BD0;
min-width:100px;
min-height:100px;
float:left;
}
<div class="box"></div>