41
Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato <blockquote> <p align="center"><font color="#006600" size="5" face="Arial, Helvetica, sans-serif"><strong><em>paragrafo con formattazione all'interno dei tag </em></strong></font></p> </blockquote> Il W3C interviene per mettere un po’ di ordine Nel 1996 definizione dei fogli di stile (CSS Level 1 o CSS-1) Nel 1998 aggiorna le specifiche: CSS-2

Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Embed Size (px)

Citation preview

Page 1: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto.

Codice HTML sempre più complesso e pasticciato <blockquote> <p align="center"><font color="#006600" size="5" face="Arial, Helvetica, sans-

serif"><strong><em>paragrafo con formattazione all'interno dei tag </em></strong></font></p> </blockquote>

Il W3C interviene per mettere un po’ di ordine Nel 1996 definizione dei fogli di stile (CSS Level 1 o CSS-1) Nel 1998 aggiorna le specifiche: CSS-2

Page 2: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

CSS: Cascading Style Sheets

1. Specifiche del formato del documento tramite un linguaggio

2. Come modelli .dot di Word

3. Separazione del formato dal contenuto

4. Differenza con html: necessita di un tag iniziale e finale per delimitare box dove agisce lo stile

Page 3: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Vantaggi dei CSS

Separazione stile-contenuto Contenuto con il minimo di struttura necessario Stili specificati a parte Possibilità di applicare lo stesso stile a più contenuti Possibilità di riutilizzo di uno stesso contenuto con stili

diversi Aderenza agli standard

Maggiore durata nel tempo del progetto Maggiore compatibilità

Facilità di manutenzione Maggiore controllo stilistico

Page 4: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Facilità di manutenzione - I fogli di stile possono essere globali per il sito

Le regole stilistiche stanno in un posto solo e sono utlizzate da tutte le pagine del sito

- Facilità di sviluppo e gestione Più facile sviluppate siti consistenti dal punto di vista visuale Facilità nella manutenzione del sito: se si vuole cambiare uno

stile si cambia in un posto solo - Codice HTML semplificato e pulito

Eliminando tag e rientri forzati con decine di &nbsp; Maggiore chiarezza sull’interpretazione da parte dei browser

- Visualizzazione delle pagine più rapida Evitando tabelle annidate Riducendo il peso dei file

Page 5: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Maggiore controllo stilistico

Con i fogli di stile si riescono a controllare aspetti stilistici che non si possono controllare in altro modo Le famiglie di tipi (font, dimensioni, interlinea) La sottolineatura dei link La possibilità di HOVER sui link Divisione della pagina in sezioni (div, span) con stili diversi Controllo di margini e bordi I colori, gli sfondi atro ...

Page 6: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

- In HTML si puo' specificare il formato delle singole istanze di elementi del documento ma non di un tipo di elemento (es. H1,H2,ecc.)

<H1><FONT face="helvetica" color="blue“

size="+4">CAPITOLO 1</FONT></H1>

- CSS permette di dare specifiche di formato per tutte le occorrenze di un elemento come H1:

<STYLE>H1 {color: blue; background: red} </STYLE>

Page 7: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

REGOLE CSS:

elemento html selettore

<STYLE> H1 {color: blue; background: red} </STYLE>

attributo valore

Page 8: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Fogli di stile esterni

Passi da seguire:1. Si crea il foglio di stile2. Si salva con estensione .css (es stile.css)3. Nella sezione head della pagina HTML a cui vogliamo

applicare lo stile:<head>…

<link rel="stylesheet" type="text/css" href="stile.css">…

</head>

Page 9: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Fogli di stile incorporati(embedded) Se vogliamo definire uno stile che vale solo per il documento:

<head>…

<style type="text/css"> <!-- body {margin: 0; font-family: helvetica, arial, sans-serif

} --></style></head> I commenti servono per i browser che non

supportano i CSS e per evitarel’indicizzazione da parte dei motori di

ricerca

Page 10: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Fogli di stile in linea (inline) Per cambiare gli stili localmente in una porzione di un

documento Supponiamo che lo stile del documento preveda il tipo

Arial, dimensione 12px, di colore nero …

<p style="color: red; font-style: italic">

Questo è importante e lo voglio mettere

in rosso e in corsivo!! </p>

Page 11: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Tre modi di usare gli stili

IN LINEA All’interno dei tag:<h1 style="font-color:red;font-size:12px">testo</h1>Con i CSS si adoperano due TAG con lo scopo di fare da "contenitore”<div></div> e <span></span> Avrei potuto ottenere la stessa cosa usando un contenitore <div> a questo modo:<div style="font-color:red;font-size:12px"> testo </div>

• INCORPORATI In una dichiarazione nel tag <head><head><title>La mia pagina web</title><style type="text/css"><!--

