Visualizzazione dei risultati da 1 a 8 su 8

Discussione: js per layout dinamici

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    33

    js per layout dinamici

    Ciao a tutti,
    sto impostando il procedimento di ridimensionamento del sito in base alla risoluzione dello schermo con codice js che richiama un diverso css in base, appunto, alla risoluzione rilevata di volta in volta dall'utente.
    Ho seguito il processo di implementazione del codice spiegato in :

    http://javascript.html.it/articoli/...-risoluzione/2/

    e adattandolo al mio caso.
    Ho però un problema: al primo caricamento della pagina il js funziona, ossia rileva la risoluzione dello schermo, richiama il css relativo e adatta la dimensone del sito. Se però ricarico la pagina oppure navigo all'interno del sito collegandomi ad altre pagine, il js non funziona più.... e la grafica non è più ridimensionata....

    il codice js è il seguente:

    function getBrowserWidth(){
    if (window.innerWidth){
    return window.innerWidth;}
    else if (document.documentElement && document.documentElement.clientWidth != 0){
    return document.documentElement.clientWidth; }
    else if (document.body){return document.body.clientWidth;}
    return 0;
    }

    // dynamicLayout
    function dynamicLayout(){
    var browserWidth = getBrowserWidth();

    //carica le regole per il layout a definizione più bassa
    if (browserWidth < 950){
    changeLayout("950width");
    }
    //carica le regole per il layout a definizione intermedia
    if ((browserWidth >= 950) && (browserWidth <= 1440)){
    changeLayout("950width1440");
    }
    //carica le regole per il layout a definizione più alta
    if (browserWidth > 1440){
    changeLayout("width1440");
    }
    }

    // changeLayout is based on setActiveStyleSheet function by Paul Sowdon
    // http://www.alistapart.com/articles/alternate/
    function changeLayout(description){
    var i, a;
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++){
    if(a.getAttribute("title") == description){a.disabled = false;}
    else if(a.getAttribute("title") != "default"){a.disabled = true;}
    }
    }

    //addEvent() by John Resig
    function addEvent( obj, type, fn ){
    if (obj.addEventListener){
    obj.addEventListener( type, fn, false );
    }
    else if (obj.attachEvent){
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){ obj["e"+type+fn]( window.event ); }
    obj.attachEvent( "on"+type, obj[type+fn] );
    }
    }

    //Run dynamicLayout function when page loads and when it resizes.
    addEvent(window, 'load', dynamicLayout);
    addEvent(window, 'resize', dynamicLayout);

    ... rilevate per caso errori?
    Grazie per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    33
    dimenticavo di segnalare anche che ho fatto la seguente prova.
    L'articolo dice che, se voglio usare questo metodo per creare un vero e proprio style switcher, basta che tolgo l'attributo title="default" dal punto nella head in cui richiamo lo script. In questo modo dovrebbe essere del tutto disabilitato il css di base e dovrebbero essere caricati direttamente i css relativi dlle risoluzioni rilevate.

    Ho fatto la prova. Togliendo l'attributo title="default", però, il primo caricamento della pagina perde completamente ogni formattazione data dai css!

    grazie davvero in anticipo per l'aiuto!

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    beh, vediamo la tua di pagina

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    33
    ciao
    vedo che non riesco a inviare la pagina html, e il sito non è ancora pubblicato.
    La parte del codice che richiama il js comunque è:

    <link rel="stylesheet" href="stilesheet.css" type="text/css"/>
    <link rel="alternate stylesheet" href="stilesheet-950width.css" type="text/css" title="950width"/>
    <link rel="alternate stylesheet" href="stilesheet-950width1440.css" type="text/css" title="950width1440"/>
    <link rel="alternate stylesheet" href="stilesheet-width1440.css" type="text/css" title="width1440"/>

    <script type="text/javascript" src="js/dynamiclayout.js"></script>


    grazie

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da 08zar
    vedo che non riesco a inviare la pagina html, e il sito non è ancora pubblicato.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    33
    sito pubblicato in prova all'indirizzo:

    http://www.lavorazionegmr.netsons.org/01_sito-home.html

    la pagina sulla quale per il momento ho applicato l'implementazione è proprio questa.

    Grazie.

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se non sbaglio, anche l' esempio originale ha problemi, con IE
    (mentre anche la tua pagina si comporterebbe correttamente con firefox)

    ti consiglio di usare uno script che sfrutti i cookie per memorizzare lo stile da applicare,
    come nell' articolo originale di alistapart
    http://www.alistapart.com/articles/alternate/
    o nel diffusissimo
    http://www.alistapart.com/articles/bodyswitchers/

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    33
    si in effetti lo script si comporta correttamente con firefox, mentre non funziona con IE, Chrome e con Safari....
    provo a fare come mi hai suggerito.

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.