Visualizzazione post con etichetta { HTML }. Mostra tutti i post
Visualizzazione post con etichetta { HTML }. Mostra tutti i post

mercoledì 20 giugno 2012

Tabella che scrolla con intestazione fissa

Vediamo come realizzare una tabella che scrolla in verticale, con la testatina che rimane fissa

Esempio

test co1 1 col 2 col 3 col4
aaa 124 23555 346 4575
bbb 51 984 98456 984
ccc 651 651 65 5
ddd 51 23434 5456 1651
eee 18 835 51 651
fff 1 6513535 833 289
ggg 19 8135 854 81
hhh 51 651 33456 21
iii 15 1535 1456456 55
lll 651 650651 06501 560
mmm 51 984 984 984
nnn 651 6513 65 5
ooo 51 651 54545 1651
ppp 18 84545 51 651
qqq 1 651 8545
rrr 19 81 8 81
sss 51 651 3 21
ttt 15 15 1 55
uuu 651 650651 06501 560
vvv 51 984 984 984
zzz 651 651 65 5

Può capitare di dover pubblicare i dati impaginati in una tabella, e a causa delle molte righe, o a causa della impaginazione del sito, si voglia lasciare fissa la testatina della tabella e scrollare i dati. Con questo esempio, realizzato utilizzando poche righe di codice CSS, vediamo come fare.

Vediamo il codice CSS

<style type="text/css">
/*il div che contiene lo scroll*/
.article {
 height: 355px;
 width: 462px;
 overflow-y:auto;
 overflow-x:hidden;
}
/*la tabella*/
.article table {
 border-collapse:collapse;
}
/*tutte le righe*/
.article table tr {
 height:30px;
}
/*tutte le celle*/
.article table tr td {
 border:1px solid #EBD13F;
 color: #C60;
 background: #F3F4D0;
 text-align:center;
}
/*la colonna di sinistra*/
.article table tr th {
 border: 1px solid #039;
 color:#069;
 background: #D7EBEE;
}
/*la testata riga fissa*/
.article table .testata {
 position: fixed;
}
/*le celle della riga fissa*/
.article table .colonna {
 background-color: green;
 color: white;
 border:1px solid #0C0;
}
/*correggo la prima riga della tabella*/
.article table .primariga {
 padding-top:30px;
}
</style>

E il codice HTML della tabella

