Sogar das JsFiddle ist auch nicht sinnvoll (verzerrter Bereich sollte transparent sein)
Diego
Versuche dies:
Zu aufdrehen Verwenden Sie für das Bild ein verschachteltes div für das Bild und geben Sie ihm den entgegengesetzten Skew-Wert. Wenn Sie also 20 Grad auf dem übergeordneten Element hatten, können Sie dem verschachtelten (Bild-) Div einen Skew-Wert von -20 Grad geben.
Die Antwort von @ darthmaim (unten), ein Pseudo (vorher oder nachher) zu verwenden, um die innere Grenze zu verzerren, sollte die akzeptierte Antwort sein. Es sind keine zusätzlichen Wrapper-Elemente erforderlich.
– Clifford Fajardo
26. Juli 2018 um 16:02 Uhr
ÖzgurG
Vielleicht möchten Sie CSS “clip-path” verwenden (funktioniert mit Transparenz und Hintergrund)
Das ist vorbei weit der beste Weg, dies zu tun. Ausgezeichnete Demo; hochgestimmt.
– Obsidianalter
20. September 2021 um 22:50 Uhr
Max Payne
Sie können dies mit transform und transform origins machen.
Das Kombinieren verschiedener Transfromen ergibt ein ähnliches Ergebnis. Ich hoffe, Sie finden es hilfreich. 🙂 Siehe diese Beispiele für einfachere Transformationen. Dies hat einen linken Punkt:
was transform: 0% 50%; tut, indem es den Ursprung auf die vertikale Mitte und die horizontale linke Seite des Elements setzt. Die Perspektive ist also im linken Teil des Bildes nicht sichtbar, sodass es flach aussieht. Der Perspektiveffekt ist am rechten Teil vorhanden, sodass er schräg aussieht.
Das verzerrt leider das Bild
– Skyegill
27. August 2021 um 16:04 Uhr
Ich weiß, dass dies alt ist, aber ich möchte vorschlagen, einen linearen Farbverlauf zu verwenden, um den gleichen Effekt anstelle eines Randversatzes zu erzielen. Dadurch werden alle Inhalte an ihrem ursprünglichen Platz beibehalten.
/* reset */
ul, li, a {
margin: 0; padding: 0;
}
/* nav stuff */
ul, li, a {
display: inline-block;
text-align: center;
}
/* appearance styling */
ul {
/* hacks to make one side slant only */
overflow: hidden;
background: linear-gradient(to right, red, white, white, red);
}
li {
background-color: red;
transform:skewX(-20deg);
-ms-transform:skewX(-20deg);
-webkit-transform:skewX(-20deg);
}
li a {
padding: 3px 6px 3px 6px;
color: #ffffff;
text-decoration: none;
width: 80px;
transform:skewX(20deg);
-ms-transform:skewX(20deg);
-webkit-transform:skewX(20deg);
}
Du versuchst es mit der :before war ziemlich nah, das einzige, was Sie ändern mussten, war die Verwendung von Skew anstelle der Ränder: http://jsfiddle.net/Hfkk7/1101/
Bearbeiten: Ihr Grenzansatz würde auch funktionieren, das einzige, was Sie falsch gemacht haben, war, das Before-Element über Ihrem Div zu haben, sodass der transparente Rand nicht angezeigt wurde. Wenn Sie das Pseudo-Element links von Ihrem div positioniert hätten, hätte auch alles funktioniert: http://jsfiddle.net/Hfkk7/1102/
Das erledigt fast die Arbeit, die ich brauchte, aber hier verzerrt das Verzerren auch das Hintergrundbild, gibt es dafür eine Lösung. Trotzdem +1 hinzugefügt danke 🙂
– Syd
4. November 2013 um 16:54 Uhr
Das erledigt fast die Arbeit, die ich brauchte, aber hier verzerrt das Verzerren auch das Hintergrundbild, gibt es dafür eine Lösung. Trotzdem +1 hinzugefügt danke 🙂
– Syd
4. November 2013 um 16:54 Uhr
8692100cookie-checkCSS3-Transformation Schräglage auf einer Seiteyes