Archivi tag: div

Spot overlay (div)

Se a qualcuno fosse sfuggito mostriamo la tecnica usata per sostituire le finestre di popup che potrebbero essere bloccate da alcune impostazione di sicurezza del browser.

Premetto che tale funzionalità resta sgratita al navigatore esattamente come i popup e sarebbe meglio quindi evitarla. Le soluzioni gradite infatti sono sempre quelle che chiedono all’utente di fare qualcosa e fanno sì che sia lui a decidere (cliccando su “vedi pubblicità” o simili).

Detto questo passiamo al codice base per implementare il tutto: si tratta semplicemente di un contenitore (spotoverlay) che racchiude due div (uno per il pulsante Chiudi e uno per il contenuto)

<div id="spotoverlay">
  <div class="chiudi">
    <a href="#" onclick="document.getElementById('spotoverlay').style.visibility='hidden'">CHIUDI</a>
  </div>
  <div>
    Qui dentro va messo il messaggio (codice (x)html) da evidenziare...
  </div>
</div>

Il pulsante (link o foto dentro il tag <a>) è un “chiudi” falso… in quanto non c’è niente da chiudere: c’è solo un div da nascondere… e lo facciamo con quel codice javascript

onclick=" *** *** style.visibility='hidden'"

Nel codice sotto associamo un stile (css) ai riquadri e il gioco è fatto

#spotoverlay {
    position: absolute;
    background-color: #dfdfdf;
    font-size: 12px;
    font-family: arial;
    top: 150px;
    left: 150px;
    width: 200px;
    height: 200px;
    border: solid 1px #000;
}
div.chiudi {
    text-align: right;
    border-bottom: solid 1px #000;
}
a.spot {
    color: #000;
    text-decoration: none;
}

E’ tutto…
Qui possiamo vedere un esempio: all’inizio la pagina si apre col messaggio in evidenza; questo scompare se si clicca su Chiudi.

Tecniche più evolute, javascript e ora jquery, possono aggiungere effetti speciali a questa tecnica, come offuscare lo sfondo, entrare/uscire in dissolvenza, etc… magari in un prossimo post le vediamo…

Centrare verticalmente un elemento (div) ad altezza non conosciuta

Avevamo visto in precedenza come centrare un elemento con dimesioni fisse verticalmente e orizzontalmente e prima ancora avevamo centrato orizzontalmente un div nella pagina.

Vediamo stavolta come si può centrare verticalmente un elemento di cui non si conosce l’altezza. La cosa è realizzabile solo se l’elemento genitore (che conterrà il box da centrare) avrà un’altezza fissa; inoltre dovrà essere dichiarato come “tabellare“.

Vediamo il codice Css così chiariamo meglio:

#padre {
  height:300px;  /* elemento contenitore con altezza fissa */
  display:table; /* elemento contenitore visualizzato come tabella */
}
#figlio_centrato {
  display:table-cell;    /* elemento visualizzato come cella di tabella*/
  vertical-align:middle; /* centro verticalmente */
}

A questo punto basta applicare il codice Css qui sopra a una struttura (x)html normalissima. Ci bastano un paio di Div.

<div id="padre”>
  <div id="figlio_centrato">
    <p>Un po' di contenuto</p>
  </div>
</div>

Nota: vertical-align ha validità quando si applica a una cella di una tabella (col display: table-cell); questo potrebbe servire specialmente quando il contenuto del sito è dinamico (dati reperiti da un database)

Attenzione! Questo metodo (un classico!!) non funziona su IE6 e IE7.

Come fare ad adattare il tutto?

Si può usare a nostro vantaggio un errore di interpretazione dei Css “top” assegnandogli un valore negativo in percentuale, dato che questo non dovrebbe essere preso in considerazione dalle specifiche.

Vediamolo in dettaglio:

#padre {
  height:300px; /* vedi sopra */
  position:relative; /* voglio poter posizionare in modo assoluto ciò che starà al suo interno */
}
#sotto_padre{
  position:absolute; /* sotto elemento posizionato in modo assoluto in rapporto al div padre */
  top:50%; /* il bordo superiore sarà al 50% dell’altezza disponibile */
}
#figlio_centrato {
  position:relative; /* elemento da centrare in rapporto al div sotto_padre */
  top:-50%; /* bordo superiore va ad alzarsi del 50% dell’altezza*/
}

Vediamolo col nuovo codice (x)html…

<div id="padre">
  <div id="sotto_padre">
    <div id="figlio_centrato">
      <p>Un po' di contenuto</p>
    </div>
  </div>
</div>

Quindi adesso dovrebbe andare bene sui vari browser.

Con un po’ di fantasia e a seconda del tipo di struttura che stiamo creando possiamo definire l’altezza del div “padre” al 100% e ridefinire anche Body e Html al 100%. In questo modo otterremo un risultato a pagina piena.

Bye…

Come si centra un div orizzontalmente?

Vediamo il corretto procedimento per centrare orizzontalmente (la parte verticale non ci interessa) un oggetto float. Dobbiamo seguire pochi passi:

  • definire la larghezza del conenitore (va bene anche in percentuale)
  • inserire nel div da centrare questo css: “margin: 0 auto;” (o comunque fare in modo che i margini dx e sin siano automatici)
  • inserire nel box che contiene quello da centrare il css “text-align: center;” in quanto il povero IE non è in grado neanche di riconoscere i margini automatici

Continua la lettura di Come si centra un div orizzontalmente?

Centrare un DIV in orizzontale e verticale

Avevamo già visto come centrare orizzontalmente un div nella pagina.

Vediamo adesso come posizionare un elemento al centro di una pagina (x)html, non conoscendo le dimensioni della pagina, quindi adattabile a qualsiasi risoluzione. L’unica cosa che dobbiamo avere chiara è la dimensione del nostro “box”.

Utilizzo il posizionamento assoluto con i margini negativi.

#main {
  position:absolute;
  top:50%;
  left:50%;
  width:500px;
  height:200px;
  margin-left:-250px;
  margin-top: -100px;
}

Continua la lettura di Centrare un DIV in orizzontale e verticale