Ich versuche, meine horizontale Regel dazu zu bringen, die übergeordnete Auffüllung zu ignorieren.
Hier ist ein einfaches Beispiel für das, was ich habe:
#parent {
padding:10px;
width:100px;
}
hr {
width:100px;
}
Sie werden feststellen, dass sich die horizontale Regel um 10 Pixel aus dem übergeordneten Element heraus erstreckt. Ich versuche, die Auffüllung zu ignorieren, die alles andere im übergeordneten Div benötigt.
Mir ist bewusst, dass ich für alles andere ein separates Div erstellen könnte. Dies ist nicht die Lösung, die ich suche.
<hr>
20px vom Ende Ihres Div entfernt sind. Sehen Sie diese jsFiddle für das, was ich meine: jsfiddle.net/YVrWy/1Für Bildzwecke können Sie so etwas tun
quelle
Im Großen und Ganzen wurde diese Frage von allen beantwortet, aber in kleinen Teilen. Ich habe mich erst vor einer Minute damit befasst.
Ich wollte eine Knopfleiste am unteren Rand eines Panels haben, in der das Panel ringsum 30 Pixel hat. Die Knopfleiste musste unten und an den Seiten bündig sein.
Ich habe eine Demo hier mit mehr Fleisch auf die Idee zu fahren. Die oben genannten Schlüsselelemente versetzen jedoch alle übergeordneten Auffüllungen mit übereinstimmenden negativen Rändern des untergeordneten Elements. Am kritischsten ist es dann, wenn Sie das untergeordnete Element in voller Breite ausführen möchten, und setzen Sie dann width auf auto. (wie oben in einem Kommentar von schlingel erwähnt ).
quelle
Ein bisschen spät. Aber es braucht nur ein bisschen Mathe.
Ich habe kein Windows, also habe ich dies nicht im IE getestet.
Geige: Geige Beispiel ..
quelle
ist besser als
Letzteres saugt Inhalte vertikal hinein.
quelle
Ihr Elternteil ist 120 Pixel breit - das sind 100 Breite + 20 Polster auf jeder Seite, sodass Sie Ihre Linie 120 Pixel breit machen müssen. Hier ist der Code. Beachten Sie beim nächsten Mal, dass sich das Auffüllen zur Elementbreite summiert.
quelle
width: auto;
inhr
. jsfiddle.net/ToolmakerSteve/7p85dsrq/3 Leider erfordert diese Lösung immer noch Kenntnisse,padding
die vom Elternteil festgelegt wurden.Das Problem könnte darin liegen, welches Box-Modell Sie verwenden. Verwenden Sie IE?
Wenn sich der IE im Mackenmodus befindet,
width
ist dies die äußere Breite Ihrer Box, was bedeutet, dass sich die Polsterung im Inneren befindet. Die gesamte100px - 2 * 10px = 80px
verbleibende Fläche in der Box ist also. In diesem Fall sieht Ihre 100 Pixel breite<hr>
nicht richtig aus.Wenn Sie sich im Standardmodus befinden,
width
ist die innere Breite Ihrer Box und die Polsterung wird außen hinzugefügt. Die Gesamtbreite der Box100px + 2 * 10px = 120px
belässt also genau 100 Pixel in der Box für Sie<hr>
.Um dies zu lösen, passen Sie entweder Ihre CSS-Werte für IE an. (Überprüfen Sie in Firefox, ob es dort in Ordnung aussieht). Oder noch besser, stellen Sie einen Dokumenttyp ein, um den Browser in den strengen Modus zu versetzen - wobei auch der IE dem Standard-Box-Modell folgt.
http://www.quirksmode.org/css/quirksmode.html
quelle
Wenn Sie einen übergeordneten Container mit vertikaler Auffüllung haben und möchten, dass etwas (z. B. ein Bild) in diesem Container die vertikale Auffüllung ignoriert, können Sie einen negativen, aber gleichen Rand für "oben" und "unten" festlegen:
Der tatsächliche Wert scheint nicht viel zu bedeuten. Ich habe dies nicht für horizontale Polsterungen versucht.
quelle
einfache Lösung .. zum übergeordneten div hinzufügen:
Box-Größe: Border-Box;
quelle
Hier ist eine andere Möglichkeit, dies zu tun.
Hier einige Beispiele auf repl.it: https://repl.it/@bryku/LightgrayBleakIntercept
quelle