2013-02-14 13 views
5

Następujący kod renderuje się inaczej w różnych przeglądarkach (IE = FF = wyższy od linii podstawowej, Chrome = na linii bazowej).wyświetlacz: blok w linii i przepełnienie: ukryty prowadzący do innego wyrównania w pionie

  1. Czyja to wina? Gdzie powinienem zgłosić zgłoszenie błędu?

  2. Czy wiesz, jak uzyskać tę rozwiązaną między przeglądarkami. Jeśli zmienię wyrównanie w pionie, uruchomię to w niektórych przeglądarkach, ale nie w innych.

<!doctype html> 
<html> 
<head> 
    <style> 
     .a { 
      display: inline-block; 
      overflow: hidden; 
      color: red; 
     } 
    </style> 
</head> 
<body> 
    baseline__<div class="a">test</div>__baseline 
</body> 
</html> 

http://jsfiddle.net/T2vQj/

Odpowiedz

3

Wygląda na to, że Chrome jest w błędzie. CSS 2.1 spec mówi

Linia bazowa o „inline-block” jest linia bazowa jego ostatniego pola liniowego w układzie normalnym, o ile nie ma albo nie w przepływowym pól liniowych lub jeśli jego „przepełnienie” rzeczowych ma wartość obliczoną inną niż "widoczna", w tym przypadku linia bazowa jest dolną krawędzią marginesu.

Ponieważ właściwość overflow oblicza się czymś innym niż „visible” bazowy inline-block jest dolna krawędź margines, który siedzi na linii pola liniowego zawierającego, a zatem należy podnieść do góry zawartego tekstu, aby umożliwić miejsce dla potomków tego tekstu.

+0

Wielkie dzięki. http://code.google.com/p/chromium/issues/detail?id=176244 – mh543

1

Tak. Musisz to zrobić:

  1. Usuń styl overflow: hidden;. To nie jest potrzebne tutaj. Potrzebujesz tego tylko wtedy, gdy podasz width lub text-overflow: ellipsis;.

  2. Dodaj vertical-align: bottom;. Pionowe wyrównanie tekstu zmieni się po zmianie wyświetlacza z inline na inline-block.

+1

1. wydałem minimalny przykład roboczy. Zostawiłem wszystko, co nie jest potrzebne do odtworzenia zachowania, które zamierzałem pokazać. 2. Nie, wyrównanie pionowe prowadzi do różnych wyników w różnych przeglądarkach, zgodnie z opisem w oryginalnym wpisie. – mh543

+0

Tak. Każda przeglądarka obsługuje w nich domyślną wartość 'inline-block'. –

-1

Try This

<!doctype html> 
<html> 
<head> 
    <style> 
     .a { 
      display: inline; 
      overflow: hidden; 
      color: red; 
     } 
    </style> 
</head> 
<body> 
    baseline__<div class="a">test</div>__baseline 
</body> 
</html> 
Powiązane problemy