2011-07-05 9 views
14

Czy istnieje sposób na usunięcie dodatkowej przestrzeni wyświetlanej u dołu znacznika pozycji listy HTML bez ustawiania stałej wysokości elementu listy? tj. Chciałbym, aby element listy zawijał się do jego treści.Usuwanie dodatkowej spacji na dole listy HTML Element

Poniższy kod pokazuje 3 obrazy na poziomej liście, ale wysokość każdego znacznika li jest 4px większa niż obraz. Chciałbym, aby zawinął się wokół obrazu, tj. Miał tę samą szerokość i wysokość. Szerokość jest obecnie taka sama, ale po prostu nie mogę dopasować wysokości.

HTML:

<ul> 
    <li><img alt="img1" src="img1.jpg" /></li> 
    <li><img alt="img2" src="img2.jpg" /></li> 
    <li><img alt="img3" src="img3.jpg" /></li> 
</ul> 

CSS:

li 
{ 
    display:block; 
    float:left; 
    margin:0; 
    padding:0; 
    background-color:Yellow; 
} 

Odpowiedz

26

To jest Twój kod: http://jsfiddle.net/23LcK/

Szczelina ma nic wspólnego z li s. Jest to miejsce zarezerwowane dla urządzeń dolnych w literach takich jak g i p (ponieważ elementy img s są elementami inline).

można usunąć go z żadnym z nich stosuje się do li img:

+2

Dzięki @thritydot, doskonała odpowiedź. –

+2

Solidne rozwiązanie! – Linkmichiel

+0

CICHA ODPOWIEDŹ! dzięki! –

2

Należy to zrobić to za Ciebie.

ul{margin-bottom:0} 
2

Li jest zawijany w ul, który domyślnie ma dopełnienie. Dlatego, jak powiedział @ Michael, musisz wyzerować dopełnienie elementu ul.

Aby uniknąć takich problemów, zawsze staraj się używać reset.css.

FYI: Przeglądarki stosują domyślny styl CSS na stronach internetowych. Dlatego widzisz elementy h1, które są duże, gdy nie ma CSS w twojej witrynie. Ponieważ przeglądarki mają domyślny CSS. A ponieważ przeglądarki pochodzą z różnych firm, mają różne domyślne CSS. Na przykład przeglądarka może wykorzystywać 10px marginesów dla akapitów, a inna przeglądarka 12px. Oznacza to, że zawsze masz niespójności w swoim projekcie. Ale resetowanie CSS składa się z ogólnych reguł, które usuwają te domyślne style CSS.

+0

To nie jest powód, dla dodatkowej przestrzeni. Spójrz na [moje rozwiązanie] (http://stackoverflow.com/questions/6584004/remove-extra-space-at-bottom-of-html-list-item/6584207#6584207) dla ** ** poprawnej odpowiedzi (są na to inne sposoby). –

+0

Dzięki za sugestię reset.css @ Seed. Dzięki temu zmniejszono przestrzeń o jeden lub dwa piksele, ale nie udało się jej całkowicie pozbyć. @ Odpowiedź Ivana jest jedyną, która całkowicie pozbyła się tego wszystkiego. –

0
li img { 
    vertical-align: bottom; 
} 
+0

Dzięki @Ivan, to działa świetnie. Jednak przyznałem @thirtydot zaakceptowanej odpowiedzi, ponieważ daje trochę więcej szczegółów. –

+0

boo-hoo-hoo ;-) –

0

Prawdopodobnie istnieje domyślny margines lub dopełnienie na elemencie img w przeglądarce, której używasz. Można usunąć tę używając coś takiego:

li img { 
    margin: 0; 
    padding: 0; 
} 

Ponieważ różne przeglądarki internetowe korzystania różne style domyślne zaleca się stosowanie stylów resetowania. Ustawia to cały ładunek na rozsądne wartości domyślne, aby uzyskać bardziej spójną stylistykę w różnych przeglądarkach. Ponieważ resetuje wszystko do rozsądnych wartości domyślnych, zawsze powinieneś załadować reset arkusza stylów przed innymi arkuszami stylów.

Jak już wspomniałem @Saeed, istnieje dobry arkusz stylów resetowania, a także więcej informacji o tym, dlaczego warto z nich korzystać here.

9

Ustaw wysokość linii: 0; na LI

li { 
    line-height: 0; 
} 

Oto jsfiddle udowodnić, że to działa - http://jsfiddle.net/jm9Tj/

+0

Dzięki @Anupam, to działa, ale wyrównanie w pionie: dół; oferowane przez @Ivan wydaje się być bardziej niezawodne, gdy mój kod staje się bardziej skomplikowany. –

+1

Prawidłowa poprawna odpowiedź. To jest źródło tej tajemniczej "dodatkowej przestrzeni", gdy uwzględni się margines i dopełnienie. – ccjuju

+1

'display: block' jest tutaj bardziej niezawodnym rozwiązaniem. –