Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di z3n
    Registrato dal
    May 2008
    Messaggi
    61

    Cornice interna semitrasparente

    Ciao a tutti,
    vorrei creare una cornice semitrasparente in una div, che contiene un'immagine 200px * 200px, ho provato a settare la cornice (un file png) come immagine background e assegnare alla div uno z-index basso, come mostrato in seguito ma il risultato è stato pessimo.
    html:
    codice:
    <div id="tdprova"> <img id="imgprova" src="9.jpg" alt="9"></div>
    css:
    codice:
    #tdprova{
        width:200px;
        height:200px;
        background-image: url("cornice.png");
        z-index: 100;
    }
    
    
    #imgprova{
        z-index: -9998;
    }
    praticamente vorrei che la cornice fosse in primo piano, e l'immagine, inserita nell'html in primo ma non riesco ad ottenere il risultato voluto (senza l'immagine dell'html, la cornice viene caricata correttamente, ma quando inserisco l'immagine ottengo l'effetto opposto: immagine in primo piano e cornice dietro che non si vede).
    Qualche idea? Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Prill
    Registrato dal
    Oct 2006
    Messaggi
    2,947
    Non è molto chiaro il tuo problema, non è chiaro perché la tua immagine non stia bene come sfondo.
    Hai provato ad assegnare al div che la ha come background un padding? (in questa maniera i suoi contenuti, cioè l'immagine che dovrà apparire incorniciata, saranno distaccati dal bordo e lasceranno vedere la cornice)
    Magari facci vedere le due immagini

  3. #3
    Utente di HTML.it L'avatar di z3n
    Registrato dal
    May 2008
    Messaggi
    61
    Per motivi di copyright non posso caricare l'immagine vera e propria ma carico un esempio che dovrebbe rappresentare l'immagine: il rosso è la foto, il bordo grigio è quello che vorrei mettere come sfondo, anche se nella realtà dovrebbe risultare leggermente trasparente in modo da far intravedere la parte immagine coperta dalla cornice. Non posso usare il padding perchè la cornice deve coprire (essendo leggermente trasparente) l'immagine, lasciando intravedere la parte coperta...
    Immagini allegate Immagini allegate

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao,
    per far funzionare in quel modo lo z-index, dal momento che si tratta di un elemento figlio dentro un elemento genitore, dovresti utilizzare un ulteriore elemento contenitore e attribuire, a tutti e tre, un position:relative (o absolute), quindi giocare un po con il valore di z-index.

    Questo è quanto sono riuscito ad ottenere dopo qualche semplice googleata tipo "z-index child parent":
    codice:
    #contenitore{
      position:relative;
      z-index: 10;
    }
    #tdprova{
      position:relative;
      width:200px;
      height:200px;
      background-image: url("cornice.png");
      z-index: initial;
    }
    #imgprova{
      position:relative;
      width:100px;
      height:100px;
      z-index: -1;
    }
    
    ...
    
    <div id="contenitore"><div id="tdprova"><img id="imgprova" src="9.jpg" alt="9"></div></div>
    Scavando un po' più a fondo si può trovare diverso materiale per ottenere delle soluzioni al problema.

    Posto un esempio funzionante con tre differenti soluzioni da cui puoi prendere spunto:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <style type="text/css">
        
      /* ------ Metodo 1: outline ------
      */
          #img1 {
            outline:10px solid rgba(119, 119, 119, .7);
            outline-offset:-10px;
          }
          
      /* ------ Metodo 2: border-box ------
      */
          #img2{
            display:inline-block;
            box-sizing:border-box;
            border:solid rgba(119, 119, 119, .7);
            border-width:10px 10px 30px;
          }
          
      /* ------ Metodo 3: div:after ------
      */
          #img3{
            display:inline-block;
          }
          #img3>div{
            position:relative;
          }
          #img3>div>img{
            display:block;
          }
          #img3>div:after{
            content:"";
            position:absolute;
            top:0; bottom:0; left:0; right:0;
            border:solid rgba(119, 119, 119, .7);
            border-width:10px 10px 30px;
          }
    
        </style>
       </head>
      <body>
        <h1>Cornice trasparente sopra immagine</h1>
        
        <h2>Metodo 1: outline</h2>
        <ul>
          <li>E' utilizzato un semplice tag img</li>
          <li>La cornice può avere un solo spessore uguale per tutti i lati</li>
          <li>La proprietà outline-offset non è supportata da IE</li>
        </ul>
        <img id="img1" src="image.jpg">
        <hr>
        
        <h2>Metodo 2: border-box</h2>
        <ul>
          <li>La cornice può avere spessori differenti per i singoli lati</li>
          <li>L'immagine è impostata come background di un div</li>
          <li>E' necessario specificare le dimensioni esatte dell'immagine</li>
        </ul>
        <div id="img2" style="background:url('image.jpg');width:200px;height:200px;"></div>
        <hr>
    
        <h2>Metodo 3: div:after</h2>
        <ul>
          <li>La cornice può avere spessori differenti per i singoli lati</li>
          <li>E' utilizzata una struttura di più elementi nidificati (due div e un tag img)</li>
        </ul>
        <div id="img3"><div><img src="image.jpg"></div></div>
        <hr>
    
      </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di Prill
    Registrato dal
    Oct 2006
    Messaggi
    2,947
    se devi mettere la foto sotto la cornice, se la cornice non è un semplice bordo ma un'immagine precisa, basta dare alla cornice un posizionamento assoluto invece di inserirla come sfondo:

    codice:
    <style type="text/css">
    <!--
    #tdprova{
        width:200px;
        height:200px;
        position:relative;
    }
    #cornice{
        position:absolute;
        top:0;
        left:0;
        z-index:1;
    }
    -->
    </style>
    </head>
    
    <body>
    <div id="tdprova"><img id="cornice" src="cornice.png" alt=""> <img id="imgprova" src="9.jpg" alt="9"></div>
    </body>
    oppure, se vuoi inserirla come sfondo, il div su cui è impostata avrà un posizionamento assoluto e sarà sovrapposto a quello con la foto (che avrà dimensioni di 200x200, un posizionamento relativo e l'immagine sarà centrata con un padding di 50px

  6. #6
    Utente di HTML.it L'avatar di z3n
    Registrato dal
    May 2008
    Messaggi
    61
    Perfetto funziona (ho seguito l'esempio di Prill ma ringrazio entrambi per le risposte!).
    Se poi io volessi aggiungere una scritta sopra la cornice, diciamo sul lato inferiore, che sarebbe diversa per ogni immagine, come potrei fare?

  7. #7
    Utente di HTML.it L'avatar di Prill
    Registrato dal
    Oct 2006
    Messaggi
    2,947
    il criterio è sempre lo stesso, usare un posizionamento assoluto e dare uno z-index maggiore - se l'immagine ha z-index:1; ciò che dovrà stare a un livello superiore avrà z-index:2; e cosivvia. Con top e left - o ricorrendo anche a right e bottom - stabilirai la posizione precisa
    Ultima modifica di Prill; 27-05-2014 a 14:03

  8. #8
    Utente di HTML.it L'avatar di z3n
    Registrato dal
    May 2008
    Messaggi
    61
    Mi scuso per il ritardo nella risposta,
    perfetto, ora è tutto chiaro! Funziona!

Tag per questa discussione

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.