html - ¿Cómo hacer un borde superpuesto div niño?
css border (1)
Tengo que hacer una superposición de bordes, su contenido coincide con el aspecto de esta imagen:
Y obtuve el panorama general:
Y necesito hacer que ese borde se superponga al contenido verde.
¿Cómo puedo lograrlo?
No puedo usar
z-index
para esto, como investigué.
El código HTML y CSS sigue:
.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>
Puede considerar el uso de pseudoelementos para crear el borde y evitar marcas adicionales. También puede controlar fácilmente su posición / tamaño:
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;
}
<div class="button">
some text
</div>
Aquí también hay otra idea usando
linear-gradient
y fondo múltiple:
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;
}
<div class="button">
some text
</div>
Otra sintaxis con gradiente:
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;
}
<div class="button">
some text
</div>
Otra idea usando fondo y caja-sombra:
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*/
}
<div class="button">
some text
</div>