DAW - e-monsitesalimaouadfel.e-monsite.com/medias/files/2017-css3-p...La notionde boite :...

Preview:

Citation preview

DAWDéveloppement Applications Web

Ouadfel Salima

Site du cours: http://salimaouadfel.e-monsite.com/

Conception de page web statique

2. CSS3

Validation CSS

W3C Validator at http://jigsaw.w3.org/css-validator/

• Tous les navigateurs ne reconnaissent pas les mêmes propriétés CSS et ne les implémentent pas de la même manière. Afin d’avoir le même rendu par tous les navigateurs, ces "propriétés propriétaires" doivent être préfixées d'un tiret et d'un code correspondant au moteur les exploitant.

Les préfixes vendeurs

Les préfixes vendeurs-webkit- → Chrome, Safari, Android

-moz- → Mozilla & Firefox

-o- → Opera

-khtml- → Safari 1.1

-ms- → IE9

-ms-filter → IE8

filter → IE5-7

th{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px; }

Propriétés préfixées

Propriété sans préfixe

http://caniuse.com/

http://shouldiprefix.com/

Le modèle de boites

• Le navigateur représente chaque élément comme une boîte.

• La boîte des éléments de type bloc commence sur une nouvelle ligne et prend toute la largeur disponible.

• La boîte des éléments de type inline se comporte comme un mot dans le texte, et sa largeur dépend de son contenu.

• flux du document : ordre dans lequel le navigateur affiche ces boîtes.• flux normal (par défaut)

• un élément père est un conteneur

• un élément fils s'affiche dans son conteneur

• élément bloc• s'affiche en dessous de son frère précédent.

• occupe toute la largeur disponible dans son conteneur.

• élément en ligne• s'affiche à côté de son frère précédent.

• retour à la ligne quand il n'y a plus de place dans le conteneur.

• flux personnalisé• certaines propriétés CSS permettent de sortir des éléments du flux normal

Flux d’affichage du documentHTML

• exemple de flux normal

NNNNNNoooooouuuuuussssss nnnnnneeeeee ppppppoooooouuuuuuvovovovovovonnnnnnssssss ppppppaaaaaassssss aaaaaafffffffichfichfichfichfichficheeeeeerrrrrr cecececececetttttttttttteeeeee iiiiiimamamamamamaggggggeeeeee ppppppoooooouuuuuurrrrrr llllll’’’’’’iiiiiinnnnnnststststststaaaaaannnnnntttttt......

Flux d’affichage du documentHTML

• <div> et <span> éléments génériques sans information

structurante prédéfinie• utilisés en association avec des feuilles de style CSS ou du Javascript via les attributs id,

class ou style

Flux d’affichage du documentHTML

Remarque

div : balise de type bloc

• peut contenir tous les autres éléments de type

bloc ou en ligne

span : balise de type en ligne (inline)• Ne peut contenir que les éléments en ligne

