Der Kunde wünscht sich zwei Farbränder für einen geprägten Look. Kann ich das an einem Element tun? Ich hatte gehofft, nicht zwei DOM-Elemente mit einzelnen Rändern zu stapeln.
Ja: Verwenden Sie die outlineEigenschaft; Es fungiert als zweite Grenze außerhalb Ihrer Grenze. Achtung, es kann auf wackelige Weise mit Rändern, Polstern und Schlagschatten interagieren. In einigen Browsern müssen Sie möglicherweise auch ein browserspezifisches Präfix verwenden. um sicherzustellen, dass es es aufgreift: -webkit-outlineund dergleichen (obwohl WebKit dies insbesondere nicht benötigt).
Dies kann auch nützlich sein, wenn Sie die Gliederung für bestimmte Browser verwerfen möchten (z. B. wenn Sie die Gliederung mit einem Schlagschatten kombinieren möchten; in WebKit befindet sich die Gliederung innerhalb des Schattens; in FireFox ist dies der Fall Dies -moz-outline: 0ist nützlich, um sicherzustellen, dass Sie keine knorrige Linie um Ihren schönen CSS-Schlagschatten erhalten.
Bearbeiten: Einige Leute haben bemerkt, dass outlinemit IE <8 nicht gut zusammenpasst. Während dies wahr ist; IE <8 zu unterstützen, ist wirklich nichts, was Sie tun sollten.
-1 für "IE <8 zu unterstützen ist wirklich nichts, was Sie tun sollten". IE6 wird möglicherweise nicht unterstützt. Aber IE7 nicht zu unterstützen ist lächerlich, keine Site mit einem nicht-technischen Publikum kann sich das leisten
Pekka
6
outlinegibt es seit CSS2.
BoltClock
156
+1 für die Nichtunterstützung von IE 7, während Ihre Site in IE 7 immer funktionieren und einigermaßen gut aussehen sollte, ist keine vollständige Unterstützung erforderlich. vor allem, wenn es nur ein zweifarbiger Rand ist. Ich persönlich benutze Box-Shadow und andere 'erweiterte' Funktionen. IE7 kann keinen Kastenschatten sehen, ... große Sache. Es gibt keinen Grund, eine weniger geeignete, übermäßig komplizierte oder sogar veraltete Lösung zu verwenden, um nur die Macken des IE7 zu umgehen.
Marian Theisen
2
Siehe auch diese Referenz für gute Zugänglichkeitsgründe, um die Gliederungseigenschaft NICHT für Entwurfszwecke zu hacken: Outlininenone.com
Joel Glovier
11
Ein Wort der Vorsicht, outlineist weniger vielseitig als border. Insbesondere sagt W3C : "Hinweis. Der Umriss ist auf allen Seiten gleich. Im Gegensatz zu Rändern gibt es keine Eigenschaft " Umriss oben "oder" Umriss links " ." (Hervorhebung von mir.)
Bob Stein
68
Das ist sehr gut möglich. Es dauert nur ein wenig CSS-Trick!
In der Tat ist es schwierig, aber es verschlechtert sich anmutig und funktioniert sogar mit dem Aktienbrowser meines HTC (Android)! Wenn Sie verwenden border-radius, versuchen Sie , den Radius des inneren Randes um ein Pixel zu verringern, damit die Lücke zwischen den beiden abgerundeten Rändern nahezu unbemerkt bleibt.
Grippe
Das ist nett. Verwenden für mich bottom:1pxeher als height:100%besser für nur einen unteren Rand gearbeitet :)
Nick
Wenn Sie eine Polsterung für die haben div.border, habe ich festgestellt, dass das Hinzufügen eines negativen Randes mit den gleichen Abmessungen für die dazu div.border:beforebeigetragen hat, dass alles inline bleibt. Vielleicht gibt es einen besseren Weg, es zu tun? jsFiddle
NW Tech
+1 für die Verwendung von Pseudoelementen. Ich denke, diese Antwort ist besser als die von Williham Totland
Haben Sie die verschiedenen Rahmenstile ausprobiert, die in der CSS-Spezifikation verfügbar sind? Es gibt bereits zwei Rahmenstile, die Ihren Anforderungen entsprechen könnten:
Funktioniert gut, aber nur, wenn Sie Inhalte mit Hintergrund haben.
Culme
4
Wenn Sie mit "Prägen" zwei Ränder mit zwei verschiedenen Farben umeinander meinen, gibt es die outlineEigenschaft ( outline-left,outline-right ....), die jedoch in der IE-Familie schlecht unterstützt wird (dh IE6 und 7 unterstützen sie überhaupt nicht) ). Wenn Sie zwei Ränder benötigen, ist ein zweites Wrapper-Element in der Tat am besten.
Wenn Sie zwei Farben am selben Rand verwenden möchten. Verwenden Sie z
border-right:1px white solid;
border-left:1px black solid;
border-top:1px black solid;
border-bottom:1px white solid;
Auch hierfür gibt es spezielle border-styles( ridge, outsetund inset), die meiner Erfahrung nach jedoch von Browser zu Browser unterschiedlich sind.
Ich glaube, was er fragt, ist so etwas wie border : black white; das Definieren von zwei verschiedenen Farben für einen Rand, der gleichzeitig sequentiell aussieht.
Tarik
1
@Braveyard ah, ich verstehe. Das wäre theoretisch möglich, outlineaber es wird nicht gut funktionieren in IE <8
Pekka
3
Beachten Sie, dass es nur Umrisse gibt ... es gibt leider keine Umrisse links, Umrisse rechts, Umrisse oben oder Umrisse unten.
David Sherret
-1
Nicht möglich, aber Sie sollten überprüfen , um zu sehen , ob border-styleWerte wie inset, outsetoder eine andere, erreicht den gewünschten Effekt .. ( obwohl ich bezweifle es .. )
Antworten:
Ja: Verwenden Sie die
outline
Eigenschaft; Es fungiert als zweite Grenze außerhalb Ihrer Grenze. Achtung, es kann auf wackelige Weise mit Rändern, Polstern und Schlagschatten interagieren. In einigen Browsern müssen Sie möglicherweise auch ein browserspezifisches Präfix verwenden. um sicherzustellen, dass es es aufgreift:-webkit-outline
und dergleichen (obwohl WebKit dies insbesondere nicht benötigt).Dies kann auch nützlich sein, wenn Sie die Gliederung für bestimmte Browser verwerfen möchten (z. B. wenn Sie die Gliederung mit einem Schlagschatten kombinieren möchten; in WebKit befindet sich die Gliederung innerhalb des Schattens; in FireFox ist dies der Fall Dies
-moz-outline: 0
ist nützlich, um sicherzustellen, dass Sie keine knorrige Linie um Ihren schönen CSS-Schlagschatten erhalten.Bearbeiten: Einige Leute haben bemerkt, dass
outline
mit IE <8 nicht gut zusammenpasst. Während dies wahr ist; IE <8 zu unterstützen, ist wirklich nichts, was Sie tun sollten.quelle
outline
gibt es seit CSS2.outline
ist weniger vielseitig alsborder
. Insbesondere sagt W3C : "Hinweis. Der Umriss ist auf allen Seiten gleich. Im Gegensatz zu Rändern gibt es keine Eigenschaft " Umriss oben "oder" Umriss links " ." (Hervorhebung von mir.)Das ist sehr gut möglich. Es dauert nur ein wenig CSS-Trick!
Ist es das, wonach du suchst?
quelle
border-radius
, versuchen Sie , den Radius des inneren Randes um ein Pixel zu verringern, damit die Lücke zwischen den beiden abgerundeten Rändern nahezu unbemerkt bleibt.bottom:1px
eher alsheight:100%
besser für nur einen unteren Rand gearbeitet :)div.border
, habe ich festgestellt, dass das Hinzufügen eines negativen Randes mit den gleichen Abmessungen für die dazudiv.border:before
beigetragen hat, dass alles inline bleibt. Vielleicht gibt es einen besseren Weg, es zu tun? jsFiddleEin anderer Weg ist zu verwenden
box-shadow
:Siehe Beispiel hier.
quelle
Haben Sie die verschiedenen Rahmenstile ausprobiert, die in der CSS-Spezifikation verfügbar sind? Es gibt bereits zwei Rahmenstile, die Ihren Anforderungen entsprechen könnten:
Oder
quelle
Die Gliederung ist gut, aber nur, wenn Sie die Grenze ringsum haben möchten.
Sagen wir, wenn Sie es nur unten oder oben machen möchten, können Sie es verwenden
Und für den Boden:
Hoffe das hilft.
quelle
Anstatt nicht unterstützte und problematische Gliederungen zu verwenden, verwenden Sie einfach
Beispiel:
HTML:
CSS:
TEST (JSFiddle) :
Code-Snippet anzeigen
quelle
Wenn Sie mit "Prägen" zwei Ränder mit zwei verschiedenen Farben umeinander meinen, gibt es die
outline
Eigenschaft (outline-left
,outline-right
....), die jedoch in der IE-Familie schlecht unterstützt wird (dh IE6 und 7 unterstützen sie überhaupt nicht) ). Wenn Sie zwei Ränder benötigen, ist ein zweites Wrapper-Element in der Tat am besten.Wenn Sie zwei Farben am selben Rand verwenden möchten. Verwenden Sie z
Auch hierfür gibt es spezielle
border-styles
(ridge
,outset
undinset
), die meiner Erfahrung nach jedoch von Browser zu Browser unterschiedlich sind.quelle
border : black white;
das Definieren von zwei verschiedenen Farben für einen Rand, der gleichzeitig sequentiell aussieht.outline
aber es wird nicht gut funktionieren in IE <8Nicht möglich, aber Sie sollten überprüfen , um zu sehen , ob
border-style
Werte wieinset
,outset
oder eine andere, erreicht den gewünschten Effekt .. ( obwohl ich bezweifle es .. )CSS3 hat die Grenzbildeigenschaften, aber ich weiß nicht , über die Unterstützung von Browsern noch (mehr Infos unter http://www.css3.info/preview/border-image/ ) ..
quelle
Einfach schreiben
style="border:medium double;"
für das HTML-Tag
quelle
Du könntest benutzen
quelle
Dies erzeugt einen schönen Effekt.
quelle