body,td{font-family: Arial, Helvetica, sans-serif;

}--></style></head>

ESTERNI In un foglio di stile associato a più pagine<head><title>pagina web</title><link href="style.css" rel="stylesheet" type="text/css“ /></head>

Page 12: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Il vantaggio dei CSS esterni

Un file di formattazione per tutto il sito

TitoloTitolo

CSS

h1 { color:red}

CSS

h1 { color:red}

Sito web

Titolo1

Titolo1

Page 13: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

File con foglio di stile esterno:<HTML><HEAD> <LINK rel="stylesheet" type="text/css" href="stile.css"><HEAD> ...

Lo stesso documento apparira' in formati diversi a seconda del foglio di stile collegato

Utenti con esigenze diverse e mezzi diversi di visualizzazione

Formato aziendale per un sito

Page 14: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Il contenuto di uno style sheet: valori e unità di misura

Colori Con nome: red, gray, purple Con i livelli RGB:

h1 { color: rgb(75%,60%,20%) } Codice esadecimale

h1 { color: #ff0011 } Unità di misura

Valori percentuali Assolute: cm, mm, pt, pc

h1 { font-size: 12pt } Relative: em, ex, px

h1 { font-size: 0.1em; line-height: 14px } URL

#header { background-image: url(logo.gif) }

Page 15: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Esempio di cascata di stili

<HTML><HEAD>

<STYLE TYPE="text/css">p {font-size:24pt;color:green;border-width:thick;border-style:ridge;border-color:red}p.red {color:red}

</STYLE></HEAD><BODY>

<p class="red">Pippo</p><div style="background:orange;border-color:green">

<p>Pluto</p><p class="red" style="font-size:12pt;background:yellow">Topolino</p>

</div></BODY><HTML>

Page 16: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Elementi di formattazione

Element width

Element height

Box topBox left

Box width

Box height

Margin Space

Border Space

Padding Space

ContentSpace

Page 17: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Concetti Base: Il box model

high

width

contentleftpadding

rightpadding

top padding

bottom padding

leftborder

rightborder

top border

bottom border

leftmargin

rightmargin

bottom margin

top margin

Page 18: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Esempio di posizionamento:

<HTML><HEAD>

<STYLE TYPE="text/css">#aposition{position:relative;left:30;top:20}a {color:red}p {font-size:24pt;color:green;border-width:thick;

border-style=ridge;border-color=red}p.red {color:red}</STYLE>

</HEAD><BODY>

<p class="red">Pippo</p><div style="background:orange;border-color=green;

position:absolute;left:100;top:150"><p style="padding-left:20;margin:20">Pluto</p><span id="aposition">

<p class="red" style="font-size:12pt;background-color:yellow">Topolino</p>

</span></div>

</BODY></HTML>

Page 19: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Elementi di formattazione

color:colorbackground-color:colorbackground-image:url

font-family:namefont-size:xx-small|x-small|small|medium|large|x-large|xx-large|

larger|smaller|absoluteSize|relativeSize|percentage|lenghtfont-style:normal|italicfont-weight:bold|bolder|lighter|normal|100|200|...|800|900

Page 20: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Elementi di formattazione

line-height:normal|length|percentage

text-align:left|center|right|justifytext-decoration:blink|line=through|overline|underlinetext-indent:lenght|percentagetext-transform:none|capitalize|uppercase|lowercase

Page 21: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Elementi di formattazione

border-bottom-width,border-top-width,border-right-width,border-left-width:thin|medium|thick|nborder-color:colorborder-style:double|groove|none|inset|outset|ridge|solidborder-width:thin|medium|thick|length

margin:thickness thin thickmargin-bottom,margin-left,margin-right,margin-top :thickness

padding :thicknesspadding-bottom,padding-left,padding-right,padding-top :thickness

Page 22: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Posizionamento elementi HTML HTML visualizza elementi uno di seguito all'altro in base

a occorrenza nel documento DHTML permette di posizionare un elemento dove

si vuole nel documento Posizionamento assoluto e relativo Primi e secondi piani Possibilita' di cambiare posizione agli oggetti

Page 23: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Proprieta' di posizionamento: top: y left: xwidth: ampiezzaheight: altezza z-index: profondita'posizion: tipo di riferimento x y clip: area visualizzatavisibility: visualizzazione o meno float: posizionamento immagine slegata da testo

Page 24: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Esempi di posizionamento

<div style="position: absolute; top: 100px; left=10%;z-index: 0">sono qui<div>

<style>.logo {position: absolute; top: 100px; left=10%}</style><div class="logo"><img src="file.gif"></div>

Page 25: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Assoluto e relativo hanno significato rispetto ad un contesto:

<div>inizio contesto<span style="top: 50px; left:50px; position: ...">span assoluto</span>fine contesto</div>

