2010-02-26 35 views
69

tôi cần phải làm cho mã sau đây căng ra với chiều cao được xác định trướcLàm thế nào để thiết lập thuộc tính chiều cao cho SPAN

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

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

Nhưng kể từ khoảng là yếu tố nội tuyến, "height" bất động sản sẽ không hoạt động.

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

Có ai có thể đề xuất bất kỳ giải pháp tốt nào cho vấn đề này không?

Xin cảm ơn trước.

+1

Bạn nên sử dụng thẻ tiêu đề (h1, h2, h3, ...) cho các chức danh. Nó đúng ngữ nghĩa hơn. – Pickels

+1

Vâng, bạn là đúng Pickels. Cảm ơn tất cả mọi người đã giúp đỡ của bạn. Đây là css cuối cùng của tôi.Nó hoạt động tuyệt vời cho tôi: Kelvin

Trả lời

120

Đặt mã số display:inline-block trong CSS - điều đó sẽ cho phép nó thực hiện những gì bạn muốn.
Xét về khả năng tương thích: IE6/7 sẽ làm việc với điều này, như chế độ quirks gợi ý:

IE 6/7 chấp nhận giá trị duy nhất trên các yếu tố với một màn hình tự nhiên: inline.

+0

Đối với những gì nó có giá trị, IE7 không hỗ trợ 'inline-block'. –

+0

Công việc tuyệt vời henasraf! Cảm ơn rất nhiều;) – Kelvin

+0

Np. @ Scott: Tôi không thấy điều đó trên W3 - đây là những gì họ nói: 'Lưu ý: Không có phiên bản nào của Internet Explorer (bao gồm IE8) hỗ trợ các giá trị thuộc tính" inline-table "," run-in "," table ", "bảng chú thích", "ô bảng", "bảng-cột", "bảng-cột-nhóm", "hàng bảng" hoặc "nhóm-hàng-nhóm" .' – casraf

-2

Tại sao bạn cần một khoảng thời gian trong trường hợp này? Nếu bạn muốn tạo kiểu cho 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 đề kể từ khi bạn có hiệu lực được làm điều tương tự như một khoảng.

+3

Hoặc, bỏ qua những ramblings của tôi hoàn toàn và sử dụng câu trả lời của henasraf :) –

+0

Nhận xét bỏ phiếu xuống chỉ ngăn cản những người muốn đóng góp hợp pháp. Dừng lại đi! Chỉ cần cung cấp một số thông tin phản hồi mang tính xây dựng để thay thế, hoặc có thể nhiều hơn vào vấn đề, ý kiến ​​của riêng bạn về vấn đề này. – Aaron

5

Giả sử bạn không muốn biến nó thành một yếu tố ngăn chặn, sau đó 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 đối xử với .title là một yếu tố khối cấp, và sử dụng thích hợp các thẻ tiêu đề <h1> thông qua <h6>.

+0

Bạn nói đúng, tôi đã chuyển sang tiêu đề ngay bây giờ. – Kelvin

13

này là làm cho màn hình: công việc inline-block trong tất cả các trình duyệt:

Quirkly đủ, trong IE (6/7), nếu bạn kích hoạt hasLayout với "zoom: 1" và sau đó thiết lập màn hình để nội tuyến , nó hoạt động như một khối nội tuyến.

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

Cảm ơn I.devries, tôi đã sử dụng mã của bạn. Hy vọng nó sẽ làm việc cho IE6/7. – Kelvin

0

khoảng { display: table-cell; height: (your-height + px); vertical-align: middle; }

Đối với nhịp làm việc giống như một table-cell (hoặc bất kỳ yếu tố khác, cho rằng vấn đề), chiều cao phải được xác định. Tôi đã đưa ra một chiều cao, và họ làm việc tốt - nhưng bạn phải thêm chiều cao để có được họ làm những gì bạn muốn.

0

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

$('.box1,.box2').each(function(){ 
    $(this).height($(this).parent().height()); 
}) 
Các vấn đề liên quan