Eu tenho o seguinte código 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'
});
}
});
O único problema é que isso só funciona quando o navegador é carregado pela primeira vez. Quero containerHeight
também ser verificado quando eles estão redimensionando a janela?
Alguma ideia?
$(window).resize(function(){...})
Respostas:
Aqui está um exemplo usando jQuery, javascript e css para manipular eventos de redimensionamento.
(css se sua melhor aposta, se você está apenas estilizando coisas no redimensionamento (consultas de mídia))
http://jsfiddle.net/CoryDanielson/LAF4G/
css
javascript
jQuery
Como faço para impedir que meu código de redimensionamento seja executado com tanta frequência !?
Este é o primeiro problema que você notará ao vincular o redimensionamento. O código de redimensionamento é chamado de MUITO quando o usuário está redimensionando o navegador manualmente e pode parecer bastante irregular.
Para limitar quantas vezes o seu código de redimensionamento é chamado, você pode usar o debounce ou acelerador métodos da sublinhado & lowdash bibliotecas.
debounce
executará apenas o código de redimensionamento X número de milissegundos após o evento de redimensionamento LAST. Isso é ideal quando você deseja chamar seu código de redimensionamento apenas uma vez, após o usuário ter redimensionado o navegador. É bom para atualizar gráficos, tabelas e layouts que podem ser caros para atualizar todos os eventos de redimensionamento.throttle
somente executará seu código de redimensionamento a cada número X de milissegundos. Ele "acelera" a frequência com que o código é chamado. Isso não é usado com frequência em eventos de redimensionamento, mas vale a pena estar ciente.Se você não tiver sublinhado ou pouco brilho, poderá implementar uma solução semelhante: JavaScript / JQuery: $ (window). Redimensionar como acionar APÓS o redimensionamento ser concluído?
fonte
Mova seu javascript para uma função e vincule-a ao redimensionamento da janela.
fonte
O jQuery possui um manipulador de eventos de redimensionamento que pode ser anexado à janela .resize () . Portanto, se você colocar
$(window).resize(function(){/* YOUR CODE HERE */})
, seu código será executado sempre que a janela for redimensionada.Portanto, o que você deseja é executar o código após o carregamento da primeira página e sempre que a janela for redimensionada. Portanto, você deve colocar o código em sua própria função e executá-la nas duas instâncias.
Consulte: Evento de redimensionamento da janela entre navegadores - JavaScript / jQuery
fonte
$(function() { $(window).resize(positionFooter).triggerHandler('resize'); });
Experimente esta solução. É acionado apenas quando a página é carregada e, em seguida, durante o redimensionamento da janela, no predefinido
resizeDelay
.fonte
resizer();
logo após definir o intervalo. E comodoResize
está definido comotrue
, é acionado quando o documento está pronto.resizeDelay
sedoResize
estiver definida comotrue
. EdoResize
também está definido paratrue
on$(window).resize()
. Então você redimensiona a janela, que definedoResize
comotrue
e durante a próximaresizer()
função de verificação é chamada.Dê um nome à sua função anônima e, em seguida:
http://api.jquery.com/category/events/
fonte
pode usá-lo também
fonte
Isso fará com que o manipulador de redimensionamento seja acionado no redimensionamento da janela e no documento pronto. Obviamente, você pode anexar seu manipulador de redimensionamento fora do manipulador de documentos, se desejar
.trigger('resize')
executar o carregamento da página.ATUALIZAR : Aqui está outra opção, se você não quiser usar outras bibliotecas de terceiros.
Essa técnica adiciona uma classe específica ao seu elemento de destino, para que você tenha a vantagem de controlar o estilo apenas por CSS (e evitar o estilo embutido).
Também garante que a classe seja adicionada ou removida apenas quando o ponto de limite real for acionado e não em todo e qualquer redimensionamento. Ele será acionado apenas em um ponto limite: quando a altura mudar de <= 818 para> 819 ou vice-versa e não várias vezes em cada região. Não está preocupado com nenhuma alteração na largura .
Como exemplo, você pode ter o seguinte, como algumas de suas regras CSS:
fonte
Usa isto:
fonte
Você pode vincular
resize
usando.resize()
e executar seu código quando o navegador é redimensionado. Você também deve adicionar umaelse
condição à suaif
instrução para que seus valores css alternem o antigo e o novo, em vez de apenas definir o novo.fonte