Tôi đang gọi số $("#foobar").css("line-height")
và nhận lại "bình thường". Làm cách nào để dịch số này thành số lượng pixel? Có phải "bình thường" được định nghĩa trong đặc tả CSS hay là trình duyệt cụ thể không?jQuery/CSS: chiều cao dòng "bình thường" ==? Px
Trả lời
Bình thường được gọi là abnormal
trên several instances vì có sự thiếu nhất quán giữa các trình duyệt.
tuyên bố line-height: bình thường không chỉ thay đổi từ trình duyệt để trình duyệt, mà tôi đã dự kiến trong thực tế, định lượng những khác biệt là toàn bộ điểm nhưng họ cũng thay đổi từ một phông chữ mặt đối khác, và cũng có thể thay đổi trong một khuôn mặt nhất định.
Tôi nghĩ rằng nó đáng để cung cấp liên kết quay lại trang web của Eric Meyer để tìm nguồn trích dẫn của bạn, để có một nội dung hấp dẫn: http://meyerweb.com/eric/thoughts/2008/05/ 06/line-height-abnormal/ –
-1 vì điều này không đến gần để trả lời câu hỏi. Thông tin tốt, nhưng phải là một bình luận. –
@MartinJespersen Tôi sẽ không xóa câu trả lời, ngay cả sau khi đọc nó ngay bây giờ, tôi vẫn nghĩ rằng tôi đã trả lời chính xác vì 'bình thường' là trình duyệt cụ thể và, do đó, không nhất quán trên trình duyệt và không được dịch sang pixel. Điều đó nói rằng tôi rất đánh giá cao bạn đã dành thời gian để cung cấp thông tin phản hồi về downvote, cảm ơn! :) – Frankie
normal
là cài đặt hợp lệ cho line-height
để thực sự không có cách nào cho các trình duyệt sẽ trả về điều đó.
Hoặc, bạn có thể sử dụng .css('height')
, vì nó sẽ chỉ đếm phần bên trong của phần tử, không phải đệm/đường viền/lề. Nó sẽ mất một chút sáng tạo nếu bạn có một yếu tố đa dòng, hoặc một yếu tố có nhiều hơn chỉ là văn bản trong đó.
Edit: Một ví dụ về một công việc xung quanh sẽ có
<span id='def' style='line-height:inherit;display:none;'> </span>
trong phần tử, sau đó để tìm chiều cao dòng bạn chỉ có thể sử dụng .height()
của #def vì nó sẽ luôn luôn chỉ có một dòng và do đó, chiều cao dòng của phần tử gốc.
Chrome trong Windows XP là ví dụ về trình duyệt trả về normal
trong jsfiddle đó trừ khi được chỉ định rõ ràng khác. Firefox trả về số điểm ảnh. normal
là giá trị ban đầu cho mỗi thông số w3. http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height
Rõ ràng cách giải quyết mà bạn cung cấp có vẻ là lựa chọn tốt nhất. Cảm ơn vì điều đó. – inhan
Theo this page, có vẻ như hầu hết các trình duyệt gần đây sử dụng giá trị tương tự cho line-height: normal
: 1,14, id est các font-size
sở hữu với hệ số 1,14.
thử với một số trình duyệt (trên Windows XP):
- Chrome 21.0.1180.75
- Firefox 14.0.1
- Safari 5.1.7
- Opera 11,64
- IE 7
- IE 8
EDIT
tôi đã sai, line-height
phụ thuộc của font-family
, font-size
, trình duyệt của bạn, có lẽ hệ điều hành của bạn ...
Đọc thêm trên Eric Meyers' website.
lưu ý: chiều cao dòng: 1em; == cỡ chữ: * bất kỳ * px nào; –
Vì vậy, điều này có nghĩa là "dòng chiều cao: 1.14em" là tuyên bố tương đương nhưng rõ ràng? –
Tôi giả định nó, nhưng nó không đúng. 'line-height' phụ thuộc vào' font-family', 'font-size', trình duyệt của bạn, có thể là hệ điều hành của bạn ... Bạn sẽ tìm thấy một số đọc trên [Eric Meyers 'website] (http://meyerweb.com/ eric/thoughts/2008/05/06/line-height-abnormal /) – zessx
Tính toán chính xác chiều cao dòng bình thường trong pixel rất khó. Mặc dù, theo số MDN khoảng 1,2em.
Nếu bạn đã:
body{
font-size: 16px;
}
Vì vậy, trang web của bạn có bình thường font-size là 16px thì line-height bình thường sẽ là khoảng 24px
. Điều này có nghĩa là bạn có thể tính giá trị pixel kích thước phông chữ thông thường nhân với 1.5
là 16px * 1.5 == 24px
Lưu ý: Tôi không nhân với 1,2 vì có sự khác biệt giữa giá trị px và giá trị em.
Tuy nhiên điều này đã được viết từ lâu rồi nhưng đã giúp tôi viết giải pháp tạm thời trong nhiệm vụ của mình. Tôi đang sao chép mã này hơn là những người khác có thể sử dụng nó.
$('#lineHeightInc')
.click(function() {
var box = GetSelectedBox();
var ct = box.data('LineHeight');
if (isNaN(ct))
ct = 0;
ct++;
box.css('line-height', (parseFloat(box.css('font-size')) * 1.61 + ct) + 'px');
box.data('LineHeight', ct);
});
$('#lineHeightDic')
.click(function() {
var box = GetSelectedBox();
var ct = box.data('LineHeight');
if (isNaN(ct))
ct = 0;
ct--;
box.css('line-height', (parseFloat(box.css('font-size')) * 1.61 + ct) + 'px');
box.data('LineHeight', ct);
});
- 1. Lấy chiều cao dòng của phần tử không có 'px'
- 2. Cách lấy x% chiều cao trong px?
- 3. Tìm giá trị pixel cho chiều cao dòng khi "bình thường" trong Chrome
- 4. Làm cách nào để đặt chiều cao khoảng trống bằng chiều cao dòng mặc định?
- 5. chiều cao so với kiểu chiều cao dòng
- 6. EM cho chiều cao dòng
- 7. Làm tròn chiều cao dòng
- 8. Dòng chiều dài tối đa docstring có khác với chuẩn PEP8 bình thường không?
- 9. Chiều cao dòng trong fpdf multicell
- 10. Vấn đề chiều cao dòng Cufon
- 11. HTML Tăng nghiêm ngặt chiều cao dòng
- 12. CSS - Chiều cao của 100% trừ đi #px - Header và Footer
- 13. kết thúc dòng Bình thường hoá trong Visual Studio 2010
- 14. dòng-chiều cao so với vấn đề chiều cao con trỏ trong Textarea trong chrome
- 15. Phép tối ưu hóa không hoạt động bình thường đối với một TextView đa dòng với chiều cao tối đa tùy ý
- 16. Sự khác biệt giữa chiều cao dòng: 1,5 và chiều cao dòng: 150% trong css là gì?
- 17. Bình thường hóa Unicode
- 18. getheight() px hoặc dpi?
- 19. calc() 100% + #px
- 20. C# - StreamReader.ReadLine không hoạt động bình thường!
- 21. Chiều cao dòng ghi đè CSS trên từ bọc
- 22. Có gì giống như chiều cao dòng tự động không?
- 23. Tại sao kiểm soát đệm với chiều cao dòng?
- 24. Chiều cao dòng ảnh hưởng đến hình ảnh?
- 25. Chiều cao dòng có thể chạy trên Android
- 26. DOCTYPE ảnh hưởng đến việc hiển thị chiều cao dòng
- 27. Quy trình bình thường dài
- 28. Canonicalize/bình thường hóa URL?
- 29. Bình thường hóa trong MYSQL
- 30. Trạng thái đánh dấu UISlider với chiều rộng ngón tay cái khác so với bình thường
Bạn đã sử dụng trình duyệt/nền tảng nào? Một bản demo trực tiếp cũng có thể giúp bạn (http://jsbin.com và http://jsfiddle.net đều tốt). Firefox 3.6.8 và Chrome 6.0.472.51 beta (trên Ubuntu 10.04) cả hai giá trị pixel trở lại, như mong đợi. Trên SO '$ ('div.container'). Css ('line-height');' trả về 11.2px (FF). –
Chrome trên Windows XP trả về 'bình thường' – Robert