Sao chép đối tượng vùng chứa và viết 2 chữ cái và tính chiều cao. Điều này trả về chiều cao thực với tất cả các kiểu được áp dụng, chiều cao dòng, vv. Bây giờ, tính toán đối tượng chiều cao/kích thước của một chữ cái. Trong Jquery, chiều cao excelude padding, margin và biên giới, nó là rất tốt để tính toán chiều cao thực sự của mỗi dòng:
other = obj.clone();
other.html('a<br>b').hide().appendTo('body');
size = other.height()/2;
other.remove();
lines = obj.height()/size;
Nếu bạn sử dụng một phông chữ hiếm với chiều cao khác nhau của mỗi chữ cái, điều này không hoạt động. Nhưng làm việc với tất cả các phông chữ bình thường, như Arial, mono, truyện tranh, Verdana, vv Kiểm tra với phông chữ của bạn.
Ví dụ:
<div id="content" style="width: 100px">hello how are you? hello how are you? hello how are you?</div>
<script type="text/javascript">
$(document).ready(function(){
calculate = function(obj){
other = obj.clone();
other.html('a<br>b').hide().appendTo('body');
size = other.height()/2;
other.remove();
return obj.height()/size;
}
n = calculate($('#content'));
alert(n + ' lines');
});
</script>
Kết quả: 6 Lines
trình trong tất cả các trình duyệt mà không cần chức năng hiếm ra các tiêu chuẩn.
Kiểm tra: https://jsfiddle.net/gzceamtr/
Nguồn
2017-02-25 21:22:16
Như được chỉ ra bởi tài liệu [element.getClientRects] của Mozilla (https://developer.mozilla.org/en/DOM/element.getClientRects), ít nhất là đối với các phần tử _inline_, đặc tả W3C * * kết quả trong một rect cho mỗi dòng văn bản - không lý tưởng, nhưng ít nhất là điều gì đó. – natevw
getClientRects() là chiều dài chính xác. getComputedStyle() có thể trả về các giá trị như "kế thừa", "bình thường" và "tự động". – Binyamin