Est-ce possible, je sais que toutes les formes suivantes sont possibles dans ce lien:
http://css-tricks.com/examples/ShapesOfCSS/
mais la croix doit être possible aussi. Quand je dis croix je veux dire comme ça:
Vous pouvez réaliser quelque chose comme ceci avec des pseudoéléments uniquement:
http://jsbin.com/upiyoc/1/edit
#cross {
width: 100px;
height: 100px;
position: relative;
}
#cross:before, #cross:after {
content: "";
position: absolute;
z-index: -1;
background: #d00;
}
#cross:before {
left: 50%;
width: 30%;
margin-left: -15%;
height: 100%;
}
#cross:after {
top: 50%;
height: 30%;
margin-top: -15%;
width: 100%;
}
La taille de la croix sera mise à l'échelle proportionnellement, en fonction de width
et height
de l'élément #cross
Mise à jour: une autre solution (utilisant moins de code) pourrait simplement impliquer plusieurs gradients linéaires (sans pseudolements), par exemple.
http://codepen.io/anon/pen/zxwgPo
#cross {
width: 100px;
height: 100px;
background: linear-gradient(to bottom, transparent 35%,
#d00 35%,
#d00 65%,
transparent 65%),
linear-gradient(to right, transparent 35%,
#d00 35%,
#d00 65%,
transparent 65%),
}
Bien sûr que ça l'est. Vous devez juste utiliser deux éléments: Voir http://jsfiddle.net/92XTx/2/
La division englobante est relative
ly positionnée de sorte que les deux enfants puissent être positionnés de manière absolue.
#cross {
position: relative;
width: 150px;
height: 150px;
}
Ici, ils sont tous deux positionnés:
#cross div {
position: absolute;
background: red;
}
pour les faire se superposer.
Et puis créez vos formes:
.cross-vertical {
left: 33%;
width: 33%;
height: 100%;
}
.cross-horizontal {
top: 33%;
width: 100%;
height: 33%;
}
Parce que toutes les réponses que je vois ici semblent longues ou dépendantes du préfixe du vendeur,
#cross {
background: red;
height: 100px;
position: relative;
left: 50px;
width: 20px;
}
#cross:after {
background: red;
content: "";
height: 20px;
left: -40px;
position: absolute;
top: 40px;
width: 100px;
}
<div id="cross"></div>
Cela peut être fait avec un caractère normal '+' plus avec un text-stroke
D&EACUTE;MO ( Webkit, Android uniquement )
div {
font-size: 80px;
-webkit-text-stroke: 20px red;
display: inline-block;
padding: 0 20px;
}
<div>+</div>
CSS Transform peut être facilement utilisé pour obtenir une forme plus
.close {
position: absolute;
right: 10px;
top: 6px;
width: 20px;
height: 20px;
opacity: 0.3;
}
.cross:before, .cross:after {
position: absolute;
left: 15px;
content: ' ';
height: 21px;
width: 2px;
background-color: #333;
}
.cross:before {
transform: rotate(0deg);
}
.cross:after {
transform: rotate(-90deg);
}