Я выбрал наиболее полезный ответ на мой вопрос, но похоже, что решение, которое я искал, не существует. То, что мне было нужно, - это получить ширину элемента в пикселях до того, как переход действительно будет завершен. Эта ширина основана на процентах, поэтому фактическая ширина пикселей будет меняться в зависимости от ряда факторов. То, что я в конечном итоге делает на самом деле было:
- Создание клона JQuery элемента которого мне нужно «конец» измерение перехода.
- Позиционирование клонирования с экрана
- Добавление встроенных стилей в клон, удаление унаследованных свойств перехода CSS, чтобы он сразу получил окончательную/конечную ширину.
- Использование JS, чтобы сохранить конечную ширину переменной
- Удаление клона с .remove JQuery (в)
Делая это, я теперь знаю, что окончание ширина в пикселях будет в данный момент элемента начинает переход, вместо того, чтобы ждать окончания конца перехода, чтобы зафиксировать конечную ширину.
Вот функция, которая делает то, что я описал выше.
var getTransitionEndWidth = function($el) {
$('body').append('<div id="CopyElWrap" style="position:absolute; top:-9999px; opacity:0;"></div>');
var copyEl = document.createElement('div');
var $copy = $(copyEl);
var copyElClasses = $el.attr('class');
$copy.attr('class', copyElClasses).css({
WebkitTransition: 'all 0 0',
MozTransition: 'all 0 0',
MsTransition: 'all 0 0',
OTransition: 'all 0 0',
transition: 'all 0 0'
}).appendTo($('#CopyElWrap'));
var postWidth = $copy.width();
$('#CopyElWrap').remove();
return postWidth;
};
Предполагая, что CSS еще местные, вы можете быть в состоянии играть с [ 'document.styleSheets'] (https://developer.mozilla.org/en-US/docs/Web/API/Document/styleSheets). –
Вам просто нужно подождать, пока переход не будет завершен, тогда вы получите значение. – melancia
@MelanciaUK вся суть вопроса в том, что я не хочу ждать завершения перехода (для разных довольно подробных объяснений). Я просто хочу знать, есть ли способ сделать это, не дожидаясь. – Ben