Единственное решение, которое я нашел, ($(this).innerHeight() - $(this).height()) / 2
Но / 2 не правильная опция, потому что у пользователя могут быть дополнение-top:0px и дополнение-bottom:20px.
Существует ли способ сделать более точные дополнительные значения?
Я думал о css('padding-top')
и затем проанализируйте его путем принятия только международного участия, но значение может быть в "них", например, а не в "пкс"
Затем сделайте оператор переключения для каждого типа значения? Для них один, для пкс другой?
Это все немного сложно и занимает больше места в коде...
Одна из основных сильных сторон jQuery состоит в том, что он настолько легко подключаемый, что, если у вас есть потребность, которая не сразу удовлетворяется библиотекой, существует обширный набор подключаемых модулей для поиска. И если нет никого, который делает то, что вы хотите, действительно легко создать свой собственный.
Я думаю, что правильный путь, если вы не можете найти плагин, который делает то, что вы хотите, - это последний путь: написать свой собственный.
Тем не менее, убедитесь, что вы четко представляете себе спецификации вашего плагина. Что он должен вернуть, если у элемента нет настройки css для заполнения? Должен ли он возвращать стиль для этого элемента или вычисленный стиль? Что происходит с недопустимым css (скажем, 'padding-top: 10 unitsThatDontExist;' или 'padding-left: two;')?
Чтобы начать работу - это то, что может выглядеть с использованием вашего собственного плагина как в вашем коде:
var topPadding = $('#anElement').padding('top');
Чтобы сделать это доступным, просто напишите плагин вроде этого:
$.fn.padding(direction) {
// calculate the values you need, using a switch statement
// or some other clever solution you figure out
// this now contains a wrapped set with the element you apply the
// function on, and direction should be one of the four strings 'top',
// 'right', 'left' or 'bottom'
// That means you could probably do something like (pseudo code):
var intPart = this.css('padding-' + direction).getIntegerPart();
var unit = this.css('padding-' + direction).getUnit();
switch (unit)
{
case 'px':
return intPart;
case 'em':
return ConvertEmToPx(intPart)
default:
// Do whatever you feel good about as default action
// Just make sure you return a value on each code path
}
};