Wie wird die Rahmenbreite eines Elements in Prozent festgelegt? Ich habe die Syntax ausprobiert
border-width:10%;
Aber es funktioniert nicht.
Der Grund, warum ich border-width
Prozentsätze festlegen möchte, ist, dass ich ein Element mit width: 80%;
und habe height: 80%;
und dass das Element das gesamte Browserfenster abdeckt. Daher möchte ich alle Rahmen auf 10% festlegen. Ich mache dies nicht mit der Zwei-Elemente-Methode, bei der eines hinter dem anderen positioniert wird und als Rand fungiert, da der Hintergrund des Elements transparent ist und das Positionieren eines Elements dahinter die Transparenz beeinträchtigen würde.
Ich weiß, dass dies über JavaScript möglich ist, aber ich suche nach einer CSS-Methode, wenn möglich.
border-width
unterstützt keinen Prozentsatz als Wert. Sie können em, px, ex usw. verwenden. Aber warum möchten Sie einen Wertborder-width
von 10% festlegen ?Antworten:
Border unterstützt keinen Prozentsatz ... aber es ist immer noch möglich ...
Wie andere auf die CSS-Spezifikation hingewiesen haben , werden Prozentsätze an den Grenzen nicht unterstützt:
Wie Sie sehen , es sagt Prozentwerte : N / A .
Lösung ohne Skript
Sie können Ihre prozentualen Ränder mit einem Wrapper-Element simulieren, wo Sie:
background-color
auf die gewünschte Rahmenfarbe einpadding
in Prozent fest (weil sie unterstützt werden).background-color
auf Weiß (oder was auch immer es sein muss)Dies würde irgendwie Ihre prozentualen Grenzen simulieren. Hier ist ein Beispiel eines Elements mit 25% Breiter Seitengrenzen , die diese Technik verwendet.
Im Beispiel verwendetes HTML
Problem: Sie müssen sich bewusst sein, dass dies viel komplizierter ist, wenn auf Ihr Element ein komplexer Hintergrund angewendet wird ... Insbesondere, wenn dieser Hintergrund von der DOM-Hierarchie der Vorfahren geerbt wird. Wenn Ihre Benutzeroberfläche jedoch einfach genug ist, können Sie dies auf diese Weise tun.
Skriptlösung
@BoltClock erwähnte eine Skriptlösung, mit der Sie die Rahmenbreite programmgesteuert anhand der Elementgröße berechnen können.
Dies ist ein solches Beispiel mit einem extrem einfachen Skript, das jQuery verwendet.
Sie müssen sich jedoch bewusst sein, dass Sie die Rahmenbreite jedes Mal anpassen müssen, wenn sich Ihre Containergröße ändert (dh die Größe des Browserfensters ändert ). Meine erste Problemumgehung mit dem Wrapper-Element scheint viel einfacher zu sein, da die Breite in diesen Situationen automatisch angepasst wird.
Die positive Seite der Skriptlösung ist, dass sie nicht unter Hintergrundproblemen leidet, die in meiner vorherigen Lösung ohne Skript erwähnt wurden.
quelle
set your elements background-color to white (or whatever it needs to be)
Es ist halbtransparent, um das Hintergrundbild anzuzeigen. Die Verwendung eines anderen Elements zerstört den Zweck.border-left-color: green
)Sie können auch verwenden
ODER
quelle
Dies ist also eine ältere Frage, aber für diejenigen, die noch nach einer Antwort suchen, ist die CSS-Eigenschaft Box-Sizing hier von unschätzbarem Wert:
Dies bedeutet, dass Sie die Breite des Div auf einen Prozentsatz festlegen können und jeder Rand, den Sie dem Div hinzufügen, in diesem Prozentsatz enthalten ist. So würde beispielsweise das Folgende den 1px-Rand an der Innenseite der Breite des div hinzufügen:
Wenn Sie weitere Informationen wünschen : http://css-tricks.com/box-sizing/
quelle
Prozentwerte gelten nicht für
border-width
CSS. Dies ist in der Spezifikation aufgeführt .Sie müssen JavaScript verwenden, um den Prozentsatz der Breite des Elements oder die benötigte Längenmenge zu berechnen und das Ergebnis in
px
oder ähnlich den Rahmen des Elements anzuwenden .quelle
Sie können sie als Prozentsatz anstelle von Pixeln verwenden.
Beispiel:
quelle
Moderne Browser unterstützen vh- und vw-Einheiten , die einen Prozentsatz des Fensteransichtsfensters ausmachen.
Sie können also reine CSS-Rahmen als Prozentsatz der Fenstergröße verwenden:
Probieren Sie dieses Beispiel aus und ändern Sie die Fensterbreite. Der Rand ändert seine Dicke, wenn sich die Größe des Fensters ändert.
box-sizing: border-box;
kann auch nützlich sein.quelle
Box-
Größe Stellen Sie die Box-Größe auf Rahmen ein
box-sizing: border-box;
und stellen Sie die Breite auf 100% und eine feste Breite für den Rand ein. Fügen Sie dann eine Mindestbreite hinzu, damit bei einem kleinen Bildschirm der Rand nicht den gesamten Bildschirm überholtquelle
Sie können einen benutzerdefinierten Rahmen mithilfe einer Spanne erstellen. Erstellen Sie eine Spanne mit einer Klasse (Angabe der Richtung, in die der Rand verläuft) und einer ID:
Dann gehen Sie auf Sie CSS und stellen Sie die Klasse
position:absolute
,height:100%
(für vertikale Grenzen),width:100%
(für horizontale Grenzen),margin:0%
undbackground-color:#000000;
. Fügen Sie alles hinzu, was noch nötig ist:Dann die ID festgelegt , dass entspricht
class="VerticalBorder"
auftop:0%;
,left:0%;
,width:1%;
(Da die Breite des MDiv auf die Breite des mheader bei 100% gleich ist, wird die Breite 100% von dem , was Sie es einrichten. Wenn Sie die Breite auf 1% gesetzt die Der Rand beträgt 1% der Fensterbreite. Stellen Sie die ID ein, die demclass="HorizontalBorder"
to entsprichttop:99%
(Da es sich in einem Kopfzeilencontainer befindet, bezieht sich die Oberseite auf die Position, in der es sich gemäß der Kopfzeile befindet. Diese + Höhe sollte sich zu 100% addieren, wenn Sie möchten, dass sie die Unterseite erreicht)left:0%;
undheight:1%
(Da die Höhe des mdiv 5-mal größer ist als die Höhe des mheader [100% = 100, 20% = 20, 100/20 = 5], beträgt die Höhe 20% der von Ihnen eingestellten Höhe. Wenn Sie die Höhe einstellen bis 1% beträgt der Rand 0,2% der Fensterhöhe. So wird es aussehen:HAFTUNGSAUSSCHLUSS: Wenn Sie die Größe des Fensters auf eine ausreichend kleine Größe ändern, verschwinden die Ränder. Eine Lösung wäre, die Größe des Rahmens zu begrenzen, wenn die Größe des Fensters auf einen bestimmten Punkt geändert wird. Folgendes habe ich getan:
Wenn Sie alles richtig gemacht haben, sollte es so aussehen, wie es in diesem Link ist: https://jsfiddle.net/umhgkvq8/12/ Aus irgendeinem Grund verschwindet der Rand in jsfiddle, aber nicht, wenn Sie ihn in einem Browser starten .
quelle
Schauen Sie sich die calc () - Spezifikation an . Hier ist ein Anwendungsbeispiel:
quelle