DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Sie können jedem Element „abgerundete Ecken“ geben, indem Sie border-radius über CSS anwenden. Sie werden dies nur bemerken, wenn eine Farbänderung beteiligt ist. Zum Beispiel, wenn das Element eine Hintergrundfarbe oder einen Rand hat, der sich von dem Element unterscheidet, über dem es sich befindet.
.element {
border-radius: 10px;
}
Bestandteileigenschaften
border-radius ist das, was wir eine „Kurzschreibweise“ (shorthand) nennen. Das bedeutet, dass es die folgenden einzelnen Eigenschaften in einer einzigen Deklaration festlegt
border-top-left-radiusborder-top-right-radiusborder-bottom-right-radiusborder-bottom-left-radius
Logische Eigenschaften
Diese werden als „physikalische“ Eigenschaften bezeichnet, da sie den Radius entsprechend der physischen Position der Ecke festlegen (z. B. oben links). Aber border-radius ist Teil der Spezifikation für Logische Eigenschaften und Werte, was bedeutet, dass es logische Entsprechungen der physischen Eigenschaften hat.
| Physikalische Eigenschaft | Logische Eigenschaft |
|---|---|
border-top-left-radius | border-start-start-radius |
border-top-right-radius | border-start-end-radius |
border-bottom-left-radius | border-end-start-radius |
border-bottom-right-radius | border-end-end-radius |
Es ist anfangs etwas verwirrend, aber die Reihenfolge ist wirklich wichtig, besonders wenn man mit border-radius als Kurzschreibweise arbeitet. Die Reihenfolge ist wie folgt, wobei die erste Richtung sich auf die Blockrichtung und die zweite Richtung sich auf die Inline-Richtung bezieht.
| Physikalische Eigenschaft | Logische Eigenschaft |
|---|---|
oben-links | start-start |
oben-rechts | start-end |
unten-links | end-start |
unten-rechts | end-end |
Syntax
border-radius: <length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?
- Anfangswert:
0 - Gilt für: alle Elemente
- Vererbt: nein
- Berechnete Werte: Paar von berechneten <length-percentage> Werten
- Animation: nach berechnetem Wert
Die Eigenschaft border-radius akzeptiert zwischen einem und vier Längen- oder Prozentwerten, wobei ein Wert den Radius für alle vier Ecken auf einmal festlegt, während vier jeden einzelnen Ecke festlegen.
/* Single value */
/* Sets all four corners */
border-radius: 10px;
/* Two values /*
/* top-left and bottom-right top-right and bottom-left */
border-radius: 25% 0;
/* Three values */
/* top-left top-right/bottom-left bottom-right */
border-radius: 1rem 1.5rem 1.25rem;
/* Four values */
/* top-left top-right bottom-right bottom-left */
border-radius: 8px 10px 12px 14px;
/* Global values */
border-radius: inherit;
border-radius: initial;
border-radius: revert;
border-radius: revert-layer;
border-radius: unset;
Wenn wir also einen anderen Radius für die obere linke und die untere rechte Ecke festlegen möchten, aber für die obere rechte und die untere linke Ecke denselben Radius verwenden möchten, können wir die Drei-Wert-Syntax verwenden.
.element {
/* top-left top-right/bottom-left bottom-right */
border-radius: 5px 20px 5px;
background: #BADA55;
}
Elliptische Rundung (/)
Sie können auch die Radien angeben, mit denen die Ecke gerundet wird. Mit anderen Worten, die Rundung muss nicht perfekt kreisförmig sein, sie kann elliptisch sein. Dies geschieht mit einem Schrägstrich (/) zwischen zwei Werten.
.element {
border-radius: 10px / 30px; /* horizontal radius / vertical radius */
}
Hinweis: Firefox unterstützt elliptische Ränder erst ab Version 3.5+. Ältere WebKit-Browser (z. B. Safari 4 und älter) behandeln 40px 10px fälschlicherweise genauso wie 40px / 10px.
Werte
Die Eigenschaft border-radius kann jede gültige CSS-Längeneinheit akzeptieren. Das bedeutet, dass alles von px, rem, em, ch, vh, vw und einer ganzen Reihe anderer Einheiten zulässig ist.
Sie können den Wert von border-radius in Prozent angeben. Dies ist besonders nützlich, um eine kreisrunde oder elliptische Form zu erstellen, kann aber jederzeit verwendet werden, wenn Sie möchten, dass border-radius direkt mit der Breite des Elements korreliert.
.element {
border-radius: 50%;
width: 200px;
}
Hinweis: In Safari werden Prozentwerte für border-radius nur ab Version 5.1+ unterstützt. In Opera nur ab Version 11.5+.
Haken und Ösen (Gotchas)
Es gibt ein paar Dinge, auf die Sie bei der Arbeit mit der Eigenschaft border-radius achten sollten.
Abgeschnittene Hintergrundbilder
Wenn das Element ein Hintergrundbild hat, wird es an der abgerundeten Ecke natürlich abgeschnitten.
.element {
border-radius: 20px;
background: url(bglines.png); /* will get clipped */
}
Hintergrundfarbbereich (Background color bleed)
Manchmal kann man sehen, wie eine background-color außerhalb eines Rahmens „austritt“, wenn border-radius vorhanden ist (hier ist ein perfektes Beispiel). Um dies zu verhindern, verwenden Sie die CSS-Eigenschaft background-clip.
.element {
border-radius: 10px;
/* Prevent background color leak outs */
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
Überlappende Border-Radien
Jay Sitter hat abgedeckt, was passiert, wenn der Wert eines Eckradius so groß ist, dass er den Radius eines anderen Eckradius überlappt. Wie in diesem Beispiel, wo wir auf der rechten Seite eine „Pillen“-Form mit geringerer Rundung links anstreben.
Wir setzen einen Radius von 40px auf die obere linke und untere linke Ecke. Warum sind sie dann so eckig? Das liegt daran, dass der Wert 999em der beiden anderen Ecken sie überdeckt. Jay geht tief in die Mathematik dahinter ein und wie man verhindert, dass es passiert. Es lohnt sich also, seinen Artikel für mehr Kontext zu lesen.
Demo
Browser-Unterstützung
Diese Daten zur Browserunterstützung stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl bedeutet, dass der Browser das Feature ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 4* | 3* | 9 | 12 | 3.1* |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 2.1* | 3.2* |
Es ist jetzt unnötig, aber für die absolut beste Browserunterstützung könnten Sie die Eigenschaft mit -webkit- und -moz- präfixieren, um sicherzustellen, dass ältere Browser mitmachen können.
.element {
/* Safari 3-4, iOS 1-3.2, Android 1.6- */
-webkit-border-radius: 12px;
/* Firefox 1-3.6 */
-moz-border-radius: 12px;
/* Opera 10.5, IE 9, Safari 5, Chrome, Firefox 4, iOS 4, Android 2.1+ */
border-radius: 12px;
}
Beachten Sie die Reihenfolge dieser Eigenschaften: Zuerst werden die Vendor-Präfixe aufgeführt und dann die nicht präfixierte „Spec“-Version. Das ist die richtige Vorgehensweise. Border-Radius ist ein besonders gutes Beispiel dafür, warum wir es so machen. In einer etwas komplizierteren Version der Verwendung von border-radius (bei der Sie zwei Werte statt einem übergeben), würde das ältere -webkit- Vendor-Präfix etwas völlig anderes tun als die „Spec“-Version. Wenn wir also blind die gleichen Werte für alle drei Eigenschaften kopieren und einfügen, können wir browserübergreifend unterschiedliche Ergebnisse erzielen. Für die meiste Konsistenz auf lange Sicht ist es am besten, die „Spec“-Version zuletzt aufzuführen.
Heutzutage ist es ziemlich realistisch, Präfixe wegzulassen und einfach nur vanilla border-radius zu verwenden, wie hier besprochen.
Hier ist jede einzelne Eigenschaft, mit Vendor-Präfixen
.element {
-webkit-border-top-left-radius: 1px;
-webkit-border-top-right-radius: 2px;
-webkit-border-bottom-right-radius: 3px;
-webkit-border-bottom-left-radius: 4px;
-moz-border-radius-topleft: 1px;
-moz-border-radius-topright: 2px;
-moz-border-radius-bottomright: 3px;
-moz-border-radius-bottomleft: 4px;
border-top-left-radius: 1px;
border-top-right-radius: 2px;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 4px;
}
Jeder dieser Werte kann auch ein leerzeichengetrennter Wert sein, wie z. B. 5px 10px, was sich genauso verhält wie ein schrägstrichgetrennter Wert in der Kurzschreibweise (<horizontal-radius> [Leerzeichen] <vertical-radius>).
Schönes Tutorial!
Ist das aktuell? Ich sehe kein Post-Datum.
Aber egal. Schönes Tutorial!
;)
;)
:)
;)
Das war wirklich klassisch.. Danke
Sie sehen auf Android 2.2 und 2.2.1 überhaupt nicht gut aus. Der Standardbrowser.
Ihre Website wird nicht einmal geladen, Kumpel
Hallo,
Ich brauchte tatsächlich einen Trick, um den border-radius im Android-Browser weicher aussehen zu lassen. Ich habe mir diese einfache, aber effektive Lösung ausgedacht. Ich habe einfach box-shadow wie unten gezeigt zu meiner CSS-Klasse hinzugefügt.
-webkit-box-shadow: 0 0 1px #000;
Die x- und y-Position des Schattens sind 0, sodass der Schatten zentriert ist. Wir müssen nur den Weichzeichnerwert anpassen und ihn 1px (je nach Bedarf) über die Kanten der Ecken erweitern, damit sie weicher aussehen. Natürlich muss die Schattenfarbe dieselbe sein wie die Hintergrund-/Randfarbe Ihres abgerundeten Elements...
Es gibt ein kleines Problem, wenn man diese Codezeile zu seinem CSS hinzufügt: Ja... sie wird alle -webkit-Browser ansprechen und den border-radius (leicht) weniger scharf aussehen lassen.
Wenn Sie zu den Designern gehören, die kleine Kompromisse eingehen können, sollte es für Sie so funktionieren. Aber wenn Sie ein pingeliger Freak sind wie ich, sollten Sie unbedingt einen Weg finden, Ihr CSS auf bestimmte Geräte auszurichten.
Zum Zeitpunkt, an dem ich dies schreibe, habe ich noch keine perfekte Lösung gefunden, aber Sie können Medienabfragen gut nutzen, indem Sie die Regel entweder mit der Eigenschaft 'max-width' (um den Gerätebereich basierend auf ihrer Bildschirmbreite zu begrenzen, um zumindest WebKit-Desktop-Browser auszuschließen) oder mit '-webkit-device-pixel-ratio', um die verschiedenen Android-Geräte basierend auf ihrer Pixeldichte anzusprechen.
@media only screen and (-webkit-device-pixel-ratio:.75){
/* für Android-Layouts mit niedriger Dichte (ldpi) */
}
@media only screen and (-webkit-device-pixel-ratio:1){
/* für Android-Layouts mit niedriger Dichte (ldpi) */
}
@media only screen and (-webkit-device-pixel-ratio:1.5){
/* für Android-Layouts mit niedriger Dichte (ldpi) */
}
Beste Grüße und viel Spaß beim Designen für alle. Ich hoffe, ich habe einigen verzweifelten, von Android border-radius besessenen Designern geholfen ;)
Schön. Danke für die Hilfe :)
Wenn Sie die Kommentare noch lesen, würde ich gerne wissen, warum das auf meiner Website nicht funktioniert. Ich habe ein Dropdown-Menü unter „Fotos“ und wie man sehen kann, sind die Ecken beim ersten Hover abgerundet, aber dann werden sie wieder quadratisch. Ich sehe keine Fehler in der Art und Weise, wie ich die Ecken formatiert habe, und seltsamerweise hat es funktioniert, bis ich die Randfarbe geändert habe, dann hörte es auf.
http://danielpaymar.com
css ist
mainMenu.ddsmoothmenu ul li ul{
}
Schönes Tutorial. Passend erklärt. Sie sind über die meisten anderen Tutorials hinausgegangen und haben Dinge erklärt, von denen andere nur träumen. Danke.
Das ist ja der absolute Hammer, den Sie da haben.
Schönes Tut übrigens
danke
Hallo ,
Ich versuche, border-radius auf ein div anzuwenden, das einen Rand mit Farbverlauf hat.
Aber es erlaubt mir nicht, border-radius anzuwenden.
Unten ist mein Code-Schnipsel.
.border:nth-child(1) {border-image: -webkit-linear-gradient(#000, #fff) 14% 14% 14% 14% stretch; }
.border{ border-radius:15px; -webkit-border-radius:15px; }
.border {display: inline;float: left;margin: 15px;position: relative;border-width: 20px;width: 160px;height: 160px;}
Lorem Ipsum
wie unterstützt IE 6,7,8 Browser.
bitte posten Sie Ihre Kommentare
OMG, diese grüne Farbe, die im Beispiel verwendet wird, ist „BADASS“ in Hex-Wert!!! – #BADA55
Danke für das Tutorial!
Gibt es eine Möglichkeit, auf den von
border-radiusabgeschnittenen „Weißraum“ zuzugreifen?z. B. um seine Farbe anders als den Hintergrund zu ändern.
Danke für ein weiteres großartiges Tutorial!
Ich habe gerade das Gelernte aufgegriffen und es noch weiter verbessert, um abgerundete Ecken bei responsiven Bildern proportional zu halten.
Ein Randradius von 15 px bei 100 % auf einem quadratischen Bild wäre
border-radius: 5%
Um dasselbe bei einem Bild von 300 x 650 Pixel zu erreichen, wäre es
border-radius: 2,31%/5%
Dies wird berechnet, indem der Pixelradius durch die Breite und Höhe geteilt wird. Die Ecke wird perfekt abgerundet und bleibt proportional zur Bildgröße, wenn sie skaliert wird.
Das ist genau das, was ich gesucht habe. Vielen Dank!
Der Autor sollte diesen Kommentar in den Artikel aufnehmen.
Hallo Chris, ich schätze deine Arbeit und die Hilfe, die du anbietest, sehr. Ich hoffe, du kannst mir bei diesem hier helfen... Ich arbeite schon seit einiger Zeit an runden Ecken und habe ein Problem mit Bildern im Hintergrund eines Divs und runden Ecken mit Opazitätswerten für den Rand. Es funktioniert in Firefox, aber Safari zeigt das Bild immer bis zum äußeren Rand an. Hast du eine Idee, wie man das beheben kann?
Hier ist der Code
div { height:250px; width:250px; background-image:url(image.jpg);}
.round {
border-radius: 60px; /* Verhindert, dass die Hintergrundfarbe austritt */
border: 20px solid rgb(18, 50, 51);
border: 20px solid rgba(18, 50, 51, 0.9);
-webkit-background-clip: padding-box; /* für Safari */
-moz-border-radius:360px; /* Firefox – alte Syntax */
}
bitte, funktioniert dasselbe CSS auch für Hintergrundbilder, und wenn ja, wie!
Die Verwendung von Prozenten ist perfekt für einen responsiven CSS-Kreis, aber die Tatsache, dass es unter iOS 5.0 nicht funktioniert, ist ein Problem, mit dem ich zu kämpfen habe.
Gibt es eine gute Problemumgehung für den mangelnden Support für Border Radius Prozentsätze die Sie bemerkt haben, insbesondere in Bezug auf die Entwicklung responsiver Websites?
Es funktioniert nicht in IE9
Vielen Dank
Es gibt einen Fehler im Standard-Android-Browser des Samsung Galaxy S4. Sie müssen
anstelle von
http://stackoverflow.com/questions/17944749/border-radius-style-doesnt-work-in-android-browser
wie sieht es mit IE8 aus
Fantastisch... Danke
Fantastisch!, danke.
padding: 5px 0 5px 5px;
width: 100%;
background-color: rgb(73, 180, 31);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
Wenn ich Padding in mein Div einfüge, verliert es die abgerundete Ecke, nur die beiden linken Ecken sind abgerundet und die rechten Ecken bleiben quadratisch. Wie kann ich dafür sorgen, dass alle meine Ecken abgerundet sind?
Ich sehe diesen Beitrag auf meinem Handy Samsung Galaxy Y Android v.2.3 und alle Beispiele sehen gut aus, aber wenn ich border-radius auf meiner Website verwende, sieht das Bild quadratisch aus, ich bin verwirrt, ich verstehe nicht, was passiert, ich wende border radius direkt auf das Bildelement an... Irgendwelche Ideen?
das ist mein css
img{
-webkit-border-radius:50%;
-moz-border-radius:50%;
border-radius: 50%;
-webkit-box-shadow: 0px 0px 7px 0px rgba(119, 119, 119, 0.5);
-moz-box-shadow: 0px 0px 7px 0px rgba(119, 119, 119, 0.5);
box-shadow: 0px 0px 7px 0px rgba(119, 119, 119, 0.5);
}
Einfach und schlicht. Ja
Hallo
Das funktioniert gut, aber border-radius kann auf keinem Canvas-Element in irgendeinem nativen Samsung S2 / S4-Browser verwendet werden.
Mit freundlichen Grüßen,
Iskren
Schauen Sie sich CanIUse.com an – dort sehen Sie, mit welchen Browsern der Code funktioniert und mit welchen Versionen.
Vielen Dank vielmals...
wow
Gibt es eine Möglichkeit, den border-radius basierend auf einer Keyframe-Animation zu ändern? Zum Beispiel bei 20% Radius 5%, 50% = 20%, 75% = 30%, 100% = 50%...
Absolut!
Hallo Leute!
Ich wollte euch nur für eure enormen Anstrengungen danken, die Css-tricks zu einer der besten Referenzen für CSS und Frontend-Entwicklung im Web gemacht haben.
http://mirchu.net/material-design-icons/ its help full for u.. css material design icons
thank you, this is so helpful. xx
Great, and it’s badass color man.
I’m glad I wasn’t the only one who noticed
Now the modern browsers almost support border-radius with single line instead of prefix (-webkit, -moz, -o) and I think we should partially remove prefix for future projects, one more thing that if you are still interested in shape and prefix CSS, let make it easier to set by dropping by my webtool
http://mystorage.biz/
Then give me your opinion.
Danke
Thanks a lot. very helpful
Really It’s Super And So Helpful. Thanks
Currently browsing in an Android 2.0.2 native’s browser (this is a really un-updated browser, would not evem handdle any transition at all, bugging most of the pages with an add banner on top). Surprisingly, box shadows seems to work in all cases except when.there’s a percentage value. I will try with the -webkit- prefix and will post if that’s working. Ps: nice read, thanks for the quality content.
I meant border radius, not box shadows :-
Thanks so much!!!!!! :) I used border-radius: 0px 50px 50px 0px; and Work it!
Thank you, it’s great tutorial. You can see the css results by using the border-radius builder on this page: https://css-tools.com/border-radius
I really don’t understand the reasoning for the rules for 2 values. Why not match padding and margins? 2 values = top and bottom.
When we give two values in border-color then first one get applied to top and bottom and second value get
applied to right and left. You have mentioned that wrong. Please check that.
When using border radius some time sharp border shows. how to fix as smooth border?
I have a challenge : Make border-radius scale nicely by a factor relative to the width of the container keeping the circle aspect even on rectangle elements (I mean keeping them from ‘going’ elliptical)
✨ Ana’s got you covered: https://css-tricks.de/various-methods-for-expanding-a-box-while-preserving-the-border-radius/
Hallo,
I wonder if there is a way to give a div a border with a pointy end.
So like this
| \
|______/
Is there a way to do this in HTML?