So erstellen Sie den Randabstand in CSS

7

Wie kann ich Grenzecke mit CSS wie im folgenden Bild erstellen? Die Höhe des Inhalts ist nicht festgelegt.

    
Radian 02.09.2015, 15:12
quelle

4 Antworten

4

Verwenden Sie border-image :

Wir können border-image verwenden, um% zuzuweisen. co_de% als Randbild auf allen vier Seiten. Wir benötigen ein Pseudo-Element (das den übergeordneten Container überlappt), weil der Gradient nur in eine Richtung gehen kann. Farbverläufe können prozentbasierte Werte unterstützen und können sich daher an unterschiedliche Containerabmessungen anpassen. Dies kann überprüft werden, indem Sie im Schnipsel auf die linear-gradient zeigen.

Der Hauptnachteil dieses Ansatzes ist, dass die Eigenschaft div geringe Browserunterstützung hat. Aber es ist ziemlich nützlich, wenn nur IE11 + unterstützt werden muss, denn im Gegensatz zu border-image benötigt es keine festen Dimensionen, ist nicht so komplex wie box-shadow und hinterlässt auch ein Ersatz-Pseudo-Element für andere potentielle Verwendung.

%Vor% %Vor%

Verwenden Sie clip-path :

Wir können die background-image verwenden, um% zuzuweisen. co_de% als Randbild auf allen vier Seiten. Wir benötigen ein Pseudo-Element (das den übergeordneten Container überlappt), weil der Gradient nur in eine Richtung gehen kann. Farbverläufe können prozentbasierte Werte unterstützen und können sich daher an unterschiedliche Containerabmessungen anpassen. Dies kann überprüft werden, indem Sie im Schnipsel auf die background-image zeigen.

Der Nachteil dieses Ansatzes ist auch dem vorherigen in dem Sinne sehr ähnlich, dass linear-gradient nur unterstützt wird von IE10 +. Vorteile sind die gleichen wie für den früheren erwähnt.

%Vor% %Vor%
    
Harry 08.09.2015, 07:22
quelle
9

Sie können es nicht mit border machen, aber Sie können dies mit after und box-shadow s

erreichen

sehen Sie mehr über after und box-shadow

%Vor% %Vor%

Wenn Sie relative Höhe verwenden möchten, müssen Sie den unteren Rand entfernen oder Sie können jquery verwenden, um die Position von box-shadow

zu ändern

Hinweis: Ich habe contenteditable dem div gegeben, um die Änderung zu sehen, wenn mehr Inhalt hinzugefügt wird

%Vor% %Vor%

Bearbeiten: Dies kann die Breite und Höhe nach Ihren Bedürfnissen ändern Ich habe die Idee Idee von misterMansam wunderbare Antwort

%Vor% %Vor%
    
Akshay 02.09.2015 15:16
quelle
5

Ich gebe zu, dieser Ansatz ist verrückt, aber - als ein Experiment - wenn Sie nur modernen Browser unterstützen und Sie spielen ein wenig (*) mit clip-path -Eigenschaft (zum Abschneiden der Ecken) Sie könnte das versuchen:

Ссылка

%Vor%

Einige Werte sind in Prozent, deshalb sind vertikale Linien im höheren div kürzer (dies kann sowieso mit festen Werten gelöst werden), aber wie Sie sehen können, ist die Höhe in der Lösung nicht beteiligt. Ein weiterer Vorteil dieses Ansatzes ist die Reaktionsfähigkeit (versuchen Sie, das Ausgabefenster des Codepechs zu strecken)

(*) : Ich habe gelogen. es ist nicht wirklich nur "ein bisschen" :)

    
fcalderan 02.09.2015 15:40
quelle
4

Flexibel an allen vier Seiten

  • Das :before Pseudo-Element erstellt den linken und rechten Rand
  • Das :after pseudo-Element erstellt den oberen und unteren Rand
  • Der Abstand der Ränder wird mit top , right , bottom und left gesteuert (wenn sowohl eine linke als auch eine rechte Eigenschaft das Element zwischen ihnen dehnt, so wie oben und unten)

Die Ränder bleiben immer die angegebene Versatzdistanz.

Hier ist eine gute Möglichkeit, um zu visualisieren, wie die Pseudo-Elemente angeordnet sind:

Beispiel

%Vor% %Vor%
    
misterManSam 02.09.2015 15:41
quelle

Tags und Links