inizio contesto fine contesto span assoluto

inizio contesto fine contesto span relativo

Page 26: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Wrapping text on an element

<P> Un testo molto molto molto molto molto molto lungo.Un testo molto molto molto molto molto molto lungo.<SPAN STYLE=“float:right; width:120”><IMG SRC=“UrlOfMyImage.gif” height=“90” width=“120”></SPAN>Un testo molto molto molto molto molto molto lungo.Un testo molto molto molto molto molto molto lungo</P>

Page 27: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Elementi di formattazione - liste

<LI>

<OL> line-style:decimal|lower-alpha|lower-roman|upper-alpha|upper-roman

<UL>line-style:circle|disc|square

Page 28: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Fine

Page 29: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Come si applica uno stile CSS -1 - Si ridefinisce ogni singolo tag

h1 { color: red; }h2, h3, h4 { color: green; font-family: serif; } p { color: black; }body { color: blue; }

- Si assegna una “class”.contenuto { margin: 5px; }

h1.pagina { padding: 6px; }-----------------------

<h1 class="pagina">Titolo</h1><p class="contenuto">Mio contenuto</p>

- Si ridefinisce un “id”#header { background-color: red; }

-----------------------<div id=“header”><img src=“logo.gif” /></div>

Page 30: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

EREDITARIETA':se un elemento non specifica una certa proprieta' del formato, questa viene ereditata dagli elementi sovrastanti

<div style="color:blue; font-style:italics">Testo <span style="back: red">rosso</span></div>

(Attenzione a background)

Testo rosso

Page 31: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

EREDITARIETA': valori relativi a contesto

<div style="font-size: 20pt; font-weight: bold; color: red">Testo <span style="font-size: 80%; font-weight: lighter">piu' piccolo</span></div>

Testo piu' piccolo

Page 32: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Ordinamento elementi: documento forma un albero in base all'inclusione degli elementi:<body><h1>Capitolo <em> Uno</em> </h1><div>Testo del capitolo</div></body>

body h1 div em

Page 33: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Descrittori elemento HTML:

H1 {color: blue}

classe: si specifica le proprieta' di una classe a cui possono appartenere le occorrenze dei diversi elementi:

.italico {font-style: italic}<div class="italico">Testo italico</div>

Page 34: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Combinazione di descrittori:elementi annidati:

LI LI {font-size: smaller}H1 DIV {font-size: smaller}(Attenzione! L1, H1 {color: blue} e' un grouping)

classi limitate ad elementi:h1.italico {font-style: italic}<h1 class="italico">Capitolo italico</h1><h1>Capitolo normale</h1>

Page 35: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Identificatore unico: #nome

#qui {color: red}<div id="qui">Testo identificato</div>

Permette di riferirsi ad una istanza tramite Javascript: crea un oggetto nel DOM

Attenzione: se non e' unico si genera errore: "oggetto non esistente"

Page 36: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Pseudoclassi:

p:first-letter {fontsize: 150%}

a:link {color: red}

a:visited {color: blue}

Page 37: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

Javascript e Cascading Style Sheets

Controllo proprieta' di stile per mezzo di javscript

Creazione di effetti di movimento, apparizione, visualizzazione parziale, scrittura testo

Leggere differenze fra Netscape 4.0x e Internet Explorer 4

Page 38: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

ESTENSIONE MODELLO OGGETTI Javascript si riferisce alle occorrenze di

elementi tramite gli identificatori unici:<div id="io">testo</div>

In Netscape:document.layers["qui"].color='blue';

in Explorer:document.all.qui.style.color='blue';

Page 39: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

ESEMPIO: oggetto che scompare

<div id="timido"><a onMouseOver= "javascript:document.layers['timido'].visibility='hidden';">Non avvicinarti</a><div>

<script language="javascript">function movedown(layername){ document.layers[layername].top+=10;}</script>

N.B.: codice per Netscape 4

Page 40: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

CODICE COMPATIBILE CON N e IE: var layerRef="", styleSwitch=""; function init(){ if (navigator.appName == "Netscape") { var layerRef="document.layers"; var styleSwitch=""; }else{ var layerRef="document.all"; var styleSwitch=".style";}}

eval(layerRef + '["' + layername + '"]' + styleSwitch + '.' + property + "=" + value);

document.layers document.all

.style

argomenti funzione

Page 41: Storia dei fogli di stile HTML non consentiva di separare la formattazione dal contenuto. Codice HTML sempre più complesso e pasticciato paragrafo con

ESEMPIO:

<script language="javascript">function setproperty(layername, property, value){ eval(layerRef + '["' + layername + '"]' + styleSwitch + '.' + property + "=" + value);}

function movedown(layername){ eval(layerRef + '["' + layername + '"]' + styleSwitch + '.top+=10');}</script>