POSIZIONAMENTO
position
La proprietà position specifica il metodo di posizionamento utilizzato per un elemento.
position
può assumere quattro diversi valori:
static
relative
fixed
absolute
La posizione degli elementi è determinata dalle proprietà top
, right
, bottom
e left
.
- Modificare i valori di queste proprietà ha effetto solo se position è diversa da static.
- L'effetto sulla posizione cambia a secondo dell'impostazione di position.
static
Gli elementi HTML sono posizionati così per impostazione predefinita.
- Un elemento con position:static non è posizionato in modo speciale, ma secondo il normale flusso della pagina
- La posizione non è influenzata dalle proprietà top, right, bottom e left.
div.normale
{
position: static;
border: 3px solid #73AD21;
}
relative
- La posizione di un elemento con position:relative è calcolata in maniera relativa rispetto alla sua posizione naturale secondo il normale flusso della pagina
- Le proprietà top, right, bottom e left causeranno uno scostamento dell'elemento rispetto alla sua posizione naturale.
div.relativa {
position: relative;
left: 50px;
}
fixed
- La posizione di un elemento con position:fixed è calcolata in relazione alla finestra del browser il che significa che rimane sempre nello stesso posto, anche se la pagina viene fatto scorrere.
- Le proprietà top, right, bottom e left determinano la posizione dell'elemento.
div.fissa {
position: fixed;
top: 0;
left: 0;
width: 100%;
}
absolute
- La posizione di un elemento con position:absolute è calcolata in relazione all'elemento che lo contiene se questo non è position:static, altrimenti in relazione al documento.
- Le proprietà top, right, bottom e left determinano la posizione dell'elemento.
- L'elemento position:absolute quando la pagina scrolla, scrolla insieme all'elemento relativamente al quale è posizionato.
div.realtiva {
position: relative;
width: 400px;
height: 200px;
border: 3px solid #73AD21;
}
div.assoluta {
position: absolute;
top: 80px;
right: 0;
width: 200px;
height: 100px;
border: 3px solid #73AD21;
}
z-index
- Quando un elemento è posizionato (cioè non è position:static) può sovrapporsi ad altri elementi-
- La proprietà z-index determina l'ordine di questa sovrapposizione è può avere sia un valore positivo che uno negativo.
img {
position: absolute;
left: 0px;
top: 0px;
z-index: -1;
}
CSS RESPONSIVE
VIEWPORT
- La
viewport
è l'area visibile da parte dell'utente di una pagina web.
- La
viewport
varia con il dispositivo.
- Prima della diffusione di tablet e telefoni cellulari, le pagine web erano progettate solo per gli schermi di computer:
- progettazione statica
- dimensione fissa.
- Con la diffusione di tablet e telefoni cellulari, le pagine web erano troppo grandi per adattarsi alla finestra. Per risolvere questo problema, i browser su tali dispositivi scala verso il basso l'intera pagina web per adattarsi allo schermo.
- HTML 5 ha introdotto un metodo per consentire web designer di controllare la viewport, attraverso il tag
<meta>
.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- L'elemento
<meta>
fornisce le istruzioni al browser su come controllare il ridimensionamento della pagina.
width=device-width
impone che la larghezza della pagina coincida con quella del dispositivo.
initial-scale=1.0
imposta il livello di zoom iniziale
REGOLE BASE DELLA PROGETTAZIONE RESPONSIVE
- Non bisogna costringere l'utente a scorrere in orizzontale, o diminuire lo zoom, per vedere l'intera pagina: Gli utenti sono abituati a scorrere i siti web in verticale.
- Non utilizzare grandi elementi larghezza fissa. Le immagini, ad esempio, devono sempre adattarsi al contenitore in modo da non costringere ma l'utente a scrollare orizzontalmente o a diminuire lo zoom.
- Creare contenuti che possano essere resi correttamente indipendentemente dalla larghezza.
- Utilizzare le regole media query per applicare stili diversi per schermi diversi.
- Se la larghezza di un elemento non è controllata dalle media query usare dimensioni percentuali.
- Fare attenzione nell'utilizzo del posizionamento assoluto.
REGOLA @media
@media only screen and (max-width:768px){
.container {
width: 960px;
}
}
ANIMAZIONI CON CSS
TRANSITION
transition
consente di ottenere un animazione di una certa durata da un cambio di valori delle proprietà di un elemento.
- Per creare un effetto di transizione, è necessario specificare due cose:
- la proprietà CSS su cui si desidera impostare l'effetto
- la durata dell'effetto
- L'esempio seguente mostra un elemento <div> di 100px * 100px rosso L'effetto di transizione opera sulla proprietà width, e ha una durata di 2 secondi:
div {
width: 100px;
height: 100px;
background: red;
-webkit-transition: width 2s; /* Safari */
transition: width 2s;
}
- L'effetto di transizione inizierà quando la proprietà CSS specificata (width) cambia il valore.
- Ora definiamo un nuovo valore per la proprietà width quando il mouse passa sopra l'elemento:
div:hover {
width: 300px;
}
TRANSFORM
trasform
permette di spostare, ruotare, scalare e inclinare gli elementi HTML.
- Una trasformazione è un effetto che permette un cambiamento di forma, di dimensione e/o di posizione all'elemento
- CSS 3 supporta trasformazioni 2D e 3D.
- Le trasformazioni si realizzano applicando le seguenti funzioni:
translate()
rotate()
scale()
skewX()
skewY()
translate(x,y)
- Il metodo translate() sposta un elemento dalla posizione correte secondo i parametri indicati per l'asse X e l'asse Y.
- L'esempio seguente sposta l'elemento <div> 50 pixel a destra, e 100 pixel verso il basso dalla sua posizione attuale:
div {
-ms-transform: translate(50px, 100px); /* IE 9 */
-webkit-transform: translate(50px, 100px); /* Safari */
transform: translate(50px, 100px);
}
rotate(angolo)
- Il metodo rotate() ruota un elemento in senso orario o antiorario secondo un determinato angolo.
- L'esempio seguente ruota l'elemento <div> in senso orario di 20 gradi:
div {
-ms-transform: rotate(20deg); /* IE 9 */
-webkit-transform: rotate(20deg); /* Safari */
transform: rotate(20deg);
}
scale(x,y)
- Il metodo scale() aumenta o diminuisce la dimensione di un elemento.
- L'esempio seguente ingrandisce l'elemento <div> di due volte del rispetto alla larghezza originale, e tre volte rispetto alla sua altezza originale:
div {
-ms-transform: scale(2, 3); /* IE 9 */
-webkit-transform: scale(2, 3); /* Safari */
transform: scale(2, 3);
}
skewX(angolo)
- Il metodo skewX() inclina un elemento lungo l'asse X per l'angolo determinato.
- L'esempio seguente distorce l'elemento <div> 20 gradi lungo l'asse X:
div {
-ms-transform: skewX(20deg); /* IE 9 */
-webkit-transform: skewX(20deg); /* Safari */
transform: skewX(20deg);
}
skewY(angolo)
- Il metodo skewY() inclina un elemento lungo l'asse Y per l'angolo determinato.
- L'esempio seguente distorce l'elemento <div> 20 gradi lungo l'asse Y:
div {
-ms-transform: skewY(20deg); /* IE 9 */
-webkit-transform: skewY(20deg); /* Safari */
transform: skewY(20deg);
}