normal
является допустимым параметром для line-height
, поэтому на самом деле нет способа обойти это для браузеров, которые будут возвращать это.
В качестве альтернативы, вы можете использовать .css('height')
, так как он будет учитывать только внутреннюю часть элемента, а не padding / border / margin. Если бы у вас был многострочный элемент или элемент, содержащий больше, чем просто текст, потребовалось бы немного творчества.
http://jsfiddle.net/xVBfb/
Редактировать: Примером обходного решения может быть
<span id='def' style='line-height:inherit;display:none;'> </span>
внутри элемента, затем, чтобы найти высоту строки, вы можете просто использовать .height()
из #def, поскольку она всегда будет состоять только из одной строки и, следовательно, высоты строки родительского элемента.
Chrome в Windows XP является примером браузера, который возвращает normal
в этом jsfiddle, если явно не указано иное. Firefox возвращает количество пикселей. normal
- начальное значение для спецификации w3.
http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height