如何制作边框叠加子div?

时间:2018-02-07 11:18:05

标签: html css border

我必须使边框覆盖其内容以匹配此图像的外观:

enter image description here

我对它有了全面的了解:

enter image description here

我需要让边框覆盖绿色内容。我怎么能完成它?正如我研究的那样,我无法使用z-index。 HTML和CSS代码如下:



.box-border a {
  color: white;
  text-transform: uppercase;
  font-weight: bold;
  font-size: 16px;
}

.box-border a:hover {
  text-decoration: none;
  color: white;
  cursor: pointer;
}


.box-border-participe {
  position: relative;
  float: right;
  margin-right: 30%;
  border: 4px solid white;
}

.box-participe {
  background-color: #94C120;
  padding: 10px 40px;
  margin-left: 5px;
  margin-top: 5px;
  margin-bottom: -20px;
  margin-right: -20px;
}

body {
  background:grey;
}

<div class="box-border box-border-participe">
  <div class="box-participe">
    <a>Participe</a>
  </div>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:5)

您可以考虑使用伪元素来创建边框并避免额外的标记。您也可以轻松控制其位置/大小:

&#13;
&#13;
body {
  background: grey;
}

.button {
  background: #94c120;
  width: 200px;
  height: 50px;
  margin: 50px;
  position: relative;
}

.button:before {
  content: "";
  position: absolute;
  top: -15px;
  left: -15px;
  width: 100%;
  height: 100%;
  border: 5px solid #fff;
  box-sizing: border-box;
}
&#13;
<div class="button">
  some text
</div>
&#13;
&#13;
&#13;

以下是使用linear-gradient和多个背景的另一个想法:

&#13;
&#13;
body {
 background:grey;
}
.button {
  width: 200px;
  height: 80px;
  margin: 50px;
  padding:20px 0 0 20px;
  box-sizing:border-box;
  background: 
    linear-gradient(to right,#fff 5px,transparent 5px calc(100% - 5px),#fff calc(100% - 5px)) 0 0/ calc(100% - 10px) calc(100% - 10px),
    linear-gradient(to bottom,#fff 5px,transparent 5px calc(100% - 5px),#fff calc(100% - 5px)) 0 0/ calc(100% - 10px) calc(100% - 10px),
    linear-gradient(#94c120,#94c120) 15px 15px;
  background-repeat:no-repeat;
}
&#13;
<div class="button">
  some text
</div>
&#13;
&#13;
&#13;

渐变的另一种语法:

&#13;
&#13;
body {
 background:grey;
}
.button {
  width: 200px;
  height: 80px;
  margin: 50px;
  padding:20px 0 0 20px;
  box-sizing:border-box;
  background: 
    linear-gradient(#fff,#fff) left -10px top     0  /100% 5px,
    linear-gradient(#fff,#fff) top  -10px left    0  /5px 100%,
    linear-gradient(#fff,#fff) left -10px bottom 10px/100% 5px,
    linear-gradient(#fff,#fff) top  -10px right  10px/5px 100%,
    linear-gradient(#94c120,#94c120) 20px 20px; 
  background-repeat:no-repeat;
}
&#13;
<div class="button">
  some text
</div>
&#13;
&#13;
&#13;

使用背景和盒子阴影的另一个想法:

&#13;
&#13;
body {
 background:grey;
}
.button {
  width: 200px;
  height: 80px;
  margin: 50px;
  padding:15px 0 0 15px;
  box-sizing:border-box;
  background: #94c120 content-box;
  border:5px solid #fff;
  box-shadow: 20px 20px 0px #94c120; /* value of padding + border*/
}
&#13;
<div class="button">
  some text
</div>
&#13;
&#13;
&#13;