2012-10-01 15 views
60

Wie man einen Einschubrahmen in ein HTML-Element anwendet, aber nur auf einer Seite davon. Bis jetzt habe ich ein Bild dazu verwendet (GIF/PNG), das ich dann als Hintergrund verwenden würde (repeat-x) und etwas von meinem Block entfernt. Kürzlich entdeckte ich die Gliederung CSS-Eigenschaft, die großartig ist! Aber scheint den ganzen Block zu umkreisen ... Ist es möglich, diese Umriss-Eigenschaft zu verwenden, um es nur an einer Grenze zu tun? Wenn nicht, haben Sie einen CSS-Trick, der das Hintergrundbild ersetzen könnte? (damit ich später die Farben des Umrisses mit CSS personalisieren konnte). Vielen Dank im Voraus!Umriss auf nur einer Grenze

Hier ist ein Bild von dem, was zu erreichen versuchen: http://exiledesigns.com/stack.jpg

+3

Ihr Link tot ist. Sie können das Bild direkt mit dem Bildwerkzeug in die Frage einfügen. – toddmo

Antwort

39

Umriss tatsächlich tut apply to the whole element.

Jetzt, wo ich dein Bild sehe, ist hier, wie man es erreicht.

.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 sehen external demo.)

Alle Größen und Farben sind nur Platzhalter, können Sie es, die genaue gewünschte Ergebnis entsprechen ändern.

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 konkrete Antwort ausarbeiten kann.

+0

Hallo Giona, ich habe meiner Frage ein Bild hinzugefügt, um es klarer zu machen: Ich brauche Platz zwischen den Grenzen meines Blocks und meiner Grenze. – Corinne

+0

@CorinneStoppelli yup, hab es jetzt ... check my edit – Giona

+0

Danke @GionaF, aber es scheint, dass die Grenze immer noch "über" dem Block und nicht "innen" ist. (Was ist \ a0? Nur zufällige Inhalte, um den Block zu erstellen?) http://www.exiledesigns.com/stack2.jpg (Ich versuchte mit 5px Polsterung aber nichts geändert) – Corinne

-2

nur eine Seite outline nicht funktionieren können Sie die border-left/right/top/bottom

wenn ich Ihren Kommentar

einen immer richtig verwenden

enter image description here

+2

Wie wird der Rand links/rechts/etc eingefügt? Wie zum Beispiel, 3 Pixel entfernt von der Blockgrenze, aber ** innen **? – Corinne

+0

@CorinneStoppelli könnten Sie das erklären? –

+0

Entschuldigung hakra! Ich habe meiner ersten Frage ein Bild hinzugefügt, um es klarer zu machen! – Corinne

73

Sie können box-shadow verwenden, um einen Umriss auf einer Seite zu erstellen. Wie outline, ändert box-shadow nicht die Größe des Boxmodells.

Dies stellt eine Linie auf:

box-shadow: 0 -1px 0 #000; 

ich ein jsFiddle gemacht, wo Sie es heraus in Aktion überprüfen.


EINSCHUB

Für eine Einsatz Grenze, verwenden Sie das Einsatz Stichwort. Dadurch wird eine Einfügezeile eingefügt:

box-shadow: 0 1px 0 #000 inset; 

Mehrere Zeilen können mit kommagetrennten Anweisungen hinzugefügt werden.Dies stellt einen Einsatz Linie auf der Oberseite und links:

box-shadow: 0 1px 0 #000 inset, 
      1px 0 0 #000 inset; 

Weitere Informationen dazu, wie box-shadow Werke, die MDN page überprüfen.

+1

Ich mag diesen kreativen Ansatz, danke fürs Teilen! – NPC

+0

Sie haben keinen eingebetteten Rahmen erstellt, und Sie erklären die Syntax für Box-Shadow nicht. Vielen Dank. – toddmo

+0

Große, clevere Lösung. Vielen Dank! – grammar

9

mit Schatten-Versuchen (Like Grenze) + Border

border-bottom: 5px solid #fff; 
box-shadow: 0 5px 0 #ffbf0e; 
0

Die große Sache über HTML/CSS ist, dass es in der Regel mehr als einen Weg, um die gleiche Wirkung zu erzielen. Hier ist eine andere Lösung, das tut, 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; 
} 

http://jsfiddle.net/10basetom/uCX3G/1/