• Une boîte est composée de 4 parties :• Contenu (contenu de l'élément : texte, image… autres éléments…)

• Marge interne (Padding) :marge entre le contenu et la bordure

• Cadre (Border): une bordure

• Marge externe (Margin): marge entre le cadre et les boîtes matérialisant les

éléments adjacents dans le flux

marge externe

bordure

marge interne

contenu

La notion deboite

• Tous les éléments d'une boîte peuvent être contrôlés par des

propriétés CSS.

marge externebordure

Contenulargeur et

hauteur

width

height

Marge interne

épaisseur

padding

Borduretype, épaisseur

et couleur

border-style

border-width

border-color

Marge externe

épaisseur

margin

Arrière plan

couleur

image

background

margin-right

height

background-color

marge interne padding-top

width

La notion de boite : Propriétés CSS

Hauteur

élément

border-bottom-width

Width + padding-left + padding-right + border-width

Largeur élément

La notion de boite : Propriétés CSS

Notions de réseaux

La notion de boite : Propriétés CSS

exemple

La notion de boite : Propriétés CSS

Box-sizing: permet de ternir compte de la largeur, de la bordure et des

padding

EXEMPLE

• exemple (sans positionnement)

Positionnement des éléments avecCSS

250px

400px 400px

250px 20px20px

30px 30px

• attribution de dimensions aux éléments div1 et p1

ajout de marges

internes (padding)

aux élémentsdiv1 et p1

Positionnement des éléments avecCSS

20px

• ajout d'une marge externe (margin) a l'élément div1

div1 sans marge

20px

div1 avec marge

55

Positionnement des éléments avecCSS

• positionnement relatif

• l'élément est décalé à l'aide des propriétés top, right, left, bottom par

rapport à sa position normale dans le flux courant

40px

50px

Positionnement des éléments avecCSS

EXEMPLE

100px 90px

• positionnement absolu

• sort un élément du flux

• expriment des décalages non plus par rapport à position

théorique (positionnement relatif) mais par rapport à la position

d'un bloc conteneur de référence

Positionnement des éléments avecCSS

Positionnement des éléments avecCSS

• Dans le cas où tous les ancêtres de l'élément positionné en absolu ne sont pas positionnés (static), le navigateur les ignorent tous en rétablissant le positionnement par rapport aux bords de la page.

Positionnement des éléments avecCSS

Exemple

<body>

<p> <img src="dessin.gif" style="position: absolute;

left: 100px; top: 70px;"> </p>

</body>

Positionnement des éléments avecCSS

Positionnement absolu par rapport aux bords du premier ancêtre positionné

Exemple<body>

<p style="position: absolute; top: 40px; left: 100px; background-color: #FFFF99"> du texte : bla bla

<img src="rap.gif" style="position: absolute; left: 80px; top :60px;">

</p>

</body>

Positionnement des éléments avecCSS

Positionnement des éléments avecCSS

• positionnement fixe

• cas particulier du positionnement absolu

• l'élément reste fixe dans la page par rapport à la zone de visualisation (pas de

scroll)

positionnement

absolu

scrolling en

liaisonavec l'élément de référence

positionnement

fixe

pas de scrolling

Positionnement des éléments avecCSS

• En cas de chevauchement entre des éléments , la propriété z-index permet de choisir quel élément va apparaître au dessus de quel autre

• z-index va prendre un nombre en valeur : un nombre plus grand positionnera un élément devant un autre ayant un z-index plus petit.

Positionnement des éléments avecCSS

exemple

• positionnement flottant

1. sort l'élément du flux

2. l'élément est "poussé" à gauche (float: left)

ou à droite (float: right) de son conteneur.

3. les éléments qui le suivent dans le

conteneur prennent place autour de lui.

positionnement flottant (right)

Positionnement des éléments avecCSS

exemple

• positionnement flottant

1. sort l'élément du flux

2. l'élément est "poussé" à gauche (float: left)

ou à droite (float: right) de son conteneur.

3. les éléments qui le suivent dans le

conteneur prennent place autour de lui.

positionnement flottant (right)

Positionnement des éléments avecCSS

• positionnement flottant

1. sort l'élément du flux

2. l'élément est "poussé" à gauche (float: left)

ou à droite (float: right) de son conteneur.

3. les éléments qui le suivent dans le

conteneur prennent place autour de lui.

positionnement flottant (right)

Positionnement des éléments avecCSS

• positionnement flottant

1. sort l'élément du flux

2. l'élément est "poussé" à gauche (float: left)

ou à droite (float: right) de son conteneur.

3. les éléments qui le suivent dans le

conteneur prennent place autour de lui.

positionnement flottant (right)

Positionnement des éléments avecCSS

• positionnement flottant

1. sort l'élément du flux

2. l'élément est "poussé" à gauche (float: left)

ou à droite (float: right) de son conteneur.

3. les éléments qui le suivent dans le

conteneur prennent place autour de lui.

positionnement flottant (right)

Positionnement des éléments avecCSS

p4p5

• possibilité de rendre invisible des éléments

Positionnement des éléments avecCSS

•visibility:hidden masque

l'élément mais réserve sa

position et ses dimensions.

L'élément occupe de

l'espace sur la page.

p4

• possibilité de rendre invisible des éléments

Positionnement des éléments avecCSS

•display:none l'élément n'est plus du tout affiché.Tout se passe comme si il n'existait pas

div.bandeau {

width:100%; height:20%;

border-style:solid; border-width:2px;

border-color:black;

background-color:#22FF99;

}

div.menu {

float:left;

width:15%; height:80%;

background-color:#EEEEEE;

}

div.contenu {

float:center;

width:75%; height:80%;

background-color:#FFFFFF;

}

