Visualizzazione risultati 1 fino 10 di 10

Discussione: aiuto con funzione per aggiungere una classe

  1. #1
    golarion non è connesso Utente giovane
    Data registrazione
    18-11-2008
    Messaggi
    75

    Predefinito aiuto con funzione per aggiungere una classe

    Salve a tutti ho questo codice che dovrebbe aggiungere una classe a un elemento quando la finestra è piccola:
    Codice:
    document.addEventListener('DOMContentLoaded', function() {
            if(window.Width < 600) {
    		document.getElementById("menucapitoli").classList.add("mw-collapsed");
    	}    
    });
    però non funziona, se rimuovo l'if il codice va, se metto l'if fuori dall'addeventlistener non va, cosa sbaglio?

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Penso non esista l'oggetto Width ma con altri svariati nomi, uno è screen. window.screen.width https://developer.mozilla.org/en-US/...I/Screen/width

  3. #3
    golarion non è connesso Utente giovane
    Data registrazione
    18-11-2008
    Messaggi
    75

    Predefinito

    ho provato in vari modi ma non funziona cmq
    Codice:
    document.addEventListener('DOMContentLoaded', function() {
    	if (window.matchMedia("(max-width: 600px)").matches)
    		document.getElementById("menucapitoli").classList.add("mw-collapsed");  
    	}  
    });

  4. #4
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,000

    Predefinito

    Salve,
    come ha indicato correttemnte darbula, in js non esiste window.Width.

    Oltre a quanto indicato da darbula, esistono anche: window.innerWidth e screen.availWidth, da non confonderle tra loro, poichè non sono equivalenti a window.screen.width come lo è invece screen.width.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 08-03-2022 alle ore 22.03.35

  5. #5
    golarion non è connesso Utente giovane
    Data registrazione
    18-11-2008
    Messaggi
    75

    Predefinito

    come dicevo su ho provato in diversi modi; questa parte di codice funziona
    document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("menucapitoli").classList. add("mw-collapsed");
    });
    quello che mi interessa è eseguirla quando la finestra è larga meno di 600px

  6. #6
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,000

    Predefinito

    Non ho idea del perchè non riesca via js, comunque può essere fatto anche da css.

    Ha provato anche con i breakpoint in css?

    Esemopio:
    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <style>
    .pinco {
        background-color: #4CAF50; /* verde*/
        width: 150px;
        height: 150px;
        text-decoration: none;
        display: inline-block;
    }
    @media screen and (max-width: 599px) {
    .pallino {
        background-color: #000; /* nero */
        width: 150px;
        height: 150px;
        text-decoration: none;
        display: inline-block;
    }
    }
    </style>
    </head>
    <body>
    
    <div class="pinco pallino"></div>
    
    </body>
    </html>
    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 08-03-2022 alle ore 22.27.52

  7. #7
    golarion non è connesso Utente giovane
    Data registrazione
    18-11-2008
    Messaggi
    75

    Predefinito

    quella classe serve a chiudere un menù tramite jquery, nel foglio di style uso tranquillamente le media query, cmq ho parzialmente risolto così
    function myFunction(x) {
    if (x.matches) {
    document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("menucapitoli").classList. add("mw-collapsed");
    });
    }
    }

    // Create a MediaQueryList object
    const mmObj = window.matchMedia("(max-width: 600px)")

    // Call the match function at run time:
    myFunction(mmObj);

    // Add the match function as a listener for state changes:
    mmObj.addListener(myFunction)
    ora devo capire come farlo funzionare anche quando cambio risoluzione alla finestra anzichè quando la carico

  8. #8
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,000

    Predefinito

    window.addEventListener("resize", myFunction);
    Prima non aveva menzionato il contensto in cui le serviva, non potevamo saperlo.

    ora devo capire come farlo funzionare anche quando cambio risoluzione alla finestra anzichè quando la carico
    Dovrebbe andar bene resize event.

    Cordiali saluti.

  9. #9
    golarion non è connesso Utente giovane
    Data registrazione
    18-11-2008
    Messaggi
    75

    Predefinito

    non sembra funzionare
    function myFunction(x) {
    if (x.matches) {
    document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("menucapitoli").classList. add("mw-collapsed");
    });
    }
    }

    // Create a MediaQueryList object
    const mmObj = window.matchMedia("(max-width: 600px)")

    // Call the match function at run time:
    myFunction(mmObj);

    // Add the match function as a listener for state changes:
    mmObj.addListener(myFunction)
    window.addEventListener("resize", myFunction);
    qui può vedere una pagina in funzione col codice: https://pf2.altervista.org/wiki/Barbaro
    di base si deve aprire e chiudere il menù 3) Classi a seconda della dimensione della finestra

  10. #10
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,000

    Predefinito

    Sì nel suo sito non funziona anche a me ladattamento del menu.

    Provi a riaddattare il metodo mostrato in questo esempio. A me questo funziona correttamente.

    Cordiali saluti.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •