2011-12-22 35 views
5

Có cách nào để lấy số line-height của một span (hoặc phần tử nội tuyến khác) trong JavaScript/jQuery không?Làm thế nào để có được chiều cao của một nhịp?

Tôi cần chính xác tính bằng pixel line-height, không giá trị của các loại 1.2em, normal hoặc chẩn đoán như fontSize * 1.5.

Điều tôi cần làm là kéo dài nền của span để lấp đầy toàn bộ chiều cao của đường. Tôi nghĩ rằng tôi có thể thêm miếng đệm để kéo dài khoảng, nhưng đối với điều này tôi cần chính xác line-height. Nếu ai đó có thể đưa ra cách tiếp cận khác, điều này cũng sẽ hữu ích.

+0

Khoảng thời gian của bạn cần phải có display: block, giống như 'span {line-height: 12px; display: block;} ' –

Trả lời

3
$("span").css("line-height"); 

Lấy giá trị px được tính là chuỗi "16px" chẳng hạn. Nó sử dụng currentStyle của IE hoặc tiêu chuẩn getComputedStyle dưới bìa. Đó là loại đáng ngạc nhiên khi nhìn thấy như khi nó hoạt động như một setter nó elem.style.something = value đó là một điều hoàn toàn khác nhau.

+0

Được sao lưu bởi TFM: http://api.jquery.com/css/ ;-) – PPvG

+1

Đây là điều đầu tiên tôi thử, tất nhiên. Thật không may trên các trình duyệt WebKit nó trả về chuỗi "bình thường" trừ khi tôi đã đặt trước dòng lệnh 'chiều cao '. Tôi đang sử dụng jQuery 1.6.1. Liệu nó có hành vi khác nhau trong các phiên bản sau? –

+0

@RadanGanchev bạn là chính xác, nó trở lại bình thường đối với một số yếu tố. '[] .forEach.call (document.getElementsByTagName (" * "), hàm (v) { console.log (getComputedStyle (v) .lineHeight); });' Chạy trả về giá trị px trên trang này nhiều nhất yếu tố mặc dù. – Esailija

0

giả sử rằng khoảng được chứa trong div.

bạn có thể đặt div thành vị trí: tương đối

và khoảng là khối có chiều cao 100%.

Bằng cách này, bạn sẽ kéo dài khoảng thời gian theo ý muốn.

Ví dụ here (lưu ý:.. Để xem hiệu ứng, thay đổi màu nền của nhịp để minh bạch Bạn sẽ có thể để xem div đỏ)

+0

Tôi đang sử dụng một 'span', bởi vì tôi cần một yếu tố nội tuyến. Mục tiêu của tôi là đánh dấu một số văn bản có thể bắt đầu ở giữa một dòng. 'display: block' không hoạt động đối với tôi. –

0

Nếu thiết kế của bạn cho phép, bạn có thể áp dụng inline-block với các yếu tố bạn đang nhắm mục tiêu và sau đó sử dụng outerHeight ...

var inlineHeight = $('.inline-height').css("display", "inline-block").outerHeight(); 
//console.log('Inline Height:' + inlineHeight); 
2

Một cách dễ dàng để làm điều này là:

var style = window.getComputedStyle(element); 
var lineHeight = style.getPropertyValue('line-height'); 

Điều này sẽ nhận được giá trị tính toán của chiều cao dòng mà không cần sử dụng jQuery và hoạt động trên tất cả các trình duyệt từ IE9 trở đi.

Các vấn đề liên quan