<div class="article">
 <table cellspacing="0" cellpadding="0">
  <tr class="testata">
   <th width="52" class="colonna" scope="col">test</th>
   <th width="62" class="colonna" scope="col">co1 1</th>
   <th width="122" class="colonna" scope="col">col 2</th>
   <th width="102" class="colonna" scope="col">col 3</th>
   <th width="102" class="colonna" scope="col">col4</th>
  </tr>
  <tr class="primariga">
   <th width="52" class="primariga" scope="row">aaa
   <td width="62" class="primariga">124</td>
   <td width="122" class="primariga">23555</td>
   <td width="102" class="primariga">346</td>
   <td width="102" class="primariga">4575</td>
  </tr>
  <tr>
   <th scope="row">bbb</th>
   <td>51</td>
   <td>984</td>
   <td>98456</td>
   <td>984</td>
  </tr>
  <tr>
   <th scope="row">ccc</th>
   <td>651</td>
   <td>651</td>
   <td>65</td>
   <td>5</td>
  </tr>
  <tr>
   <th scope="row">ddd</th>
   <td>51</td>
   <td>23434</td>
   <td>5456</td>
   <td>1651</td>
  </tr>
  <tr>
   <th scope="row">eee</th>
   <td>18</td>
   <td>835</td>
   <td>51</td>
   <td>651</td>
  </tr>
  <tr>
   <th scope="row">fff</th>
   <td>1</td>
   <td>6513535</td>
   <td>833</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <th scope="row">ggg</th>
   <td>19</td>
   <td>8135</td>
   <td>854</td>
   <td>81</td>
  </tr>
  <tr>
   <th scope="row">hhh</th>
   <td>51</td>
   <td>651</td>
   <td>33456</td>
   <td>21</td>
  </tr>
  <tr>
   <th scope="row">iii</th>
   <td>15</td>
   <td>1535</td>
   <td>1456456</td>
   <td>55</td>
  </tr>
  <tr>
   <th scope="row">lll</th>
   <td>651</td>
   <td>650651</td>
   <td>06501</td>
   <td>560</td>
  </tr>
  <tr>
   <th scope="row">mmm</th>
   <td>51</td>
   <td>984</td>
   <td>984</td>
   <td>984</td>
  </tr>
  <tr>
   <th scope="row">nnn</th>
   <td>651</td>
   <td>6513</td>
   <td>65</td>
   <td>5</td>
  </tr>
  <tr>
   <th scope="row">ooo</th>
   <td>51</td>
   <td>651</td>
   <td>54545</td>
   <td>1651</td>
  </tr>
  <tr>
   <th scope="row">ppp</th>
   <td>18</td>
   <td>84545</td>
   <td>51</td>
   <td>651</td>
  </tr>
  <tr>
   <th scope="row">qqq</th>
   <td>1</td>
   <td>651</td>
   <td>8545</td>
   <td>&nbsp;</td>
  </tr>
  <tr>
   <th scope="row">rrr</th>
   <td>19</td>
   <td>81</td>
   <td>8</td>
   <td>81</td>
  </tr>
  <tr>
   <th scope="row">sss</th>
   <td>51</td>
   <td>651</td>
   <td>3</td>
   <td>21</td>
  </tr>
  <tr>
   <th scope="row">ttt</th>
   <td>15</td>
   <td>15</td>
   <td>1</td>
   <td>55</td>
  </tr>
  <tr>
   <th scope="row">uuu</th>
   <td>651</td>
   <td>650651</td>
   <td>06501</td>
   <td>560</td>
  </tr>
  <tr>
   <th scope="row">vvv</th>
   <td>51</td>
   <td>984</td>
   <td>984</td>
   <td>984</td>
  </tr>
  <tr>
   <th scope="row">zzz</th>
   <td>651</td>
   <td>651</td>
   <td>65</td>
   <td>5</td>
  </tr>
 </table>
</div>

Spieghiamo

Come prima cosa notiamo nel codice HTML della tabella, la presenza di un div con class article.
Ho utilizzato questo div per realizzare lo scroll della tabella, vedi riga n. 6 del codice CSS.

Alla riga n. 31 del CSS imposto la riga che rimarrà fissa anche scrollando. Quella che nel codice HTML si trova alla riga di codice n. 3.

Ho dovuto impostare una correzione sulla prima riga di dati della tabella, per evitare che finisca sotto la riga di intestazione fissa. Per fare questo ho utilizzato una classe primariga, che nel CSS si trova alla riga di codice n. 41.

Nota bene

Questa soluzione non è particolarmente adatta, se i dati della tabella provengono da un database e possono variari di molto in larghezza, in modo incontrollato. Potrebbe succedere che il contenuto di una cella sia più lungo del valore width da noi impostato inizialmente, e quindi si verifichi un disallineamento delle celle.

martedì 29 maggio 2012

DOCTYPE HTML 5

L'HTML5 è un linguaggio di markup per la progettazione delle pagine web attualmente in fase di definizione (bozza) presso il World Wide Web Consortium. La definizione delle specifiche iniziali del linguaggio è stata effettuata da un gruppo di lavoro esterno al W3C: il WHATWG. Attualmente i lavori sono seguiti sia dal WHATWG che dal W3C HTML working group. L'intento iniziale che ha guidato il gruppo di lavoro è stato quello di proporre nuovi comandi e funzionalità fino ad allora ottenute in maniera non-standard, ossia mediante il ricorso a plug-in o a estensioni proprietarie dei vari browser. Altro obiettivo è garantire una buona compatibilità con i browser esistenti, compresi quelli obsoleti o presenti su piattaforme mobili.

L'HTML5 si propone come evoluzione dell'attuale HTML 4.01 ed è stato concepito in alternativa all'ormai fallito XHTML 2[1]. Il World Wide Web Consortium ha annunciato che sarà pronto per il luglio 2014.

Fonte: Wikipedia

Struttura

