Tôi đã tạo một plugin jQuery nhỏ cho điều đó. Nguyên tắc rất đơn giản:
Trong vùng chứa, chèn 2 phần tử nội tuyến có cùng nội dung nhưng một phần rất nhỏ theo kiểu .
và khác rất lớn A
. Sau đó, kể từ khi có vertical-align:baseline
theo mặc định, các cơ sở được đưa ra như sau:
^+----+^
| | +-+| | top
height | |.|A|| v
| | +-+|
v +----+
=======================
baseline = top/height
=======================
Đây là plugin trong coffeescript (JS here):
$ = @jQuery ? require 'jQuery'
detectBaseline = (el = 'body') ->
$container = $('<div style="visibility:hidden;"/>')
$smallA = $('<span style="font-size:0;">A</span>')
$bigA = $('<span style="font-size:999px;">A</span>')
$container
.append($smallA).append($bigA)
.appendTo(el);
setTimeout (-> $container.remove()), 10
$smallA.position().top/$bigA.height()
$.fn.baseline = ->
detectBaseline(@get(0))
sau đó, hút thuốc nó với:
$('body').baseline()
// or whatever selector:
$('#foo').baseline()
-
Hãy dùng thử t: http://bl.ocks.org/3157389
Điều này thật tuyệt! Cảm ơn nhiều! – EPLKleijntjens
Một giải pháp thay thế hoàn chỉnh hơn có thể sử dụng http://pomax.nihongoresources.com/pages/Font.js/ - chưa thử nhưng có vẻ tuyệt vời. – abernier
Xin chào @abernier. Tôi đã thử mã của bạn và khi tôi chạy nó tôi nhận được số 1.1108247422680413 cho đường cơ sở trên những gì tôi giả định là phông chữ mặc định cho trang web của tôi. Bạn có thể cho tôi biết con số đó có nghĩa là gì không? Tôi đã làm việc ra khỏi đường cơ sở bằng mắt và tôi không thể thấy số lượng tôi nhận được từ phương pháp của bạn liên quan đến nó như thế nào. Cảm ơn trước. –