Sí, ¡es posible! Usted rotate
la caja, déle un border-radius
y use 45deg
linear-gradient
como background
.
DEMO
HTML:
<div class='arrow'></div>
CSS:
.arrow {
width: 7em;
height: 7em;
border-radius: 0 0 2em 0;
margin: 5em;
transform: rotate(45deg);
background: linear-gradient(-45deg, black 50%, transparent 50%);
}
Si desea que el ángulo de la flecha a ser diferente, entonces también puede skew
ella.
Ten en cuenta el hecho de que CSS gradients are not supported by IE9 (no estoy diciendo "o más viejo" esta vez porque mencionas CSS3 entre tus etiquetas). La solución en ese caso sería usar un fondo sólido y de alguna manera asegurarse de que la parte superior no se muestre, ya sea cubriéndolo con un elemento precedente o recortándolo (consulte the answer Tim Medora provisto).
También, en este momento todavía no hay soporte para la sintaxis sin prefijo (aunque esto cambiará pronto: D), por lo que tendrá que o bien agregar manualmente los prefijos -webkit-
, -moz-
y -o-
. (No los agregué en la demostración porque Dabblet usa -prefix-free que se encarga de hacer esto.)
No piense CSS tiene capacidad tapa de extremo (pero no he mirado muy de cerca CSS3 sin embargo, probablemente sea incorrecto en esta c ount), pero el elemento de lienzo html5 tiene endcaps. –
se puede hacer pero necesita algún truco o puede hacerlo html5? con los scripts de lienzo –
Orientación diferente, pero esto puede ser útil: http://stackoverflow.com/a/12042194/453277 –