Câu trả lời:
Sử dụng line-height:50px;
thay vì chiều cao. Điều đó sẽ làm các trick ;)
Xin lưu ý rằng line-height
cách tiếp cận không thành công nếu bạn có một câu dài trong span
đó ngắt dòng vì không có đủ không gian. Trong trường hợp này, bạn sẽ có hai dòng có khoảng cách với chiều cao của N pixel được chỉ định trong thuộc tính.
Tôi bị mắc kẹt khi tôi muốn hiển thị một hình ảnh với văn bản được căn giữa theo chiều dọc ở bên phải của nó, hoạt động trong một ứng dụng web đáp ứng. Là một cơ sở, tôi sử dụng cách tiếp cận được đề xuất bởi Eric Nickus và Felipe Tadeo.
Nếu bạn muốn đạt được:
và điều này:
.container {
background: url( "https://i.imgur.com/tAlPtC4.jpg" ) no-repeat;
display: inline-block;
background-size: 40px 40px; /* image's size */
height: 40px; /* image's height */
padding-left: 50px; /* image's width plus 10 px (margin between text and image) */
}
.container span {
height: 40px; /* image's height */
display: table-cell;
vertical-align: middle;
}
<span class="container">
<span>This is a centered sentence next to an image</span>
</span>
Đây là cách đơn giản nhất để làm điều đó nếu bạn cần nhiều dòng. Gói span
văn bản của bạn trong một văn bản khác span
và chỉ định chiều cao của nó với line-height
. Bí quyết để nhiều dòng được đặt bên trong span
's line-height
.
<span class="textvalignmiddle"><span>YOUR TEXT HERE</span></span>
.textvalignmiddle {
line-height: /*set height*/;
}
.textvalignmiddle > span {
display: inline-block;
vertical-align: middle;
line-height: 1em; /*set line height back to normal*/
}
Tất nhiên bên ngoài span
có thể là một div
hoặc whathaveyou
span
s, giống như bất kỳ yếu tố nội tuyến nào khác, có thể chứa bất kỳ yếu tố nội tuyến HTML nào . Bất kể, tôi đã viết rằng đó textvalignmiddle
có thể là một div
điều rất cần thiết (và bạn có thể đặt nó thành display:inline;
nếu bạn không thích sử dụng spans
)
span
là bộ chứa nội tuyến chung cho html và không có nhiều gợi ý chỉ là văn bản; `Nó có thể được sử dụng để nhóm các thành phần cho mục đích tạo kiểu ...`. Tôi khuyên bạn nên đọc thông số kỹ thuật trước khi áp dụng các tiêu chuẩn mã hóa cá nhân của bạn lên những người khác nói rằng chúng là sự thật
Cách flexbox:
.foo {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
}
.foo
một nhịp display: flex-inline
sẽ phù hợp hơn
Tôi cần điều này cho các liên kết, vì vậy tôi đã bọc span bằng thẻ a và div, sau đó căn giữa thẻ span
HTML
<div>
<a class="tester" href="#">
<span>Home</span>
</a>
</div>
CSS
.tester{
display: inline-block;
width: 9em;
height: 3em;
text-align: center;
}
.tester>span{
position: relative;
top: 25%;
}
CSS và hình ảnh trung tâm dọc
Tôi đã tạo một bản demo cho trung tâm hình ảnh dọc và văn bản tôi cũng đã thử nghiệm trên firefox, chrome, safari, internet explorer 9 và 8.
Nó rất ngắn và dễ dàng css và html, Vui lòng kiểm tra mã bên dưới và bạn có thể tìm thấy đầu ra trên màn hình.
HTML
<div class="frame">
<img src="capabilities_icon1.png" alt="" />
</div>
CSS
.frame {
height: 160px;
width: 160px;
border: 1px solid red;
white-space: nowrap;
text-align: center; margin: 1em 0;
}
.frame::before {
display: inline-block;
height: 100%;
vertical-align: middle;
content:"";
}
img {
background: #3A6F9A;
vertical-align: middle;
}
Đầu ra nhập mô tả hình ảnh ở đây
Thuộc tính css thẳng đứng không làm những gì bạn mong đợi. Bài viết này giải thích 2 cách để sắp xếp theo chiều dọc một phần tử bằng css.