Dieser Trick funktioniert sowohl für horizontale als auch für vertikale Ränder:
/*Horizontal*/
background-image: linear-gradient(to right, black 33%, rgba(255,255,255,0) 0%);
background-position: bottom;
background-size: 3px 1px;
background-repeat: repeat-x;
/*Vertical*/
background-image: linear-gradient(black 33%, rgba(255,255,255,0) 0%);
background-position: right;
background-size: 1px 3px;
background-repeat: repeat-y;
Sie können die Größe mit der Hintergrundgröße und das Verhältnis mit den Prozentsätzen des linearen Verlaufs anpassen. In diesem Beispiel habe ich eine gepunktete Linie mit 1 Pixel Punkten und 2 Pixel Abstand. Auf diese Weise können Sie auch mehrere gepunktete Ränder mit mehreren Hintergründen verwenden.
Probieren Sie es in dieser JSFiddle aus oder sehen Sie sich das Code-Snippet-Beispiel an:
div {
padding: 10px 50px;
}
.dotted {
border-top: 1px #333 dotted;
}
.dotted-gradient {
background-image: linear-gradient(to right, #333 40%, rgba(255, 255, 255, 0) 20%);
background-position: top;
background-size: 3px 1px;
background-repeat: repeat-x;
}
.dotted-spaced {
background-image: linear-gradient(to right, #333 10%, rgba(255, 255, 255, 0) 0%);
background-position: top;
background-size: 10px 1px;
background-repeat: repeat-x;
}
.left {
float: left;
padding: 40px 10px;
background-color: #F0F0DA;
}
.left.dotted {
border-left: 1px #333 dotted;
border-top: none;
}
.left.dotted-gradient {
background-image: linear-gradient(to bottom, #333 40%, rgba(255, 255, 255, 0) 20%);
background-position: left;
background-size: 1px 3px;
background-repeat: repeat-y;
}
.left.dotted-spaced {
background-image: linear-gradient(to bottom, #333 10%, rgba(255, 255, 255, 0) 0%);
background-position: left;
background-size: 1px 10px;
background-repeat: repeat-y;
}
<div>no
<br>border</div>
<div class='dotted'>dotted
<br>border</div>
<div class='dotted-gradient'>dotted
<br>with gradient</div>
<div class='dotted-spaced'>dotted
<br>spaced</div>
<div class='left'>no
<br>border</div>
<div class='dotted left'>dotted
<br>border</div>
<div class='dotted-gradient left'>dotted
<br>with gradient</div>
<div class='dotted-spaced left'>dotted
<br>spaced</div>
Hier ist ein Trick, den ich kürzlich bei einem Projekt verwendet habe, um mit horizontalen Rändern fast alles zu erreichen, was ich will. Ich benutze
<hr/>
jedes Mal, wenn ich einen horizontalen Rand brauche. Die grundlegende Möglichkeit, dieser Stunde einen Rahmen hinzuzufügen, ist ungefähr soWenn Sie jedoch die Kontrolle über die Grenze übernehmen und beispielsweise den Abstand zwischen den Punkten vergrößern möchten, können Sie Folgendes versuchen:
Im Folgenden erstellen Sie Ihren Rahmen (hier ein Beispiel mit Punkten).
Dies bedeutet auch, dass Sie den Punkten, Verläufen usw. Textschatten hinzufügen können. Alles, was Sie wollen ...
Nun, es funktioniert wirklich gut für horizontale Ränder. Wenn Sie vertikale benötigen, können Sie eine Klasse für eine weitere Stunde angeben und die CSS3-
rotation
Eigenschaft verwenden.quelle
Mit reinem CSS ist dies nicht möglich - die CSS3-Spezifikation enthält sogar ein spezielles Zitat dazu:
Sie können jedoch entweder ein Rahmenbild oder ein Hintergrundbild verwenden, das den Trick ausführt.
quelle
border: dotted
, aber es ist möglich, es mit Gradienten zu machen, wie Eagorajoses Antwort gezeigt hat.Dies verwendet den Standard-CSS-Rand und ein Pseudoelement + Überlauf: versteckt. Im Beispiel erhalten Sie drei verschiedene gestrichelte 2-Pixel-Ränder: Normal, Abstand wie 5-Pixel, Abstand wie 10-Pixel. Ist eigentlich 10px mit nur 10-8 = 2px sichtbar.
Auf kleine Elemente mit großen abgerundeten Ecken angewendet, kann dies zu lustigen Effekten führen.
quelle
Beginnen Sie also mit der gegebenen Antwort und wenden Sie die Tatsache an, dass CSS3 mehrere Einstellungen zulässt. Der folgende Code ist nützlich, um eine vollständige Box zu erstellen:
Es ist erwähnenswert, dass die 10px in der Hintergrundgröße den Bereich angibt, den der Strich und die Lücke abdecken. Die 50% des Hintergrund-Tags geben an, wie breit der Strich tatsächlich ist. Es ist daher möglich, auf jeder Randseite Striche unterschiedlicher Länge zu haben.
quelle
In den MDN-Dokumenten finden Sie die verfügbaren Werte für
border-style
:Abgesehen von diesen Auswahlmöglichkeiten gibt es keine Möglichkeit, den Stil des Standardrahmens zu beeinflussen.
Wenn die Möglichkeiten dort nicht nach Ihrem Geschmack sind, Sie könnten CSS3 des verwenden ,
border-image
aber beachten Sie, dass Browser - Unterstützung für diese nach wie vor sehr fleckig.quelle
Erstellen einer 4-Kanten-Lösung basierend auf der Antwort von @ Eagorajose mit Kurzsyntax:
quelle
Dies ist ein altes, aber immer noch sehr relevantes Thema. Die aktuelle Top-Antwort funktioniert gut, aber nur für sehr kleine Punkte. Wie Bhojendra Rauniyar bereits in den Kommentaren hervorhob, erscheinen die Punkte bei größeren (> 2 Pixel) Punkten quadratisch und nicht rund. Ich fand diese Seite auf der Suche nach beabstandeten Punkten , nicht nach beabstandeten Quadraten (oder sogar Strichen, wie einige Antworten hier verwenden).
Darauf aufbauend habe ich verwendet
radial-gradient
. Mit der Antwort von Ukuser32 können die Punkteigenschaften auch problemlos für alle vier Ränder wiederholt werden. Nur die Ecken sind nicht perfekt.Das
radial-gradient
erwartet :Hier wollte ich einen Punkt mit 5 Pixeldurchmesser (2,5 Pixel Radius) mit dem doppelten Durchmesser (10 Pixel) zwischen den Punkten, der sich zu 15 Pixel addiert. Das
background-size
sollte diesen entsprechen.Die beiden Anschläge sind so definiert, dass der Punkt schön glatt ist: festes Schwarz für den halben Radius und dann ein Gefälle zum vollen Radius.
quelle
Dies ist eine wirklich alte Frage, aber sie hat einen hohen Stellenwert bei Google, daher werde ich meine Methode einsetzen, die je nach Ihren Anforderungen funktionieren könnte.
In meinem Fall wollte ich einen dicken gestrichelten Rand, der zwischen den Strichen nur eine minimale Unterbrechung aufweist. Ich habe einen CSS-Mustergenerator verwendet (wie diesen: http://www.patternify.com/ ) verwendet, um ein Muster mit einer Breite von 10 x 1 Pixel zu erstellen. 9px davon sind einfarbig, 1px ist weiß.
In mein CSS habe ich dieses Muster als Hintergrundbild aufgenommen und es dann mithilfe des Attributs "Hintergrundgröße" vergrößert. Am Ende hatte ich einen wiederholten Strich von 20 x 2 Pixel, davon 18 Pixel durchgezogene Linie und 2 Pixel Weiß. Sie könnten es für eine wirklich dicke gestrichelte Linie noch weiter vergrößern.
Das Schöne ist, da das Bild als Daten codiert ist, haben Sie keine zusätzliche externe HTTP-Anforderung, sodass keine Leistungsbelastung entsteht. Ich habe mein Bild als SASS-Variable gespeichert, damit ich es auf meiner Site wiederverwenden kann.
quelle
Kurze Antwort: Das kannst du nicht.
Sie müssen
border-image
Eigenschaft und einige Bilder verwenden.quelle
So viele Leute sagen "Du kannst nicht". Ja, du kannst. Es ist wahr, dass es keine CSS-Regel gibt, um den Rinnenraum zwischen den Strichen zu kontrollieren, aber CSS hat andere Fähigkeiten. Sagen Sie nicht so schnell, dass etwas nicht getan werden kann.
Grundsätzlich ist die Randhöhe (in diesem Fall 5px) die Regel, die die "Breite" der Rinne bestimmt. Natürlich müssten Sie die Farben an Ihre Bedürfnisse anpassen. Dies ist auch ein kleines Beispiel für eine horizontale Linie. Verwenden Sie links und rechts, um die vertikale Linie zu erstellen.
quelle
Ich habe eine Javascript-Funktion erstellt, um Punkte mit einem SVG zu erstellen. Sie können den Punktabstand und die Größe im Javascript-Code anpassen.
quelle
Wenn Sie nur auf moderne Browser abzielen UND Ihren Rand auf ein von Ihrem Inhalt getrenntes Element setzen können, können Sie die CSS-Skalentransformation verwenden, um einen größeren Punkt oder Strich zu erhalten:
Es sind viele Positionsänderungen erforderlich, um die Ausrichtung zu gewährleisten, aber es funktioniert. Durch Ändern der Randdicke, der Startgröße und des Skalierungsfaktors können Sie das gewünschte Verhältnis von Dicke zu Länge erreichen. Das einzige, was Sie nicht berühren können, ist das Verhältnis von Strich zu Lücke.
quelle
scale(8)
Das habe ich getan - benutze ein Bild , gib hier eine Bildbeschreibung ein
quelle
AFAIK gibt es keine Möglichkeit, dies zu tun. Sie könnten einen gestrichelten Rand verwenden oder die Breite des Randes etwas vergrößern, aber mit CSS ist es unmöglich, nur weiter auseinander liegende Punkte zu erhalten.
quelle
Sie können eine Leinwand erstellen (über Javascript) und eine gepunktete Linie darin zeichnen. Innerhalb der Leinwand können Sie steuern, wie lang der Bindestrich und der Abstand dazwischen sein sollen.
quelle