Lorsque vous accédez à la page http://m.google.com en utilisant Mobile Safari, vous verrez la belle barre en haut de la page.
Je veux dessiner des trapèzes (US: trapèzes) comme ça, mais je ne sais pas comment. Dois-je utiliser css3 3d transform? Si vous avez une bonne méthode pour y parvenir, dites-le moi.
Vous pouvez utiliser du CSS comme celui-ci:
#trapezoid {
border-bottom: 100px solid red;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 0;
width: 100px;
}
<div id="trapezoid"></div>
C'est vraiment cool de faire toutes ces formes, jetez un œil à plus de belles formes sur:
http://css-tricks.com/examples/ShapesOfCSS/
EDIT: ce CSS est appliqué à un élément DIV
Comme c'est assez ancien maintenant, je pense qu'il pourrait être utilisé avec de nouvelles réponses mises à jour avec de nouvelles technologies.
.trapezoid {
width: 200px;
height: 200px;
background: red;
transform: perspective(10px) rotateX(1deg);
margin: 50px;
}
<div class="trapezoid"></div>
<svg viewBox="0 0 20 20" width="20%">
<path d="M3,0 L17,0 L20,20 L0,20z" fill="red" />
</svg>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.moveTo(30, 0);
ctx.lineTo(170, 0);
ctx.lineTo(200, 200);
ctx.lineTo(0, 200);
ctx.fillStyle = "#FF0000";
ctx.fill();
<canvas id="myCanvas" width="200" height="200"></canvas>
Vous disposez de quelques options. Vous pouvez simplement utiliser une image, dessiner quelque chose avec svg ou déformer une div régulière avec des transformations CSS. Une image serait plus simple et fonctionnerait sur tous les navigateurs. Le dessin en svg est un peu plus complexe et n'est pas garanti de fonctionner dans tous les domaines.
L'utilisation de transformations CSS, d'autre part, signifierait que vous devez avoir vos divs de forme en arrière-plan, puis superposer le texte réel sur eux dans un autre élément pour que le texte ne soit pas également asymétrique. Encore une fois, la prise en charge du navigateur n'est pas garantie.