Я работаю над мобильным веб-приложением, и на моей странице есть элемент div
, ширина которого установлена на 100%.
Мне нужно установить высоту этого div
, чтобы высота соответствовала заданному соотношению сторон.Например, если размер экрана составлял 300 пикселей в ширину, а соотношение составляло 3: 2, мой сценарий должен получить ширину div
(которая на данный момент должна составлять 300 пикселей) и установить высоту 200 пикселей.
При первой загрузке это работает отлично.Однако, если я поверну экран моего телефона в альбомную ориентацию, ширина div
, очевидно, изменится, поэтому мне нужно сбросить его высоту, чтобы сохранить правильное соотношение.
Моя проблема в том, что я могуНе удается найти событие, которое запускается после изменения размеров элементов.В jQuery Mobile встроено событие orientationchange
, которое срабатывает при повороте экрана из портретного в альбомный и наоборот:
$(window).bind('orientationchange', function (e) {
// Correctly alerts 'landscape' or 'portrait' when orientation is changed
alert(e.orientation);
// Set height of div
var div = $('#div');
var width = div.width();
// Shows the *old* width, i.e the div's width before the rotation
alert(width);
// Set the height of the div (wrongly, because width is incorrect at this stage)
div.css({ height: Math.ceil(width / ratio) });
});
Но это событие, похоже, срабатывает до любой из элементов на странице был изменен в соответствии с новым макетом, что означает (как упомянуто в комментариях), я могу получить только ширину перед поворотом div
, что не то, что мне нужно.
Кто-нибудь знает, как я могу получить новую ширину div
, после того, как вещи изменились сами по себе?