Pionowo środek obrócony tekst za pomocą CSS
Mam następujący HTML:
<div class="outer">
<div class="inner rotate">Centered?</div>
</div>
div.outer
jest wąskim pionowym pasem. Obraca się o 90 stopni. Chciałbym tekst " wyśrodkowany?", aby pojawić się na środku w jego pojemniku div. Nie znam z góry wielkości żadnego div.
To się zbliża: http://jsfiddle.net/CCMyf/2/. widać z jsfiddle, że tekst jest wyśrodkowany pionowo przed zastosowaniem stylu transform: rotate(-90deg)
, ale jest nieco przesunięty po. Jest to szczególnie zauważalne, gdy div.outer
jest krótko.
Czy można wyśrodkować ten tekst pionowo, nie znając z góry żadnego rozmiaru? Nie znalazłem żadnych wartości transform-origin
, które rozwiązują ten problem.
6 answers
Kluczem jest ustawienie pozycji top i left na 50%, a następnie transformX i transformY na -50%.
.inner {
position: absolute;
top: 50%;
left: 50%;
}
.rotate {
transform: translateX(-50%) translateY(-50%) rotate(-90deg);
}
Zobacz: http://jsfiddle.net/CCMyf/79/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 21:28:13
Może być trochę późno na odpowiedź na to pytanie, ale natknąłem się na ten sam problem i znalazłem jakiś sposób na osiągnięcie go, dodając inny div w drodze.
<div class="outer">
<div class='middle'><span class="inner rotate">Centered?</span></div>
</div>
I zastosowanie text-align: center
na tym środkowym elemencie, wraz z pozycjonowaniem:
.middle {
margin-left: -200px;
width: 400px;
text-align: center;
position: relative;
left: 7px;
top: 50%;
line-height: 37px;
}
.inner
otrzymuje również display: inline-block;
, aby włączyć właściwości rotate
i text-align
.
Oto odpowiednie skrzypce: http://jsfiddle.net/CCMyf/47/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-20 11:41:45
Czy możesz dodać margin: 0 auto;
do klasy "rotate", aby wyśrodkować tekst.
.rotate {
-webkit-transform: rotate(-90deg);
-ff-transform: rotate(-90deg);
transform: rotate(-90deg);
width: 16px; /* transform: rotate() does not rotate the bounding box. */
margin: 0 auto;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-28 15:04:12
Odpowiedź z "bjnsn" jest dobra, ale nie doskonała, ponieważ zawodzi, gdy tekst zawiera w sobie spację. Na przykład użył " Centered?"jako tekst, ale jeśli zmienimy tekst na Niech przypuszczają" wyśrodkowany? lub nie ' to nie będzie działać dobrze i będzie następny wiersz po spacji. Ther nie jest szerokością ani wysokością zdefiniowaną dla wewnętrznego bloku div.
.inner {
font-size: 13px;
font-color: #878787;
position: absolute;
top: 50%;
left: 50%;
background: #DDD;
}
Https://jsfiddle.net/touqeer_shakeel/f1gfy1yy/ Ale możemy zrobić cały tekst wyśrodkowany wyrównać prawidłowo, ustawiając wewnętrzną szerokość div równa wysokości zewnętrznego div, linia-wysokość wewnętrznego div równa szerokości zewnętrznego div I ustawienie właściwości display flex dla wewnętrznego div z właściwościami align-items: center i justify-content: center.
.inner {
font-size: 13px;
font-color: #878787;
position: absolute;
top: 50%;
left: 50%;
display: flex;
justify-content:center;
align-items:center;
line-height:40px;
}
$('#height').on('change', function(e) {
$('.outer').css('height', $('#height').val() + 'px');
$('.inner').css('width', $('#height').val() + 'px');
});
Aktualizacja https://jsfiddle.net/touqeer_shakeel/cjL21of5/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-30 10:35:05
Usunięcie : margin-top: -7px;
z .inner
sprawiło, że pionowo obrócony tekst wyśrodkował dla mnie. Spowodowało to również, że Tekst poziomy nie był wyśrodkowany.
Po prostu usunąć powyższy kod?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-28 15:05:38
Możesz dodać to:
$('.inner').css('margin-top', $(this).parent().height() - 2*$(this).height());
Do funkcji .on('change')
, Jak widać tutaj: http://jsfiddle.net/darkajax/hVhbp/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-28 15:08:25