Redimensionner avec jQuery

Résolu
Fetide68 Messages postés 745 Date d'inscription   Statut Membre Dernière intervention   -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai créé et utilisé le script ci-dessous suivant pour dimensionner les éléments en largeur et en hauteur avec jquery au chargement de la page...

Ma page est constituée d'une balise <header> en haut (width css 100%) et hauteur auto. Le menu (balise <nav>) est à gauche avec une largeur à 200px et la page (<main>) occupe le reste de la page.

Seulement, lorsque j'aimerais que le script s 'exécute aussi lorsque je redimensionne la page.

Autre problème, je ne peux utiliser "$(document).ready(function()" qu'une seule fois par page/document. Comme cette fonction est appelée sur toutes les pages, j'ai donc mis ces lignes après la balise <footer>.

Mais si j'affiche la page "accueil.php" et que cette page nécessite une foncion spécifique à utiliser quand "$(document).ready(function()", je suis obligé d'afficher cette fonction sur toutes les pages et non seulement lorsque j'affiche "accueil.php".

Est-il possible d'exécuter cette fonction qui redimensionne les éléments sur un autre événement que "$(document).ready(function()" ? Dois-je l'écrire deux fois (on load et on ready) ou existe-t-il une formule plus rapide ?


<script type="text/javascript">
$(document).ready(function(){
var hauteurHeader = $('header').height();
var hauteurPage = $(window).height();
hauteur = hauteurPage - hauteurHeader;

var largeurMenu = $('nav').width();
var largeurPage = $(window).width()-20;
largeur = largeurPage-largeurMenu;

$('nav').height(hauteur);
$('main').width(largeur);
$('main').height(hauteur);
});
</script>


Désolé si je blablate, mais j'aimerais aussi coomprendre la solution et le raisonnement.

Merci d'avance.

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Une solution possible serait d'encapsuler le code qui défini les dimensions des éléments dans une fonction afin de pouvoir appeler celle-ci lors du chargement et du redimensionnement de la page.

Tu peux utiliser la fonction addEventListener pour exécuter une ou plusieurs fonctions en fonction des événements déclenchés (load ou resize) :
<script>
function setDimension() {
    var hauteurHeader = $('header').height();
    var hauteurPage = $(window).height();
    hauteur = hauteurPage - hauteurHeader;
    
    var largeurMenu = $('nav').width();
    var largeurPage = $(window).width()-20;
    largeur = largeurPage-largeurMenu;
		
    $('nav').height(hauteur);
    $('main').width(largeur);
    $('main').height(hauteur);
}

window.addEventListener('load', setDimension);
window.addEventListener('resize', setDimension);
</script>


Bonne journée,
1