html css border

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>