Obwohl diese Frage bereits hinreichend mit Lösungen unter Verwendung der box-shadow
y outline
Eigenschaften, möchte ich dies noch etwas erweitern für all diejenigen, die hier gelandet sind (wie ich) und nach einer Lösung für einen inneren Rand mit einen Ausgleich
Sagen wir also, Sie haben eine schwarze 100px x 100px div
und müssen mit einem weißen Rand versehen werden, der einen innerer Versatz von z.B. 5 px - dies kann immer noch mit den oben genannten Eigenschaften erreicht werden.
Der Trick dabei ist, zu wissen, dass mehrere Kastenschatten erlaubt sind, wobei der erste Schatten oben liegt und die nachfolgenden Schatten eine niedrigere z-Reihenfolge haben.
Mit diesem Wissen wird die Box-Shadow-Deklaration sein:
box-shadow: inset 0 0 0 5px black, inset 0 0 0 10px white;
div {
width: 100px;
height: 100px;
background: black;
box-shadow: inset 0 0 0 5px black, inset 0 0 0 10px white;
}
<div></div>
Im Grunde, was diese Erklärung sagt, ist: Rendering der letzten (10px weiß) Schatten zuerst, dann die vorherige 5px schwarzen Schatten darüber.
Um die gleiche Wirkung wie oben zu erzielen, müssten die Umrisserklärungen lauten:
outline: 5px solid white;
outline-offset: -10px;
div {
width: 100px;
height: 100px;
background: black;
outline: 5px solid white;
outline-offset: -10px;
}
<div></div>
NB: outline-offset
wird vom IE nicht unterstützt wenn das für Sie wichtig ist.