2013-05-08 11 views
6

Otrzymuję niespodziewane zachowanie, w którym pojawia się pionowy pasek przewijania. Nie rozumiem, jakie może być ograniczenie na wysokości kontenera.paski przewijania pojawiające się, gdy nie oczekujesz od nich przekroczenia linii i przekroczenia limitu

jestem w stanie zrobić tego problemu odejść albo przez zmianę marginesu Li: 1 lub ustawić ul za lineheight: normalny zamiast 1.

Może ktoś wyjaśnić, co jest rzeczywiście występujących? To znaczy, jaką wysokość przekroczyłem, która wymaga pionowego paska przewijania?

Stworzyłem bardzo prosty JSFIDDLE, aby zilustrować problem, który mam.

HTML kod:

<div class="content-section" > 
    <ul > 
    <li>cheese</li> 
    <li>crackers</li> 
    </ul> 
</div> 

kod CSS:

body { 
line-height: 1; 
} 

ul { 
    margin: 0; 
} 

.content-section { 
     overflow-y: auto; 
} 
+1

Jestem na FF i nie widzę pionowych pasków przewijania, nvm Widzę to w chrome – Huangism

+0

powinienem określić, że debugowałem w Chrome. – badMonkey

Odpowiedz

0

Nie jestem pewien, dlaczego trzeba przepełnienie ustawić na auto, jeśli usunąć to wtedy problem rozwiązany

If sekcja treści musi mieć określoną wysokość, a następnie ustawić wysokość, a pasek przewijania pojawi się, jeśli zajdzie taka potrzeba (jeśli potrzebujesz przepełnienia)

http://jsfiddle.net/pGuHG/2/

.content-section { 
    overflow-y: auto; 
    height: 100px; 
} 
4

To dlatego line-height jest ustawiony na 1, co oznacza, że ​​line-height jest taki sam jak rozmiar czcionki. Powoduje to, że czcionka nieco przekracza linię. Musisz ustawić line-height na wartość większą niż wysokość tekstu, jak się domyślasz. Tekst zachowuje się tak, jak powinien. Wysokość pudełka jest określona przez wysokość linii, ale tekst jest zawsze nieco większy niż linie. Twoja wysokość linii nigdy nie powinna być równa wielkości czcionki z punktu widzenia czytelności. Mam nadzieję, że to pomoże. Wiem, że to nie mówi dokładnie, skąd się wznosi, ale uważam, że udało ci się odkryć wiele sposobów walki z nim.

+0

Myślę, że masz rację. Być może staram się być zbyt precyzyjny. Zgadzam się, że wizualnie wysokość linii s/b jest większa niż rzeczywista czcionka. Z jakiegoś powodu nasz cssreset automatycznie ustawia wysokość linii na 1 (i nie spowodował innych problemów, o których mi wiadomo). – badMonkey

+0

Nigdy osobiście nie doświadczyłem tego, kim jesteś, ale z pewnością udało się go odtworzyć w jsFiddle. Być może nadszedł czas, aby zmodyfikować domyślny reset. :) – aaronburrows

+0

Miałem ten problem z FF 30.0, podczas gdy Chrome i IE11 nie miały problemów. Wysokość elementu div wynosiła 25 pikseli, a wysokość linii bezpośrednio zawartego wejścia wynosiła również 25 pikseli, aby pionowo wyśrodkować tekst. Spowoduje to, że kontener wyświetli pasek przewijania. Po prostu zmniejszyłem wysokość linii wejściowej do 23px i teraz działa dobrze. Nie zadałem sobie trudu, aby naprawdę dowiedzieć się, co było przyczyną. Twoje zdrowie! – Majnu

Powiązane problemy