¿Hay alguna manera de crear una esquina plana con CSS y HTML?Esquina plana o esquinas biseladas
Algo como esto:
____
/ \
| |
\____/
¿Hay alguna manera de crear una esquina plana con CSS y HTML?Esquina plana o esquinas biseladas
Algo como esto:
____
/ \
| |
\____/
Aquí está mi solución, usando las formas de CSS de Chris Coyier.
http://jsfiddle.net/dDejan/XSs9L/
4 divs adicionales se insertan a través de JavaScript (bueno, en realidad jQuery) para cada uno de los contenedores que se desea en forma de esta manera. Estos divs están posicionados absolutamente en las esquinas de su padre, y están decoradas en consecuencia como se describe en el enlace publicado por Sven Bieder
Puede componer esta usando con posición absoluta :before
y :after
elementos usando la técnica de CSS triangles.
<div class="box"></div>
css:
.box {
background-color:#2020ff;
height:50px;
width:50px;
position:relative
}
.box:after {
content:" ";
width: 0;
height: 0;
border-top: 10px solid #ffffff;
border-bottom: 10px solid transparent;
border-right:10px solid #ffffff;
position:absolute;
top:-9px;
right:0px;
}
Esto suena como un buen punto de partida, se preocupan de compartir código de ejemplo ? – zehelvion
Esto se ve bien, pero ¿podría explicar el código? No entiendo completamente cómo funciona? – zehelvion
Es un viejo truco de hacer un triángulo en la esquina de un borde. En este caso, es un triángulo blanco que cubre una parte de la caja azul. Puede editar la configuración en: después para ver cómo funciona. Use otro con: antes para cubrir la esquina superior izquierda. Así es como funciona: http://stackoverflow.com/questions/7073484/how-does-this-css-triangle-shape-work –
vistazo aquí. Allí encontrará todo lo que necesita:
http://css-tricks.com/examples/ShapesOfCSS/
Editar En caso de que el enlace se perdieron:
CSS
#octagon {
width: 100px;
height: 100px;
background: red;
position: relative;
}
#octagon:before {
content: "";
position: absolute;
top: 0; left: 0;
border-bottom: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px; height: 0;
}
#octagon:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
border-top: 29px solid red;
border-left: 29px solid #eee;
border-right: 29px solid #eee;
width: 42px;
height: 0;
}
Sí, tienes razón, lo he cambiado –
Pero no has sido aceptado responde ahora. Vergüenza. La suya es mejor. –
No hay problema. Cuando la otra respuesta funciona mejor para él, está bien. Al final se trata de ayudar a las personas y no de quién es aceptado. –
box {
background-color: transparent;
position: fixed;
width: 300px;
height: 300px;
}
svg {
width: 300px;
height: 300px;
}
polygon {
visibility: visible;
background: black;
stroke: white;
}
<box>
<svg>
<polygon points="0 250, 50 300, 300 300, 300 50, 250 0, 0 0" />
</svg>
</box>
Se puede hacer con un solo elemento adicional –
Es bueno saber @VladimirStarkov, gracias por ese comentario perspicaz :) – dDejan