<header>
<nav>
<article>
<section>
<aside>
<footer>

Codice

<!DOCTYPE HTML>

<html>

 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>DTD HTML 5.0</title>
 </head>

 <body>
  <p>CONTENUTO</p>
  </body>

</html>

Sito del W3C HTML Working Group

DOCTYPE XHTML Mobile 1.0

DTD Versione ridotta per supporti Mobile.
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" 
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>DTD XHTML Mobile 1.0</title>
 </head>

 <body>
  <p>CONTENUTO</p>
 </body>

</html>

DOCTYPE XHTML 1.1

L'ultima versione di XHTML è la XHTML 1.1, che è una riformulazione dell'XHTML Strict, quindi ha una sola DTD. Non accetta i tag e gli attributi più criticati della precedente versione (come la struttura a frameset). Questa versione invece supporta i tag del cosiddetto markup «ruby», che consente di visualizzare i set di caratteri delle lingue orientali.

Fonte: Wikipedia
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>DTD XHTML 1.1</title>
 </head>

 <body>
  <p>CONTENUTO</p>
 </body>

</html>

DOCTYPE XHTML 1.0 Strict

XHTML 1.0 Strict rispetto alla versione Transitional non accetta i tag HTML definiti deprecati, non è tollerante a non conformità sintattiche e prevede controlli più rigorosi anche rispetto al valore di alcuni attributi dei tag (per esempio, l'attributo id deve avere valori univoci all'interno dello stesso documento).

Fonte: Wikipedia
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>DTD XHTML 1.0 Strict</title>
 </head>

 <body>
  <p>CONTENUTO</p>
 </body>

</html>

lunedì 28 maggio 2012

Includere un filmato flash

Vediamo come includere un filmato in Flash nella nostra pagina HTML

Diamo per scontato che il filmato sia già pronto per essere pubblicato sul web.
Significa che abbiamo già realizzato il nostro filmato con Flash, lo abbiamo salvato in formato .FLA e abbiamo già esportato il file che nell'esempio riportato sotto ho chiamato miofile.swf dove .SWF è il file compilato da visualizzare nella nostra pagina HTML.

Con questo semplice codice posso includere un file con estensione SWF in una pagina HTML

<p>
 <object 
  type="application/x-shockwave-flash" 
  data="http://www.example.com/miofile.swf" 
  width="800" 
  height="650">

 <param 
  name="movie" 
  value="http://www.example.com/miofile.swf "/>

 </object>
</p>

Spieghiamo:

Da notare che ho inserito <object...> all'interno di un tag paragrafo.
Questa accortezza serve solo a non "infastidire" il validatore, nel caso in cui utilizziamo un DTD Strict, altrimenti possiamo tranquillamente fare a meno del tag <p>.

In pratica se non utilizzo un DTD Strict potrò avere un codice validato anche cancellando la prima e l'ultima riga dell'esempio.

Consiglio:

Sarebbe meglio non scalare il filmato importato, questo per evitare che la grafica venga ricampionata dal browser. Per fare questo, basta realizzare il filmato flash direttamente delle dimensioni che verranno utilizzate nella pagina HTML.

Nell'esempio ho ipotizzato un filmato con width="800" ed height="650", in questo caso il foglio di lavoro del filmato flash dovrà essere creato base 800px e altezza 650px.

domenica 27 maggio 2012

Redirect con HTML

Semplice redirect in HTML

Con questo semplice codice è possibile inviare automaticamente l'utente a una nuova pagina.
Sarà possibile impostare anche l'intervallo di tempo dopo il quale dare corso al redirect.
<meta http-equiv="Refresh" content="5; url=http://www.example.com">

Spieghiamo:

Si tratta del metatag Refresh grazie al quale è possibile impostare un tempo e un url al nostro redirect.
Se ad esempio impostiamo il content a 5, il nostro redirect verrà avviato dopo 5 secondi.

È possibile con una piccola astuzia, utilizzare questo metatag, ad esempio, per aggiornare la nostra pagina ogni 30 secondi: basterà impostare il parametro content a 30, e indicare come url la pagina attuale.

In questo modo si avrà, in effetti, il reload della nostra pagina ogni 30 secondi

<meta http-equiv="Refresh" content="30; url=http://www.url-della-mia-pagina.it">

Menù orizzontale con sottomenù

Vediamo come creare un semplice menù con sottomenù

Esempio:

Questo semplice menù è realizzato esclusivamente utilizzando codice CSS.
Con una semplice struttura HTML composta da <ul> e <li>, sarà possibile creare tutti i menù e sottomenù necessari al nostro sito.

Browser

Ho testato il funzionamento e la rappresentazione grafica del menù con tutte le ultime versioni dei browser più utilizzati:
 

Vediamo il codice 

CSS:
<style type="text/css">
.cssmenu {
 border:none;
 margin:0px;
 padding:0px;
 font-family:verdana, geneva, arial, helvetica, sans-serif;
 font-size:14px;
 font-weight:bold;
}
/*1° livello*/
.cssmenu ul {
 list-style:none;
 margin:0;
 padding:0;
}
.cssmenu li {
 float:left;
 padding:0px 8px 0px 8px;
}
.cssmenu li a {
 color:darkGoldenrod;
 display:block;
 font-weight:bold;
 line-height:43px;
 padding:0px 25px;
 text-align:center;
 text-decoration:none;
}
.cssmenu li a:hover {
 color:green;
 text-decoration:none;
 text-decoration:underline;
}
/*2° livello*/
.cssmenu li ul {
 background:green;
 display:none;
 height:auto;
 position:absolute;
 width:225px;
 z-index:1;
}
.cssmenu li:hover ul {
 display:block;
}
.cssmenu li li {
 display:block;
 float:none;
 padding:0px;
 width:225px;
}
.cssmenu li ul a {
 display:block;
 font-size:12px;
 font-style:normal;
 padding:0px 10px 0px 15px;
 text-align:left;
 color:white;
}
.cssmenu li ul a:hover {
 background:darkgreen;
 color:greenyellow;
}
.cssmenu p {
 clear:left;
}
/*link active*/
.cssmenu .active > a {
 color:red;
}
.cssmenu .active > a:hover {
 text-decoration:underline;
 color:maroon;
}
</style>


HTML:
<div class='cssmenu'>
  <ul>
    <li class='active'><a href='#'><span>Home</span></a></li>
    <li><a href='#'><span>Prodotti</span></a>
      <ul>
        <li><a href='#'><span>Prodotto 1</span></a></li>
        <li><a href='#'><span>Prodotto 2</span></a></li>
      </ul>
    </li>
    <li><a href='#'><span>Chi siamo</span></a></li>
    <li><a href='#'><span>Contatti</span></a></li>
  </ul>
</div>

Spieghiamo:

Nel Css ho indicato dove apportare modifiche. Se vogliamo personalizzare il primo livello di menù, quello visibile senza intervento del mouse basterà modificare il codice CSS preceduto da:
/*1° livello*/

Per modificare graficamente il secondo livello basterà modificare il codice CSS preceduto da:
/*2° livello*/

È anche possibile modificare l'aspetto grafico del menù appartenente alla pagina che stiamo visualizzando, ossia la pagina attiva. Basterà modificare il codice CSS preceduto da:
/*link active*/


Nel codice HTML dovremo semplicemente specificare il link che appartiene alla pagina attuale modificando <li> in
<li class='active'>
ossia link attivo.

Per comodità è possibile scaricare l'intero file HTML + CSS.

sabato 26 maggio 2012

Layout 2 colonne 100%

Vediamo come impostare un layout 2 colonne con larghezza 100%

Il layout prevede 4 macro aree:

  1. Header per contenere il logo in testa alla pagina
  2. Navigation per un menù a sinistra
  3. Content per una colonna centrale di contenuti
  4. Footer per indirizzo telefoni ecc. a pié di pagina

