У меня есть следующий код JQuery:
$(document).ready(function () {
var $containerHeight = $(window).height();
if ($containerHeight <= 818) {
$('.footer').css({
position: 'static',
bottom: 'auto',
left: 'auto'
});
}
if ($containerHeight > 819) {
$('.footer').css({
position: 'absolute',
bottom: '3px',
left: '0px'
});
}
});
Единственная проблема заключается в том, что это работает только при первой загрузке браузера, я хочу containerHeight
также проверить, когда они изменяют размер окна?
Любые идеи?
$(window).resize(function(){...})
Ответы:
Вот пример использования jQuery, javascript и css для обработки событий изменения размера.
(css, если ваш лучший выбор, если вы просто стилизуете вещи при изменении размера (медиа-запросы))
http://jsfiddle.net/CoryDanielson/LAF4G/
CSS
Javascript
JQuery
Как я могу остановить мой код изменения размера от выполнения так часто !?
Это первая проблема, которую вы заметите при привязке к изменению размера. Код изменения размера называется LOT, когда пользователь вручную изменяет размер браузера, и может показаться довольно неудобным.
Чтобы ограничить частоту вызова кода изменения размера, вы можете использовать методы debounce или throttle из библиотек подчеркивания и нижней черты .
debounce
выполнит ваш код изменения размера X через количество миллисекунд после события LAST resize. Это идеально, если вы хотите вызывать код изменения размера только один раз, после того как пользователь завершит изменение размера браузера. Это хорошо для обновления графиков, диаграмм и макетов, которые могут быть дорогими для обновления каждого отдельного события изменения размера.throttle
будет выполнять ваш код изменения размера каждые X миллисекунд. Это «душит», как часто код вызывается. Это не так часто используется с событиями изменения размера, но об этом стоит знать.Если у вас нет подчеркивания или нижней черты, вы можете реализовать подобное решение самостоятельно: JavaScript / JQuery: $ (window) .resize, как запустить ПОСЛЕ изменения размера?
источник
Переместите свой javascript в функцию, а затем привяжите эту функцию к изменению размера окна.
источник
В jQuery есть обработчик событий изменения размера, который вы можете прикрепить к окну .resize () . Таким образом, если вы поставите,
$(window).resize(function(){/* YOUR CODE HERE */})
то ваш код будет запускаться каждый раз, когда размер окна изменяется.Итак, вы хотите запустить код после загрузки первой страницы и всякий раз, когда окно изменяется. Поэтому вы должны вытащить код в свою собственную функцию и запустить эту функцию в обоих случаях.
Смотрите: Кросс-браузерное событие изменения размера окна - JavaScript / jQuery
источник
$(function() { $(window).resize(positionFooter).triggerHandler('resize'); });
Попробуйте это решение. Срабатывает только после загрузки страницы, а затем во время изменения размера окна в соответствии с предопределенным
resizeDelay
.источник
resizer();
сразу после установки интервала. И поскольку дляdoResize
него установлено значениеtrue
, оно запускается, когда документ готов.resizeDelay
еслиdoResize
переменная установлена вtrue
. АdoResize
также установленоtrue
на$(window).resize()
. Таким образом , при изменении размеров окна, что наборыdoResize
дляtrue
и во время следующей проверкиresizer()
функции называется.Дайте вашей анонимной функции имя, затем:
http://api.jquery.com/category/events/
источник
может использовать это тоже
источник
Это приведет к тому, что ваш обработчик изменения размера сработает при изменении размера окна и при готовности документа. Конечно, вы можете прикрепить свой обработчик изменения размера вне обработчика готовых документов, если хотите
.trigger('resize')
вместо этого запускать при загрузке страницы.ОБНОВЛЕНИЕ : вот еще один вариант, если вы не хотите использовать какие-либо другие сторонние библиотеки.
Этот метод добавляет определенный класс к вашему целевому элементу, поэтому у вас есть преимущество в управлении стилем только через CSS (и избегая встроенного стиля).
Это также гарантирует, что класс добавляется или удаляется только при срабатывании фактической пороговой точки, а не при каждом изменении размера. Он будет срабатывать только в одной пороговой точке: когда высота изменяется от <= 818 до> 819 или наоборот, а не несколько раз в каждом регионе. Это не касается каких-либо изменений ширины .
Например, у вас могут быть следующие правила CSS:
источник
Использовать это:
источник
Вы можете привязать
resize
использование.resize()
и запуск вашего кода при изменении размера браузера. Вам также необходимо добавитьelse
условие в вашif
оператор, чтобы значения css переключали старое и новое, а не просто устанавливали новое.источник