Sie könnten dafür ein Pseudo-Element verwenden. (Beispiel)
%Vor% Positioniere einfach ein Pseudo-Element relativ zum Elternelement. Positioniere es 100%
von top
und verwende eine Kombination aus left:0; right:0
und margin
von auto
für die horizontale Zentrierung. Ändern Sie die Höhe / Breite des Elements entsprechend und ändern Sie margin-top
für den Abstand.
Sie können dies auch mit linear-gradient
tun. Bei dieser Methode wird ein kleines Hintergrundbild mit Farbverläufen erstellt, so dass es für die ersten 25% und die letzten 25% transparent ist, während die restlichen 50% die Farbe haben (so dass es aussieht wie 50% des tatsächlichen h2
-Text). . Dieser Hintergrund wird dann am unteren Rand des Elements positioniert, damit er wie ein unterer Rand aussieht. Die Größe der Grenze kann durch Ändern der Hintergrundgröße variiert werden.
Der Effekt würde auch dann bestehen bleiben, wenn die Textmenge in h2
variiert. Der Hauptnachteil ist jedoch die relativ schlechte Browser-Unterstützung für Gradienten im Vergleich zum Pseudo-Element oder dem Box-Shadow-Ansatz.
Hinweis: Die Verwendung des Skripts in der Antwort dient nur dazu, Browserpräfixe zu vermeiden :)
Fast alle Lösungen, die ich in der Vergangenheit für diesen Effekt gesehen habe, haben sich auf die Positionierung verlassen - aber mit display: flex
können wir das ziemlich einfach erreichen. Das Folgende ist ein Beispiel für eine Überschrift, aber es kann für jedes Element verwendet werden. Bedenke nur, dass die Art von flex-direction: column
alle untergeordneten Elemente stapelt.
HTML
%Vor%CSS
%Vor%Beachten Sie, dass Sie je nach Browserunterstützung Vendor-Präfixe für flex hinzufügen müssen (meist frühere Versionen von IE, natürlich) Ссылка
Tags und Links html css css3 css-shapes