HEAD:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Layout 2 colonne larghezza in percentuale</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
CSS:
<style type="text/css">
* {
 margin:0;
 padding:0;
}
div#wrapper {
 float:left;
 width:100%;
}
div#header {
 height:80px;
 background: #FF9;
}
div#content {
 margin: 0 0% 0 25%;
 background-color:#FFF;
}
div#navigation {
 background:#E8E8FF;
 float:left;
 width:25%;
 margin-left:-100%;
}
div#footer {
 background: #CCC;
 clear:left;
 width:100%;
}
</style>
BODY:
</head>
<body>
<div id="container">
  <div id="header">
    <H1>HEADER</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisici elit</p>
  </div>
  <div id="wrapper">
    <div id="content">
      <h2>CONTENUTI</h2>
      <p><img src="https://www.google.com/images/srpr/logo3w.png" alt="" width="275" height="95" align="left" id="segnaposto" style="background-color: #CCCC33" />Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
  </div>
  <div id="navigation">
    <h2>MENU</h2>
    <ul>
      <li>menu 1</li>
      <li>menu 2</li>
      <li>menu 3</li>
      <li>menu 4</li>
    </ul>
    <br style="clear:both" />
  </div>
  <div id="footer">
    <h2>FOOTER</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisici elit</p>
  </div>
</div>
</body>
</html>

Spieghiamo: 

Con questo layout suddiviso in 2 colonne, visualizzeremo una pagina al 100% della finestra del browser.
Chiaramente le modifiche che si possono fare sono infinite.

Ad esempio potremmo voler distanziare il layout a destra e a sinistra rispetto alla finestra del browser,
in questo caso basterebbe aggiungere al codice CSS riportato sopra:
#container {
 margin: 0 5%;
}
per avere uno spazio a destra e a sinistra corrispondente al 5% della finestra del browser.

Download:

Per comodità è possibile scaricare il file HTML completo.

Layout 3 colonne 100%

Vediamo come impostare un layout 3 colonne con larghezza 100%

Il layout prevede 5 macro aree:

  1. Header per contenere il logo in testa alla pagina
  2. Navigation per un menù a sinistra
  3. Content per una colonna centrale di contenuti
  4. Extra per una colonna a destra
  5. Footer per indirizzo telefoni ecc. a pié di pagina
HEAD:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Layout 3 colonne larghezza 100%</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
CSS:
<style type="text/css">
* {
 margin:0;
 padding:0;
}
div#wrapper {
 float:left;
 width:100%;
}
div#header {
 height:80px;
 background: #FF9;
}
div#content {
 margin: 0 25%;
 background-color:#FFF;
}
div#navigation {
 background:#E8E8FF;
 float:left;
 width:25%;
 margin-left:-100%;
}
div#extra {
 background:#EFFFAE;
 float:left;
 width:25%;
 margin-left:-25%
}
div#footer {
 background: #CCC;
 clear:left;
 width:100%;
}
</style>
BODY:
</head>
<body>
<div id="container">
  <div id="header">
    <H1>HEADER</h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipisici elit</p>
  </div>
  <div id="wrapper">
    <div id="content">
      <h2>CONTENUTI</h2>
      <p><img src="https://www.google.com/images/srpr/logo3w.png" alt="" width="275" height="95" align="left" id="segnaposto" style="background-color: #CCCC33" />Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
      <p>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    </div>
  </div>
  <div id="navigation">
    <h2>MENU</h2>
    <ul>
      <li>menu 1</li>
      <li>menu 2</li>
      <li>menu 3</li>
      <li>menu 4</li>
    </ul>
    <br style="clear:both" />
  </div>
  <div id="extra">
    <h2>EXTRA</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco</p>
  </div>
  <div id="footer">
    <h2>FOOTER</h2>
    <p>Lorem ipsum dolor sit amet, consectetur adipisici elit</p>
  </div>
</div>
</body>
</html>

Spieghiamo: 

Con questo layout suddiviso in 3 colonne, visualizzeremo una pagina al 100% della finestra del browser.
Chiaramente le modifiche che si possono fare sono infinite.

Ad esempio potremmo voler distanziare il layout a destra e a sinistra rispetto alla finestra del browser,
in questo caso basterebbe aggiungere al codice CSS riportato sopra:
#container {
 margin: 0 5%;
}
per avere uno spazio a destra e a sinistra corrispondente al 5% della finestra del browser.

Download:

Per comodità è possibile scaricare il file HTML completo.