VANHALEN
Новичок
Такая засада есть товарищи. Нынче очень модно и почти обязательно делать адаптивные сайты и чтобы сильно не пользоваться процентами в вёрстке (иногда это просто непозволительно) решил измерять некоторые элементы с помощью JQuery и подгонять размер других элементов, исходя из этих величин. Но столкнулся с одной проблемой. Маленький пример.
Тоесть внутри некого блока находится фотка. Чтобы всё было одинаковой ширины и высоты, замеряем ширину этого блока и подгоняем под него высоту. Так вот иногда при резких движениях, или при загрузке с сильно сжатым окном, он эту измеряемую ширину как буд-то с потолка берёт (обычно намного больше, чем есть). Заметил ещё что, если применять данный скрипт не к блоку, а к фотке, которая в нём находится, то количество подобных глюков значительно уменьшается. Но один из плагинов на сайте, пользуется фоткой товара и должен выводить её в таком виде, что я не могу её сделать например квадратной, или с заданым соотношением сторон, иначе некрасиво будет, так что мне нужно просто уместить её в квадратный блок. Да и по сути то это проблему не решает, а просто уменьшает. Я понимаю, что наверное по хорошему здесь просто нужно поставить какой-то тайм-аут на выполнение, но разве же jQuery(document).ready не является подтверждением того, что документ полностью загружен? Да и тайм-аут всё-таки величина относительная. Как вообще решаются подобные проблемы? Как мне отловить тот момент когда не просто загрузился документ, а ещё чтобы блоки выстроились по ширине и только тогда выполнять скрипт?
Подобную технику я использовал и планирую использовать и для других расчётов, поэтому вопрос насущный.
Код:
function image_size() {
var side_size = $(".jshop_list_product .block_product .image_block").width(); //определяем ширину блока
$(".jshop_list_product .block_product .image_block").css({ 'height' : side_size}); // высота = ширине
}
jQuery(document).ready(function () { image_size(); });
jQuery(window).resize(function () { image_size(); });
Подобную технику я использовал и планирую использовать и для других расчётов, поэтому вопрос насущный.