Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Cambiare immagine di sfondo con css

    Ciao, esiste un metodo con click, per cambiare l'immagine di sfondo della pagina senza dover ricaricare la pagina stessa?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Esistono le pseudoclassi :hover e :active, che pero` non dipendono dal click.

    Se vuoi un evento al click, serve JS.

    Comunque si puo` cambiare uno sfondo senza ricaricare la pagina. Esempi:
    onclick="document.body.style.background='url(nuova imm.gif)';"
    onclick="document.getElementById('ID_OGGETTO').sty le.background='url(nuovaimm.gif)';"
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    forse usando in qualche modo la pseudoclasse :active ...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    A parer mio dobbiamo finirla di suggerire utilizzi simili di javascript. Credo convenga continuare a sfruttare al massimo CSS e usufruire del DOM, più precisamente del metodo di attribuzione delle classi.

    Un esempio veloce. Diciamo di avere una cosa simile:
    codice:
    <body id="pagina">
    Prepariamo una classe CSS apposita che ospiterà lo sfondo 'destinazione' dopo il clic. Ad esempio:
    codice:
    #pagina
    {
       background:#fff url('sfondo.png') no-repeat fixed 0 0;
    }
    .sfondo-dopo
    {
       background-image:url('sfondo-dopo.png');
    }
    Realizziamo una funzione js che attribuisce a #pagina la classe sfondo-dopo:
    codice:
    var pag = document.getElementById('pagina')
    function cambia_sfondo()
    {
       pag.className = 'sfondo-dopo'
    }
    Nella struttura di markup ci basterà inserire un collegamento tipo questo:
    codice:
    <a href="javascript:void(0)" onclick="cambia_sfondo()">
       Cambia sfondo
    </a>

  5. #5
    Mitico, ora provo!!
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  6. #6
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    ti voglio dare un suggerimento che va:
    a) contro l'accessibilità. Ma l'accessibilità va rispettata (l'esempio ti serve come palestra)
    b) contro questa sezione. ... Pazienza!
    Ecc...
    il javascript puoi metterlo anche in un foglio esterno.
    Per copiare devi prima quotare.

    Un CSS esterno definisce 3 classi per lo sfondo: 'in'; 'egg'; e 'graf', ma non ne imposta alcuna come attiva. background-attachment deve essere impostato a scroll.

    Lo sfondo lo applico in un div, ma è evidente che puoi metterlo di sfondo al body.
    <html>
    <head>
    <title></title>
    <style>
    .in {background-image:url('imm.jpg');
    background-repeat: no-repeat;
    background-attachment: scroll;
    background-position: 50% 50%;
    }

    .egg {background-image:url('immagine.bmp');
    background-repeat: no-repeat;
    background-attachment: scroll;
    background-position: 50% 50%;
    }

    .graf {background-image:url('graf.jpg');
    background-repeat: no-repeat;
    background-attachment: scroll;
    background-position: 50% 50%;
    }

    </style>
    <script language="javascript">
    window.onload = function() {
    sfondo() }

    function sfondo() {
    var cl = document.getElementById('qui');

    if (cl.className == "") {
    cl.className = "in"; }
    else if (cl.className == "in") {
    cl.className = "egg"; }
    else if (cl.className == "egg") {
    cl.className = "graf"; }
    else { cl.className = "in"}
    }
    x = window.setInterval("sfondo()", 3000);
    </script>
    </head>
    <body>
    <div id="qui" style="border:1px green solid; width:460px;height:120px;color:red;font-size:26px;">Un po' di testo.</div>


    </body>
    </html>

  7. #7
    Originariamente inviato da zeropunto
    Mitico, ora provo!!
    N.B. 'javascript' va scritto tutto attaccato.

    Oh, abbiamo scoperto come cambiare lo sfondo di un documento tramite un pulsante contenuto al suo interno: occhio a non abusare di queste cose, però.

    Non dimentichiamoci mai che un documento web è un recipiente strutturato di contenuti e se l'utente deve maneggiare in modo particolare questi contenuti dovrebbe rifarsi ai 'pulsanti' (funzionalità) del browser, non a bottoncini inseriti nella pagina.

    Distinguere i campi di competenza potrebbe essere uno dei passi fondamentali per realizzare buoni siti. Insomma, in casi particolari si può essere fantasiosi in questo senso, tuttavia usare sempre giudizio e analizzare con attenzione la situazione ed il contesto.


  8. #8
    Originariamente inviato da Mich_
    onclick="document.getElementById('ID_OGGETTO').sty le.background='url(nuovaimm.gif)';"
    ciao
    mi interessa questa funzione, ma non riesco ad evitare che faccia il repeat dell'immagine... c'è modo di evitarlo?
    ciao e grazie
    daniele

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da danielepennati
    ciao
    mi interessa questa funzione, ma non riesco ad evitare che faccia il repeat dell'immagine... c'è modo di evitarlo?
    ciao e grazie
    daniele
    codice:
    onclick="document.getElementById('ID_OGGETTO').style.background='url(nuovaimm.gif) no-repeat';"
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    grazie...
    non era difficile...

    potevo anche arrivarci da me...
    ciao
    daniele

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.