Mam następujący kod 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'
});
}
});
Jedyny problem polega na tym, że działa to tylko przy pierwszym ładowaniu przeglądarki. Czy chcę containerHeight
być sprawdzany także podczas zmiany rozmiaru okna?
Jakieś pomysły?
$(window).resize(function(){...})
Odpowiedzi:
Oto przykład użycia jQuery, javascript i css do obsługi zdarzeń zmiany rozmiaru.
(css, jeśli najlepszym rozwiązaniem jest stylizacja przy zmianie rozmiaru (zapytania mediów))
http://jsfiddle.net/CoryDanielson/LAF4G/
css
javascript
jQuery
Jak mogę tak często nie wykonywać kodu zmiany rozmiaru !?
Jest to pierwszy problem, który zauważysz podczas wiązania w celu zmiany rozmiaru. Kod zmiany rozmiaru nazywa się LOT, gdy użytkownik ręcznie zmienia rozmiar przeglądarki i może czuć się dość rozzłoszczony.
Aby ograniczyć, jak często nazywany jest kod zmiany rozmiaru, można użyć zwłoki czasowej lub przepustnicy metody z podkreśleniem & lowdash bibliotek.
debounce
wykona kod zmiany rozmiaru X liczbę milisekund po zdarzeniu LAST resize. Jest to idealne rozwiązanie, gdy chcesz wywołać swój kod zmiany rozmiaru tylko raz, po zakończeniu zmiany rozmiaru przeglądarki. Jest dobry do aktualizacji wykresów, wykresów i układów, których aktualizacja każdego pojedynczego zdarzenia może być kosztowna.throttle
wykona kod zmiany rozmiaru tylko co X milisekund. „Ogranicza” częstotliwość wywoływania kodu. Nie jest to często używane w przypadku zdarzeń zmiany rozmiaru, ale warto o tym pamiętać.Jeśli nie masz podkreślenia lub ograniczenia, możesz samodzielnie zaimplementować podobne rozwiązanie: JavaScript / JQuery: $ (okno) .resize jak strzelać PO zakończeniu zmiany rozmiaru?
źródło
Przenieś javascript do funkcji, a następnie powiąż tę funkcję ze zmianą rozmiaru okna.
źródło
jQuery ma moduł obsługi zdarzeń zmiany rozmiaru, który można dołączyć do okna, .resize () . Tak więc, jeśli wstawisz,
$(window).resize(function(){/* YOUR CODE HERE */})
twój kod będzie uruchamiany przy każdej zmianie rozmiaru okna.Tak więc chcesz uruchomić kod po załadowaniu pierwszej strony i po zmianie rozmiaru okna. Dlatego należy pobrać kod do własnej funkcji i uruchomić tę funkcję w obu instancjach.
Zobacz: Zdarzenie zmiany rozmiaru okna przeglądarki - JavaScript / jQuery
źródło
$(function() { $(window).resize(positionFooter).triggerHandler('resize'); });
Wypróbuj to rozwiązanie. Uruchamia się tylko po załadowaniu strony, a następnie podczas zmiany rozmiaru okna we wstępnie zdefiniowanym
resizeDelay
.źródło
resizer();
zaraz po ustawieniu interwału. A ponieważdoResize
jest ustawiony natrue
, uruchamia się, gdy dokument jest gotowy.resizeDelay
jeślidoResize
zmienna jest ustawiona natrue
. IdoResize
jest równieżtrue
włączony$(window).resize()
. Zmieniasz więc okno, które ustawia siędoResize
natrue
i podczas następnego sprawdzaniaresizer()
jest wywoływana funkcja.Nadaj swojej anonimowej funkcji nazwę, a następnie:
http://api.jquery.com/category/events/
źródło
też mogę z tego skorzystać
źródło
Spowoduje to, że moduł obsługi zmiany rozmiaru wyzwoli przy zmianie rozmiaru okna i przygotowaniu dokumentu. Oczywiście możesz dołączyć moduł zmiany rozmiaru poza moduł obsługi dokumentów, jeśli
.trigger('resize')
zamiast tego chcesz uruchomić ładowanie strony.AKTUALIZACJA : Oto kolejna opcja, jeśli nie chcesz korzystać z bibliotek innych firm.
Ta technika dodaje określoną klasę do elementu docelowego, dzięki czemu masz kontrolę nad stylizacją tylko za pomocą CSS (i unikając stylizacji wbudowanej).
Zapewnia również, że klasa jest dodawana lub usuwana tylko wtedy, gdy wyzwalany jest rzeczywisty punkt progowy, a nie przy każdej zmianie rozmiaru. Będzie strzelał tylko w jednym punkcie progowym: gdy wysokość zmieni się z <= 818 na> 819 lub odwrotnie i nie wiele razy w obrębie każdego regionu. Nie dotyczy żadnej zmiany szerokości .
Na przykład możesz mieć następujące zasady CSS:
źródło
Użyj tego:
źródło
Możesz powiązać
resize
za pomocą.resize()
i uruchomić swój kod, gdy rozmiar przeglądarki jest zmieniony. Musisz także dodaćelse
warunek do swojejif
instrukcji, aby wartości css przełączały stare i nowe, zamiast tylko ustawiać nowe.źródło