So fügen Sie einen inset border in ein HTML-Element ein, jedoch nur auf einer Seite. Bis jetzt habe ich ein Bild dazu verwendet (GIF/PNG), das ich dann als Hintergrund verwenden und es strecken (repeat-x) und ein wenig von der Oberseite meines Blocks positionieren würde. Vor kurzem entdeckte ich die CSS-Eigenschaft outline, die großartig ist! Scheint jedoch, den gesamten Block zu umkreisen ... Ist es möglich, diese Gliederungseigenschaft für nur einen Rahmen zu verwenden? Wenn nicht, haben Sie einen CSS-Trick, der das Hintergrundbild ersetzen könnte ? (Damit ich die Farben der Umrisse später mit CSS usw. anpassen konnte) . Vielen Dank im Voraus!
Hier ist ein Bild von dem, was ich erreichen möchte: http://exiledesigns.com/stack.jpg
Gliederung gilt in der Tat gilt für das gesamte Element .
Nun, da ich dein Image sehe, sollst du es erreichen.
.element {
padding: 5px 0;
background: #CCC;
}
.element:before {
content: "\a0";
display: block;
padding: 2px 0;
line-height: 1px;
border-top: 1px dashed #000;
}
.element p {
padding: 0 10px;
}
<div class="element">
<p>Some content comes here...</p>
</div>
(Oder siehe externe Demo. )
Alle Größen und Farben sind nur Platzhalter. Sie können sie so ändern, dass sie genau dem gewünschten Ergebnis entsprechen.
Wichtiger Hinweis: .element muss display:block;
(Standard für ein div) haben, damit dies funktioniert. Wenn dies nicht der Fall ist, geben Sie bitte Ihren vollständigen Code an, damit ich eine bestimmte Antwort erarbeiten kann.
Mit box-shadow
können Sie auf einer Seite eine Kontur erstellen. Wie bei outline
ändert box-shadow
die Größe des Boxmodells nicht.
Dies setzt eine Linie an die Spitze:
box-shadow: 0 -1px 0 #000;
Ich habe ein jsFiddle gemacht, in dem Sie es in Aktion überprüfen können.
INSET
Verwenden Sie für einen inset-Rand das Schlüsselwort inset. Dies setzt eine kleine Linie an die Spitze:
box-shadow: 0 1px 0 #000 inset;
Mit durch Kommas getrennten Anweisungen können mehrere Zeilen hinzugefügt werden. Dadurch wird oben und links eine Einfügungslinie eingefügt:
box-shadow: 0 1px 0 #000 inset,
1px 0 0 #000 inset;
Weitere Informationen zur Funktionsweise von box-shadow
finden Sie auf der MDN-Seite .
Versuche mit Shadow (Like border) + Border
border-bottom: 5px solid #fff;
box-shadow: 0 5px 0 #ffbf0e;
Ich weiß, das ist alt. Aber ja. Ich bevorzuge eine viel kürzere Lösung als die Antwort von Giona
[contenteditable] {
border-bottom: 1px solid transparent;
&:focus {outline: none; border-bottom: 1px dashed #000;}
}
Ich gebe meinem Eingabefeld gerne eine Umrandung, entferne die Umrisslinie und fokussiere stattdessen die Umrandung:
input {
border: 1px solid grey;
&:focus {
outline: none;
border-left: 1px solid Violet;
}
}
Sie können es auch mit einem transparenten Rand tun:
input {
border: 1px solid transparent;
&:focus {
outline: none;
border-left: 1px solid Violet;
}
}
Das Tolle an HTML/CSS ist, dass es in der Regel mehrere Möglichkeiten gibt, um denselben Effekt zu erzielen. Hier ist eine weitere Lösung, die macht, was Sie wollen:
<nav id="menu1">
<ul>
<li><a href="#">Menu Link 1</a></li>
<li><a href="#">Menu Link 2</a></li>
</ul>
</nav>
nav {
background:#666;
margin:1em;
padding:.5em 0;
}
nav ul {
border-top:1px dashed #fff;
list-style:none;
padding:.5em;
}
nav ul li {
display:inline-block;
}
nav ul li a {
color:#fff;
}