div.pied_page {

clear:both;

width:100%; height:20%;

background-color:#33FF99;

}

Mise en page avec CSS

Menu Contenu

Utilisation :

<div class="bandeau">

<h1>bandeau</h1>

</div>

<div class="menu">

<p> Menu</p>

</div>

<div class="contenu">

<p> Contenu </p>

</div>

<div class="pied_page">

<p>pied_page</p>

</div>

bandeau

Pied_page

exemple

La direction: flex-direction

row : organisés sur une ligne (par défaut)

column : organisés sur une colonne

row-reverse : organisés sur une ligne, mais en ordre

inversé

column-reverse : organisés sur une colonne,

mais en ordre inversé

Le retour à la ligne: flex-wrap

nowrap : pas de retour à la ligne (par défaut)

wrap : les éléments vont à la ligne lorsqu'il n'y a

plus la place

wrap-reverse : les éléments vont à la ligne

lorsqu'il n'y a plus la place en sens inverse

justify-content: Pour changer l’alignement,

flex-start : alignés au début (par défaut)

flex-end : alignés à la fin

center : alignés au centre

space-between : les éléments sont étirés

sur tout l'axe (il y a de l'espace entre eux)

space-around : les éléments sont étirés

sur tout l'axe, mais ils laissent aussi de

l'espace sur les extrémités

Agrandir la taille avec flex

.element:nth-child(1){ flex: 2;}

.element:nth-child(2){ flex: 1;}

Les transitions permettent de modifier la valeur

d'une propriété CSS de façon fluide, dans le

temps, créant ainsi une transition entre les

différentes valeurs de la propriété.

Exemple changer progressivement la couleur de

nos textes.

Les transitions avecCSS

Les transitions avecCSS

Pour définir une nouvelle transition animée, il est

nécessaire de préciser au minimum :

•La ou les propriété(s) à changer

•La durée de la transition

•Les conditions de déclenchement de ces

transitions

Propriété color concernée

par la transition

Durée de la transition

La transition sera

effectuée au moment

du survol du lien

Les transitions avecCSS

exemple

Au survol

de l’image

de pomme

Le texte

apparait

Les transitions avecCSS

exemple

Transition-property: précise les propriétés css à

transformer

a { transition-property: color, width; }

Transition-duration: précise le temps que dure la

transition

a { transition-duration: .2s; }

.

Les transitions avecCSS

Transition-delay: précise le temps de début de

l ’animation

a { transition-delay: 2s; }

Transition-timing-animation: indique quel type de

transition on veut voir. D'une certaine façon, cela détermine

quelle est "l'accélération" de l'effet d'animation.

a { transition-timing-duration: ease /*Rapide sur le

début et ralenti sur la fin*/

Les transitions avecCSS

Ces 4 propriètés peuvent être rassemblée en une

seule meta-proprièté avec l’obligation de préciser la

Transition-property et la Transition-duration

.

p{

transition: width 2s ,

background-color 5s;

}

p:hover{

width: 400px;

background-color: red;}

Les transitions avecCSS

Les animations CSS3 sont semblables aux

transitions. La majeure différence entre les deux est

que les animations permettront un contrôle très

précis dans le temps de la valeur que prendront les

différentes propriétés CSS.

Pour créer une animation en CSS, nous avons

besoin de la propriété animation ainsi que la règle

CSS @keyframes qui représentent le déroulement

temporel de l’animation.

Les animations avecCSS

exemple

p {

animation: monanimation 60s;

}

@keyframes monanimation {

0% { color: blue; }

50%{color:green;}

100%{ color: yellow; }

}

Nom de

l’animation

Durée de

l’animation

Temps de

chaque

changement

Les animations avecCSS

Les différentes propriétés d'animation sont :

animation-name: Où on indique le nom de

l'animation à utiliser. (obligatoire)

animation-duration: Où on indique la durée en

milliseconde (ms) ou en seconde (s) de l'animation.

(Obligatoire)

animation-iteration-count: Le nombre de fois que

l'animation doit être effectué. La valeur devra être un

nombre entier ou le mot clé infinite

animation-direction: Définira si l'animation doit

toujours jouer du début à la fin, ou si une fois rendu

à la fin, elle doit refaire l'animation en sens inverse.

Les animations avecCSS

Nom de

l’animation

Répétition

Les animations avecCSS

Recommended