Я сделал крошечный плагин jQuery для этого. Принцип прост:
В контейнере вставьте 2 встроенных элемента с тем же контентом, но в одном стиле очень маленький .
, а другой очень большой A
. Тогда, так как есть vertical-align:baseline
по умолчанию, базовый задается следующим образом:
^+----+^
| | +-+| | top
height | |.|A|| v
| | +-+|
v +----+
=======================
baseline = top/height
=======================
Вот плагин в 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))
затем, выкурить его:
$('body').baseline()
// or whatever selector:
$('#foo').baseline()
-
Дайте ему попробовать т: http://bl.ocks.org/3157389
Это здорово! Большое спасибо! – EPLKleijntjens
Более полная альтернатива может быть использована http://pomax.nihongoresources.com/pages/Font.js/ - еще не пробовала, но кажется замечательной. – abernier
Привет @abernier. Я пробовал ваш код, и когда я его запускаю, я получаю номер 1.1108247422680413 для базовой линии на том, что я предполагаю, является шрифтом по умолчанию для моего веб-сайта. Можете ли вы сказать мне, что означает это число? Я разработал базовый уровень для глаз, и я не вижу, как к нему относится число, которое я получаю от вашего метода. Заранее спасибо. –