Cách đặt thuộc tính chiều cao cho SPAN


88

Tôi cần làm cho mã sau có thể co giãn với chiều cao được xác định trước

<style>
.title{
   background: url(bg.gif) no-repeat bottom right;
   height: 25px;
}
</style>

<span class="title">This is title</span>

Nhưng vì span là phần tử nội tuyến nên thuộc tính "height" sẽ không hoạt động.

Tôi đã thử sử dụng div thay thế, nhưng nó sẽ mở rộng lên đến chiều rộng của phần tử trên. Và chiều rộng phải linh hoạt.

Bất cứ ai có thể đề xuất bất kỳ giải pháp tốt cho điều này?

Cảm ơn trước.


1
Bạn nên sử dụng các thẻ tiêu đề (h1, h2, h3, ...) cho tiêu đề. Nó đúng hơn về mặt ngữ nghĩa.
Pickels

1
Vâng, bạn đúng Pickels. Cảm ơn mọi người đã giúp đỡ Đây là css cuối cùng của tôi. Nó hoạt động tốt đối với tôi: <style> h4 {display: inline-block; phóng to: 1; *Hiển thị nội dòng; lề: 0px; chiều cao: 25px; } </style>
Kelvin

Câu trả lời:


142

Cung cấp cho nó display:inline-blocktrong CSS - điều đó sẽ cho phép nó làm những gì bạn muốn.
Về khả năng tương thích: IE6 / 7 sẽ hoạt động với điều này, như chế độ quirks gợi ý:

IE 6/7 chỉ chấp nhận giá trị trên các phần tử có hiển thị tự nhiên: nội tuyến.


Đối với những gì nó đáng giá, IE7 không hỗ trợ inline-block.
Scott Cranfill

Np. @Scott: Tôi không thấy điều đó trên W3 - đây là những gì họ nói:Note: No versions of Internet Explorer (including IE8) support the property values "inline-table", "run-in", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-row", or "table-row-group".
casraf

2
@henasraf - @ Scott nói đúng, tôi không thể sử dụng nó vì nhanh quá: quirksmode.org/css/display.html
Nick Craver

2
Trích dẫn:IE 6/7 accepts the value only on elements with a natural display: inline.
casraf

1
Ahah, tôi đoán nó sẽ hoạt động nếu được áp dụng vào spanlúc đó. Cảm ơn vì thông tin, henasraf.
Scott Cranfill


13

điều này là để làm cho display: inline-block hoạt động trong tất cả các trình duyệt:

Thật kỳ lạ, trong IE (6/7), nếu bạn kích hoạt hasLayout với "zoom: 1" và sau đó đặt màn hình thành nội tuyến, nó sẽ hoạt động như một khối nội tuyến.

.inline-block {
    display: inline-block;
    zoom: 1;
    *display: inline;
}

5

Giả sử bạn không muốn biến nó thành một phần tử khối, thì bạn có thể thử:

.title  {
    display: inline-block; /* which allows you to set the height/width; but this isn't cross-browser, particularly as regards IE < 7 */
    line-height: 2em; /* or */
    padding-top: 1em;
    padding-bottom: 1em;
}

Nhưng giải pháp đơn giản nhất là chỉ cần chữa trị .titlenhư một yếu tố khối cấp, và sử dụng các thẻ tiêu đề thích hợp <h1>thông qua <h6>.


0

nhịp { display: table-cell; height: (your-height + px); vertical-align: middle; }

Để các nhịp hoạt động giống như ô bảng (hoặc bất kỳ phần tử nào khác, đối với vấn đề đó), chiều cao phải được chỉ định. Tôi đã cho các nhịp một chiều cao, và chúng hoạt động tốt - nhưng bạn phải thêm chiều cao để chúng làm những gì bạn muốn.


0

Tất nhiên, một tùy chọn khác là sử dụng Javascript (Jquery tại đây):

$('.box1,.box2').each(function(){
    $(this).height($(this).parent().height());
})

-4

Tại sao bạn cần một khoảng trong trường hợp này? Nếu bạn muốn định dạng chiều cao, bạn có thể sử dụng div không? Bạn có thể thử một div với display: inline, mặc dù điều đó có thể có cùng một vấn đề vì trên thực tế, bạn đang làm điều tương tự như một khoảng.


3
Hoặc, bỏ qua hoàn toàn những lời nói luyên thuyên của tôi và sử dụng câu trả lời của henasraf :)
Seth Petry-Johnson

Các ý kiến ​​biểu quyết từ chối chỉ làm nản lòng những người muốn đóng góp hợp pháp. Dừng lại! Thay vào đó, chỉ cần đưa ra một số phản hồi mang tính xây dựng hoặc có thể nhiều hơn ý kiến ​​của riêng bạn về vấn đề này.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.