Chcę, aby moja reguła pozioma ignorowała wypełnienie rodzica.
Oto prosty przykład tego, co mam:
#parent {
padding:10px;
width:100px;
}
hr {
width:100px;
}
Przekonasz się, że pozioma linia rozciąga się poza rodzica o 10 pikseli. Próbuję zignorować wypełnienie, którego potrzebuje wszystko inne w nadrzędnym div.
Zdaję sobie sprawę, że mógłbym utworzyć osobny element div dla wszystkiego innego; to nie jest rozwiązanie, którego szukam.
<hr>
element div będzie oddalony o 20 pikseli od końca. Zobacz to jsFiddle, aby zobaczyć, co mam na myśli: jsfiddle.net/YVrWy/1Dla celów graficznych możesz zrobić coś takiego
źródło
W zasadzie wszyscy odpowiedzieli na to pytanie, ale w małych częściach. Zajmowałem się tym zaledwie minutę temu.
Chciałem mieć tacę z przyciskami na dole panelu, gdzie panel ma 30 pikseli dookoła. Taca na guziki musiała być zlicowana z dnem i po bokach.
Zrobiłem tutaj demo z większą ilością treści, aby poprowadzić ten pomysł. Jednak kluczowe elementy powyżej są przesunięte względem dopełnienia rodzica z dopasowanymi ujemnymi marginesami na potomku. Następnie najbardziej krytyczne, jeśli chcesz uruchomić dziecko o pełnej szerokości, a następnie ustaw szerokość na auto. (jak wspomniano w komentarzu powyżej Schlingela ).
źródło
Trochę późno, ale wymaga to trochę matematyki.
Nie mam Windowsa, więc nie testowałem tego w IE.
fiddle: fiddle przykład ..
źródło
jest lepszy niż
Później zasysa zawartość pionowo do niej.
źródło
Twój rodzic ma 120 pikseli szerokości - czyli 100 szerokości + 20 wypełnień z każdej strony, więc musisz ustawić linię o szerokości 120 pikseli. Oto kod. Następnym razem zauważ, że dopełnienie sumuje się do szerokości elementu.
źródło
width: auto;
whr
. jsfiddle.net/ToolmakerSteve/7p85dsrq/3 Niestety, to rozwiązanie nadal wymaga znajomościpadding
ustawionej przez rodzica.Problem może sprowadzić się do tego, którego modelu pudełkowego używasz. Czy używasz IE?
Kiedy IE jest w trybie dziwactw,
width
to zewnętrzna szerokość twojego pudełka, co oznacza, że wyściółka będzie wewnątrz. Zatem całkowity obszar pozostały wewnątrz pudełka ma100px - 2 * 10px = 80px
szerokość 100 pikseli<hr>
nie będzie wyglądał dobrze.Jeśli jesteś w trybie standardowym,
width
jest to wewnętrzna szerokość pudełka, a wyściółka jest dodawana na zewnątrz. Więc całkowita szerokość pudełka100px + 2 * 10px = 120px
pozostawia dokładnie 100 pikseli wewnątrz pudełka dla twojego<hr>
.Aby go rozwiązać, dostosuj wartości CSS dla IE. (Sprawdź w Firefoksie, aby zobaczyć, czy tam wygląda dobrze). Lub jeszcze lepiej, ustaw typ dokumentu, aby przełączyć przeglądarkę w tryb ścisły - w którym również IE jest zgodna ze standardowym modelem pudełkowym.
http://www.quirksmode.org/css/quirksmode.html
źródło
Jeśli masz kontener nadrzędny z pionowym dopełnieniem i chcesz, aby coś (np. Obraz) wewnątrz tego kontenera ignorowało jego pionowe dopełnienie, możesz ustawić ujemny, ale równy margines zarówno dla „góry”, jak i „dołu”:
Rzeczywista wartość nie wydaje się mieć większego znaczenia. Nie próbowałem tego w przypadku wyściółek poziomych.
źródło
łatwa naprawa .. dodaj do nadrzędnego div:
box-size: border-box;
źródło
Oto inny sposób, aby to zrobić.
Oto kilka przykładów na repl.it: https://repl.it/@bryku/LightgrayBleakIntercept
źródło