Kombinieren von Rand oben, Rand rechts, Rand links, Rand unten in CSS


72

Gibt es eine Möglichkeit, Border-Top, Border-Right, Border-Left, Border-Bottom in CSS wie einen Super-Shorthand-Stil zu kombinieren?

z.B:

border: (1px solid #ff0) (2px dashed #f0F) (3px dotted #F00) (5px solid #09f);

Antworten:


142

Nein, Sie können nicht alle in einer einzigen Anweisung festlegen.
Im allgemeinen Fall benötigen Sie mindestens drei Eigenschaften:

border-color: red green white blue;
border-style: solid dashed dotted solid;
border-width: 1px 2px 3px 4px;

Das wäre jedoch ziemlich chaotisch. Mit vier wäre es besser lesbar und wartbar:

border-top:    1px solid  #ff0;
border-right:  2px dashed #f0F;
border-bottom: 3px dotted #f00;
border-left:   5px solid  #09f;

Danke, ich kann damit erstellen, was ich wollte.
— Starx

3
Dies funktioniert sehr gut, wenn Sie versuchen, einen Rand nur oben und unten anzuzeigen: Rahmenstil: fest; Randbreite: 1px 0;
— BananaNeil

Möglicherweise möchten Sie die Semikolons in Ihrem zweiten Snippet hinzufügen.
— Kytwb

Gibt es eine Möglichkeit, alles in einer Zeile zu kombinieren?
— Inyee

19

Ihr Fall ist extrem, aber hier ist eine Lösung für andere, die zu einem häufigeren Szenario passt, bei dem weniger als 4 Ränder genau gleich gestaltet werden sollen.

border: 1px dashed red; border-width: 1px 1px 0 1px;

das ist etwas kürzer und vielleicht leichter zu lesen als

border-top: 1px dashed red;  border-right: 1px dashed red; border-left: 1px dashed red;

oder

border-color: red; border-style: dashed; border-width: 1px 1px 0 1px;

Ihre erste Codezeile ist meiner Meinung nach die bessere Option und spart viele Bytes, insbesondere in großen CSS-Dateien mit vielen Rändern.
— Envayo

4

Ich kann mich auf das Problem beziehen, es sollte eine Abkürzung geben wie ...

border: 1px solid red top bottom left;

Das funktioniert natürlich nicht! Kobis Antwort brachte mich auf eine Idee. Angenommen, Sie möchten oben, unten und links, aber nicht rechts. Anstatt border-top: border-left: border-bottom: (drei Anweisungen) zu machen, könnten Sie zwei davon so machen, die Null wird auf der rechten Seite gelöscht.

border: 1px dashed yellow;
border-width:1px 0 1px 1px;

Zwei statt drei Aussagen, kleine Verbesserung :-D


0

Nein, Sie können sie nicht als einzelne festlegen, wenn Sie beispielsweise div {border-top: 2px solid red; Rand rechts: 2px durchgehend rot; Rand unten: 2px durchgehend rot; Rand links: 2px durchgehend rot; } gleiche Eigenschaften für alle vier, dann können Sie sie in einer Zeile festlegen

div{border:2px solid red;}

7
Glaubst du nicht, dein Punkt wird bereits von anderen Antworten beantwortet?
— Starx

-6

Oder wenn alle Ränder den gleichen Stil haben, einfach:

border:10px;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.