Wyświetlam liczbę pól w rzędzie z ustaloną wysokością i szerokością, wygenerowaną z tagów <li>. teraz muszę wyrównać tekst do środka w pionie. Wyrównanie w pionie CSS nie ma wpływu, może coś mi brakuje ???
Nie szukam trików z użyciem (margines, dopełnienie, wysokość linii), te nie zadziałają, ponieważ niektóre teksty są długie i podzielą się na dwie linie.
Znajdź aktualny kod:
Kod CSS
ul.catBlock{
width:960px;
height: 270px;
border:1px solid #ccc;
}
ul.catBlock li{
list-style: none;
float:left;
display:block;
text-align: center;
width:160px;
height: 100px;
}
ul.catBlock li a{
display: block;
padding: 30px 10px 5px 10px;
height:60px;
}
Kod HTML
<ul class="catBlock">
<li><a href="#">IP Phone</a></li>
<li><a href="#">Dual SIM Switch Server</a></li>
<li><a href="#">IP PBX</a></li>
</ul>
html
css
vertical-alignment
AK4668
źródło
źródło
Odpowiedzi:
Zdefiniuj rodzica za pomocą
display: table
i sam element za pomocąvertical-align: middle
idisplay: table-cell
.źródło
<li>
wejściem w jeden rząd?line-height
to sposób wyrównania tekstu w pionie. Jest to dość standardowe i nie uważam tego za „hack”. Po prostu dodajline-height: 100px
do swojegoul.catBlock li
i wszystko będzie dobrze.W takim przypadku może być konieczne dodanie go
ul.catBlock li a
zamiast tego, ponieważ cały tekst wewnątrzli
znajduje się również wewnątrz plikua
. Widziałem kilka dziwnych rzeczy, kiedy to robisz, więc spróbuj obu i zobacz, która działa.źródło
vertical-align: middle
zrobić, jeśli maszdisplay: table-cell
. Jednak nigdy go nie używałem. Spójrz tutaj: phrogz.net/css/vertical-align/index.htmlJakkolwiek wiele lat opóźni się ta odpowiedź, każdy, kto się z tym spotka, może po prostu spróbować
Obsługa przeglądarki flexbox jest znacznie lepsza niż wtedy, gdy @scottjoudry opublikował swoją odpowiedź powyżej, ale nadal możesz rozważyć prefiksowanie lub inne opcje, jeśli próbujesz obsługiwać znacznie starsze przeglądarki. caniuse: flex
źródło
list-style-image
w Chrome - obraz znikaZaskakujące (lub nie)
vertical-align
narzędzie faktycznie sprawdza się najlepiej w tym zadaniu. A co najlepsze, nie jest wymagany Javascript.W poniższym przykładzie umieszczam
outer
klasę w środku ciała, ainner
klasę w środkuouter
klasy.Podgląd: http://jsfiddle.net/tLkSV/513/
HTML:
CSS:
Wyrównanie w pionie polega na wyrównaniu środków elementów, które są obok siebie. Zastosowanie wyrównania w pionie do pojedynczego elementu nie daje absolutnie nic. Jeśli dodasz drugi element, który nie ma szerokości, ale jest wysokością kontenera, pojedynczy element przesunie się do środka w pionie z tym elementem bez szerokości, a tym samym wyśrodkuje go w pionie. Jedyne wymagania to ustawienie obu elementów na inline (lub inline-block) i ustawienie ich atrybutu vertical-align na
vertical-align: middle
.Uwaga: w moim kodzie poniżej możesz zauważyć, że mój
<span>
tag i<div>
tag stykają się. Ponieważ oba są elementami wbudowanymi, spacja faktycznie doda spację między elementem bez szerokości a elementem div, więc pamiętaj, aby go pominąć.źródło
W przyszłości ten problem zostanie rozwiązany przez flexbox. Obecnie obsługa przeglądarek jest fatalna, ale jest obsługiwana w takiej czy innej formie we wszystkich obecnych przeglądarkach.
Obsługa przeglądarek: http://caniuse.com/flexbox
Informacje o Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
źródło
Nie ma tutaj doskonałych odpowiedzi poza odpowiedzią Asafa, która nie zawiera żadnego kodu ani żadnego przykładu, więc chciałbym wnieść swój ...
Aby
vertical-align: middle;
działać, musisz użyćdisplay: table;
dla swojegoul
elementu idisplay: table-cell;
dlali
elementów, a potem możesz użyćvertical-align: middle;
dlali
elementów.Nie musisz podawać żadnych wyraźnych informacji
margins
,paddings
aby tekst był ustawiony pionowo na środku.Próbny
źródło
Jak wyjaśniono tutaj: https://css-tricks.com/centering-in-the-unknown/ .
Zrzut ekranu:
źródło
Wypróbuj to rozwiązanie
Działa najlepiej w większości przypadków
Może trzeba użyć div zamiast li za to
źródło
Proste rozwiązanie do wyrównywania w pionie środka ... u mnie działa jak urok
źródło