Próbuję znaleźć najbardziej skuteczny sposób wyrównania tekstu do div. Próbowałem kilku rzeczy i żadna z nich nie działa.
.testimonialText {
position: absolute;
left: 15px;
top: 15px;
width: 150px;
height: 309px;
vertical-align: middle;
text-align: center;
font-family: Georgia, "Times New Roman", Times, serif;
font-style: italic;
padding: 1em 0 1em 0;
}
<div class="testimonialText">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
html
css
vertical-alignment
shinjuo
źródło
źródło
Odpowiedzi:
Centrowanie pionowe w CSS
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
Podsumowanie artykułu:
W przeglądarce CSS 2 można użyć
display:table
/display:table-cell
do wyśrodkowania zawartości.Próbka jest również dostępna w JSFiddle :
Możliwe jest scalanie włamań do starych przeglądarek (Internet Explorer 6/7) w style za pomocą
#
ukrywania stylów przed nowszymi przeglądarkami:źródło
table
mimo że rutynowo łamie serca fanów CSS. Większość z nich projektuje tylko proste blogi i strony statyczne. Niektórzy z nas tworzą oprogramowanie biznesowe i potrzebują gęstego wyświetlania danych, a nasi użytkownicy bardziej dbają o funkcjonalność.table
. Teraz jest lepiej, ale niektórzy z nas, którzy tworzą biznesowe aplikacje internetowe, muszą obsługiwać starsze przeglądarki (IE6 jest nadal używany u niektórych klientów!), Podczas gdy ludzie, którzy tworzą blogi, mogą żyć w chmurach i udawać, że każdy na świecie ma szybkie połączenie, nowy komputer i najnowsza wersja przeglądarki X z CSS 3 itd.Musisz dodać
line-height
atrybut, a ten atrybut musi pasować do wysokościdiv
. W Twoim przypadku:W rzeczywistości prawdopodobnie można
height
całkowicie usunąć atrybut.Działa to tylko w przypadku jednego wiersza tekstu , więc bądź ostrożny.
źródło
Oto świetny zasób
Od http://howtocenterincss.com/ :
Korzystanie z Flexbox
Oprócz utrzymywania tego postu na bieżąco z najnowszymi technologiami, oto o wiele łatwiejszy sposób na wyśrodkowanie czegoś za pomocą Flexboksa. Flexbox nie jest obsługiwany w Internet Explorerze 9 i starszych .
Oto kilka świetnych zasobów:
JSFiddle z prefiksami przeglądarki
Inne rozwiązanie
Pochodzi z zerosixthree i pozwala wyśrodkować wszystko za pomocą sześciu linii CSS
Ta metoda nie jest obsługiwana w przeglądarce Internet Explorer 8 i niższych .
jsfiddle
Poprzednia odpowiedź
Proste podejście do różnych przeglądarek, przydatne jako linki w zaznaczonej odpowiedzi są nieco nieaktualne.
Andy Howard - Jak wyśrodkować tekst w pionie i poziomie na nieuporządkowanej liście lub div
Ponieważ nie dbałem zbytnio o Internet Explorer 7/6 w ostatnim projekcie, nad którym pracowałem, użyłem nieco uproszczonej wersji (tj. Usunąłem rzeczy, które sprawiły, że działał w Internet Explorerze 7 i 6). Może być przydatny dla kogoś innego ...
JSFiddle
źródło
height: x; line-height: x;
ale częściej nie potrzebuję wielu wierszy tekstu. Dlatego uwielbiam to rozwiązanie. Prosty, wielokrotnego użytku, w różnych przeglądarkach, bez js i wymaga tylko trochę dodatkowego znacznika.height: 100px;
sięheight: 100%;
zarówno dlali
i.outerContainer
.To jest łatwe
display: flex
. Następująca metodadiv
spowoduje wyśrodkowanie tekstu w pionie:A jeśli chcesz, poziome:
Musisz zobaczyć potrzebną wersję przeglądarki; w starych wersjach kod nie działa.
źródło
text-align: center
jest również konieczne, ponieważ długa szerokość wypełnienia tekstu zostanie wyrównana do lewejUżywam następujących elementów do łatwego centrowania elementów losowych w pionie:
HTML:
CSS:
Spowoduje to wyśrodkowanie tekstu w moim
div
do dokładnie pionowego środka zewnętrznej strony o wysokości 200 pikselidiv
. Pamiętaj, że może być konieczne użycie prefiksu przeglądarki (jak-webkit-
w moim przypadku), aby działało to w przeglądarce.Działa to nie tylko dla tekstu, ale także dla innych elementów.
źródło
position: absolute;
- Dzięki! Uwaga: możesz dołączyć-ms-transform
lub IE wypisze coś innego-web-kit-transform
wcześniejtransform
. Być może dodanie-ms-transform
może rozwiązać problem @ ToniMichelCaubet.Możesz to zrobić, ustawiając wyświetlanie na „komórkę tabeli” i stosując
vertical-align: middle;
:Nie jest to jednak obsługiwane przez wszystkie wersje programu Internet Explorer zgodnie z tym fragmentem, który skopiowałem z http://www.w3schools.com/cssref/pr_class_display.asp bez pozwolenia.
Uwaga: Wartości „inline-table”, „table”, „table-caption”, „table-cell”, „table-column”, „table-column-group”, „table-row”, „table-row” -group ”i„ dziedziczenie ”nie są obsługiwane przez program Internet Explorer 7 i wcześniejsze wersje. Internet Explorer 8 wymaga! DOCTYPE. Internet Explorer 9 obsługuje wartości.
Poniższa tabela pokazuje dozwolone wartości wyświetlania również z http://www.w3schools.com/cssref/pr_class_display.asp .
źródło
Obecnie (nie potrzebujemy już Internet Explorera 6-7-8) po prostu użyłbym CSS
display: table
do tego problemu (lubdisplay: flex
).W przypadku starszych przeglądarek:
Stół:
Zgiąć:
To (właściwie było) moje ulubione rozwiązanie tego problemu (prosta i bardzo dobrze obsługiwana przeglądarka):
źródło
Spróbuj tego, dodaj div div:
źródło
Oto rozwiązanie, które najlepiej działa w przypadku pojedynczego wiersza tekstu.
Może także działać z tekstem wielowierszowym z pewnymi poprawkami, jeśli znana jest liczba linii.
Oto JSFiddle .
źródło
źródło
Możesz wyrównać tekst do środka w pionie wewnątrz div za pomocą Flexbox.
Możesz dowiedzieć się więcej na ten temat w Kompletnym przewodniku po Flexbox .
źródło
Sprawdź to proste rozwiązanie:
HTML
CSS
JSFiddle
źródło
Istnieje prostszy sposób na wyrównanie zawartości w pionie bez uciekania się do tabeli / komórki-komórki:
http://jsfiddle.net/bBW5w/1/
Dodałem w nim niewidoczny (szerokość = 0) div, który zakłada całą wysokość kontenera.
Wygląda na to, że działa w Internet Explorerze i Firefoksie (najnowsze wersje). Nie sprawdzałem w innych przeglądarkach
I oczywiście CSS:
źródło
Jest to najczystsze rozwiązanie, jakie znalazłem (Internet Explorer 9+) i dodaje naprawę problemu „wyłączony o .5 pikseli”, wykorzystując
transform-style
inne pominięte odpowiedzi.Źródło: Wyrównaj wszystko w pionie za pomocą zaledwie 3 linii CSS
źródło
Proste rozwiązanie elementu nie znających wartości:
HTML
CSS
źródło
Zgodnie z odpowiedzią Adama Tomata przygotowano przykład JSFiddle do wyrównania tekstu w div :
za pomocą display: flex w CSS:
z innym przykładem i kilkoma objaśnieniami w poście na blogu .
źródło
Automatyczny margines na elemencie siatki.
Podobnie jak Flexbox, zastosowanie automatycznego marginesu na elemencie siatki wyśrodkowuje go na obu osiach:
źródło
Flexbox działał dla mnie idealnie, centrując wiele elementów wewnątrz rodzica div poziomo i pionowo.
Kod HTML:
Kod CSS:
Poniższy kod układa wszystkie elementy wewnątrz div-parent w kolumnie, centrując elementy poziomo i pionowo. Użyłem div-child, aby utrzymać dwa elementy Anchor w tej samej linii (rzędzie). Bez elementu podrzędnego wszystkie trzy elementy (zakotwiczenie, zakotwiczenie i akapit) są ułożone jeden na drugim w kolumnie nadrzędny element div. Tutaj tylko child-div jest ułożony w kolumnie parent-div.
źródło
Posługiwać się:
Dzięki tej sztuczce możesz wyrównać wszystko, jeśli nie chcesz, aby wyśrodkowywał „lewy: 0”, aby wyrównać do lewej.
źródło
HTML
CSS
źródło
Korzystając z Flex, uważaj na różnice w renderowaniu przeglądarek.
Działa to dobrze zarówno w przeglądarce Chrome, jak i Internet Explorer:
Porównaj z tym, który działa tylko z Chrome:
źródło
Jest to kolejna odmiana
div
wdiv
strukturze z wykorzystaniemcalc()
CSS.To działa, ponieważ:
position:absolute
do dokładnego umieszczenia wdiv
ciągudiv
div
ponieważ możemy ustawić go20px
.calc(50% - 10px)
za 50% - połowa wysokości do wyśrodkowania wnętrzadiv
źródło
Działa to dobrze:
HTML
Sass
Bez i ze znacznikiem obrazu
<mat-icon>
(który jest czcionką).źródło
Hmm, jest oczywiście wiele sposobów na rozwiązanie tego.
Ale mam
<div>
pozycję absolutnieheight:100%
(właściwietop:0;bottom:0
i stałą szerokość) idisplay:table-cell
po prostu nie działałem, aby wyśrodkować tekst w pionie. Moje rozwiązanie wymagało wewnętrznego elementu rozpiętości, ale widzę też wiele innych rozwiązań, więc równie dobrze mogę je dodać:Mój kontener to a
.label
i chcę, aby liczba była w nim wyśrodkowana pionowo. Zrobiłem to, pozycjonując absolutnietop:50%
i ustawiającline-height:0
A CSS wygląda następująco:
Zobacz to w akcji: http://jsfiddle.net/jcward/7gMLx/
źródło
Możesz użyć css
flexbox
.źródło
Za pomocą siatki CSS zrobiłem to dla mnie:
źródło
Spróbuj osadzić element tabeli.
źródło
Istnieje kilka sztuczek, aby wyświetlić zawartość lub obraz w środku div. Niektóre odpowiedzi są naprawdę miłe i ja też w pełni się z nimi zgadzam.
Absolutne centrowanie poziome i pionowe w CSS
http://www.css-jquery-design.com/2013/12/css-techniques-absolute-horizontal-and-vertical-centering-in-css/
Istnieje ponad 10 technik z przykładami . Teraz to zależy od Ciebie, który wolisz.
Bez wątpienia,
display:table; display:table-Cell
jest to lepsza sztuczka.Oto kilka dobrych sztuczek:
Sztuczka 1 - Używając
display:table; display:table-cell
HTML
Kod CSS
Trick 2 - Za pomocą
display:inline-block
HTML
Kod CSS
Trick 3 - Za pomocą
position:relative;position:absolute
źródło
CSS:
Dodaj tę klasę do elementu zawierającego rzeczy, które chcesz wyrównać w pionie
źródło
Jeśli chcesz korzystać z tej
min-height
właściwości, musisz dodać ten CSS na:źródło