Qu`est-ce que CSS?
Transcription
Qu`est-ce que CSS?
Qu'est-ce que CSS? CSS: Cascading Style Sheets CSS : comment afficher les éléments HTML Ajoutés à HTML 4.0 pour résoudre un problème Les feuilles de style externes permettent d'économiser beaucoup de travail Les feuilles de style externes sont stockées dans des fichiers CSS 1/33 Feuilles de style pour résoudre un gros problème HTML n'a jamais été destiné à contenir des balises pour le formatage d'un document. HTML a été destiné à définir le contenu d'un document, comme: <h1>Ceci est un titre</h1> <p>Ceci est un paragraphe.</p> Lorsque les balises comme <font>, et les attributs de couleur ont été ajoutées à la spécification HTML 3.2, -> cauchemar pour les développeurs. Processus long et coûteux. Pour résoudre ce problème, le World Wide Web Consortium (W3C) a créé CSS. En HTML 4.0, la mise en forme peut être retiré du document HTML, et stockée dans un fichier CSS séparé. Tous les navigateurs prennent en charge CSS aujourd'hui. CSS permet d'économiser beaucoup de travail! 2/33 Syntaxe CSS Une règle CSS comporte deux parties principales: un sélecteur et une ou plusieurs déclarations: h1 {color:blue;font-size:12px} Le sélecteur est normalement l'élément HTML que vous voulez mettre en forme. La propriété est l'attribut de style que vous souhaitez modifier. Chaque propriété a une valeur. 3/33 Commentaires en CSS Les commentaires sont utilisés pour expliquer votre code, et peuvent vous aider lorsque vous modifiez le code source à une date ultérieure. Les commentaires sont ignorés par les navigateurs. Un commentaire commence par CSS "/*", et se termine par "*/", comme ceci: /*Ceci est un commentaire*/ p { text-align:center; /*Un autre comentaire*/ color:black; font-family:arial; } 4/33 CSS id et class En plus de définir un style pour un élément HTML, CSS vous permet de spécifier vos propres sélecteurs appelés id et class. Le sélecteur d'ID est utilisé pour spécifier un style pour un seul élément unique. Le sélecteur d'ID utilise l'attribut id de l'élément HTML, et est définie par un "#". La règle de style ci-dessous sera appliquée à l'élément avec un id = "para1": #para1 { text-align:center; color:red; } Le sélecteur de classe est utilisé pour spécifier un style pour un groupe d'éléments. Contrairement au sélecteur d'ID, le sélecteur de classe est le plus souvent utilisé sur plusieurs éléments. Cela vous permet de définir un style particulier pour les éléments HTML avec la même classe. Le sélecteur de classe utilise l'attribut HTML class, et est définie par un "." Dans l'exemple ci-dessous, tous les éléments HTML avec class = "center" seront alignés au centre: 5/33 .center {text-align:center;} p.center {text-align:center;} td.center {text-align:center;} ... Regroupement des sélecteurs .texte { margin-left: } p { margin-left: } h1 { margin-left: } h2 { margin-left: } 0; 0; 0; 0; Sera équivalent à : .texte, p, h1, h2 { margin-left: 0; } 6/33 Regroupement des propriétés p { font-family: Arial, sans-serif; font-style: italic; font-weight: bold; font-size: 120%; line-height: 140%; } peut se remplacer en : p { font : italic bold 120%/140% Arial, sans-serif; } 7/33 Autres sélecteurs hiérarchiques Les normes CSS 2 et CSS 3 (actuellement en préparation) prévoient d’autres formes de sélection hiérarchique. On peut ainsi ne désigner que le premier enfant d’un élément, ne pointer que des éléments directement adjacents à un autre, etc. Il est même possible de prendre en compte les attributs des éléments pour les sélectionner. Motif * e ef e>f e:first-child e:link, e:visited e:active, e:hover, e:focus e:lang(c) e+f e[foo] e[foo="warning"] e[foo~="warning"] e[lang|="en"] div.warning e#myid 8/33 Description n'importe quel élément. les éléments de type e les éléments f descendants de e les élements f qui sont des fils de e les éléments e qui sont les premiers fils de leur parent les éléments e s'ils sont les sources d'une ancre ou d'un hyperlien (pas encore visité ou visité) les éléments e suivant une action les éléments e dont la langue est c. les éléments f tel que l'élément frère qui précède est un élément e les éléments e avec un attribut "foo" les éléments e avec un attribut "foo" dont la valeur est "warning" les éléments e avec un attribut "foo" dont l'une des valeurs est "warning" les éléments e avec un attribut "foo" dont l'une des valeurs (séparé par un trait d'union) est "en" identique à div[class~="warning"] l'élément e ayant pour id "myid" Trois façon d'insérer une feuille de style Feuille de style externe Une feuille de style externe est idéal lorsque le style est appliqué à plusieurs pages. Avec une feuille de style externe, vous pouvez modifier l'apparence d'un site Web tout en changeant un seul fichier. Chaque page doit être liée à la feuille de style en utilisant la balise <link> à l'intérieur de la section d'entêre: <head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head> 9/33 Trois façon d'insérer une feuille de style Feuille de style interne Une feuille de style interne doit être utilisée quand un seul document a un style unique. Vous définissez les styles internes dans la section head d'une page HTML, en utilisant la balise <style>, comme ceci: <head> <style type="text/css"> hr {color:sienna;} p {margin-left:20px;} body {background-image:url("images/back40.gif");} </style> </head> 10/33 Trois façon d'insérer une feuille de style Inline Styles Utilisez cette méthode avec parcimonie! Pour utiliser des styles inline vous utilisez l'attribut de style dans la balise considérée. L'attribut style peut contenir n'importe quelle propriété CSS. L'exemple qui suit montre comment changer la couleur et la marge de gauche d'un paragraphe: <p style="color:sienna;margin-left:20px">Ceci est un paragraphe.</p> 11/33 Plusieurs feuilles de style Feuille de style externe h3 { color:red; text-align:left; font-size:8pt; } Feuille de style interne h3 { text-align:right; font-size:20pt; } Alors une feuille contenant les deux définitions aura comme propriétés: color:red; text-align:right; font-size:20pt; 12/33 Plusieurs feuilles de style en cascade Les styles peuvent être spécifiées à plusieurs endroits A l'intérieur d'un élément HTML Dans la section entête du document HTML Dans un fichier externe Remarque: Plusieurs feuilles de style externes peuvent être utilisées Priorité: 1. 2. 3. 4. Navigateur par défaut Feuille de style externe Feuille de style interne (section head) Style en ligne Note: Si le lien vers la feuille de style externe est placée après la feuille de style interne en HTML, la feuille de style externe remplace la feuille interne. Hack CSS: !important permet de définir une propriété de style qui sera obligatoirement utilisé. 13/33 Toutes les propriétés de fond en CSS Propriété 14/33 Description background fixe toutes les propriétés en une seule background-attachment l'image est fixe ou bouge avec le reste de la page background-color couleur de fond d'un élément background-image définit l'image de fond d'un élément background-position définit la position de départ d'une image de fond background-repeat définit la répétition de l'image Valeurs background-color background-image background-repeat backgroundattachment background-position scroll,fixed color-rgb (eg. rgb(255,255,255)) color-hex(eg. #00ff00) color-name(eg. red,blue) transparent url(url) none left top, left center, left bottom, right top, right center, right bottom, center top, center center, center bottom x% y% xpos ypos repeat repeat-x repeat-y no-repeat CSS (1 ou 2) 1 1 1 1 1 1 Toutes les propriétés de texte en CSS Propriété color direction Description définit la couleur d'un texte définit l'orientation du texte line-height définit la distance entre les lignes couleur ltr, rtl normal number length % normal length left, right, center, justify none, underline, overline, line-through, blink length % none color length none, capitalize, uppercase, lowercase baseline, sub, super, top, text-top, middle, bottom, text-bottom length % CSS (1 ou 2) 1 2 1 text-align augmenter ou diminuer l'espace entre les caractères aligne le texte dans un élément text-decoration ajoute une décoration au texte text-indent retrait de la première ligne de texte dans un élément text-shadow ombre d'un texte text-transform contrôles des lettres dans un élément vertical-align définit l'alignement vertical d'un élément white-space définit comment sont traités les espaces à l'intérieur d'un élément normal, pre, nowrap 1 word-spacing augmenter ou diminuer l'espace entre les mots normal length 1 letter-spacing 15/33 Valeurs 1 1 1 1 1 1 Toutes les propriétés de fonte en CSS Propriété font définit toutes les propriétés de police en une déclaration font-family spécifie la famille de polices pour le texte font-size spécifie la taille de la police du texte font-style indique le style de police pour le texte indique si un texte doit être affiché dans une police small-caps font-variant font-weight 16/33 Description indique l'épaisseur d'une police Valeurs CSS (1 ou 2) font-style, font-variant, font-weight, font-size/line-height, font-family, 1 caption, icon, menu, message-box, small-caption, status-bar, family-name 1 generic-family xx-small, x-small, small, medium, large, x-large, xx-large, smaller, 1 larger, length % normal, italic, oblique 1 normal, small-caps 1 normal,bold, bolder, lighter 100, 200, 300, 400, 500, 600, 700, 800, 900 1 Toutes les propriétés de liste en CSS Propriété list-style list-style-image list-style-position list-style-type 17/33 Description définit toutes les propriétés d'une liste en une déclaration spécifie une image comme marqueur d'élément de liste indique si le point de marqueurs liste doit apparaître à l'intérieur ou à l'extérieur du flux de contenu indique le type de marqueur Valeurs list-style-type list-style-position list-style-image url none CSS (1 ou 2) 1 1 inside, outside 1 none, disc, circle, square, decimal, decimal-leading-zero, armenian, georgian, lower-alpha, upper-alpha, lower-greek, lower-latin, upperlatin, lower-roman, upper-roman 1 Boîtes en CSS margin border padding contenu Marge externe (margin) : efface une zone autour de la frontière. La marge est complètement transparente Bordure (border) : Une frontière qui délimite la marge extérieure de la marge intérieure.La bordure est affectée par la couleur de fond de la boîte Marge interne (padding) : Efface une zone autour du contenu. La marge intérieure est affectée par la couleur de fond de la boîte Contenu : zone où le texte et les images apparaissent La largeur d'un élément se calcule comme suit : largeur totale = largeur + padding gauche + padding right + bordure gauche + bordure droite + marge gauche + marge droite La hauteur d'un élément se calcule comme suit : hauteur totale = hauteur + padding haut + padding bas + bordure haute + bordure basse + marge haute + marge basse 18/33 Boîtes en CSS margin border padding contenu Compatibilité avec IE : IE inclut le padding et le border dans la largeur, lorsque la propriété width est fixée, sauf si un DOCTYPE est déclaré. 19/33 Toutes les propriétés de la bordure en CSS Propriété border toutes les déclaration en une border-bottom-color border-bottom-style border-bottom-width toutes les déclarations pour border-bottom en une définit la couleur pour la bordure basse définit le style de la bordure basse définit l'épaisseur de la bordure basse border-color définit la couleur des quatre bordures border-left toutes les déclarations pour border-left en une border-left-color border-left-style border-left-width définit la couleur de la bordure gauche définit le style de la bordure gauche définit l'épaisseur de la bordure gauche border-right toutes les déclarations pour border-right en une border-right-color border-right-style border-right-width définit la couleur de la bordure droite définit le style de la bordure droite définit l'épaisseur de la bordure droite border-style définit le style pour les quatre bordures border-top toutes les déclarations pour border-top en une border-top-color border-top-style border-top-width définit la couleur pour la bordure haute définit le style pour la bordure haute définit l'épaisseur de la bordure haute border-width définit l'épaisseur pour les quatre bordures border-bottom 20/33 Description Valeurs border-width, border-style, border-color border-bottom-width, borderbottom-style, border-bottom-color border-color border-style border-width color_name, hex_number, rgb_number, transparent border-left-width, border-left-style, border-left-color border-color border-style border-width border-right-width, border-rightstyle, border-right-color border-color border-style border-width none, hidden, dotted, dashed, solid, double, groove, ridge, inset, outset border-top-width, border-top-style, border-top-color border-color border-style border-width thin, medium, thick length CSS (1 ou 2) 1 1 2 2 1 1 1 2 2 1 1 2 2 1 1 1 2 2 1 1 Toutes les propriétés du contour en CSS Un contour est une ligne dessinée autour des éléments, en dehors de la bordure, afin de démarquer cet élément. un exemple avec la propriété {outline-style:dotted;border:1px solid red;} Propriété outline 21/33 Description définit toutes les propriétés du contour en une déclaration outline-color définit la couleur du contour outline-style définit le style du contour outline-width définit l'épaisseur du contour Valeurs outline-color, outline-style, outline-width color_name, hex_number, rgb_number, invert none, dotted, dashed, solid, double, groove, ridge, inset, outset thin, medium, thick length CSS (1 ou 2) 2 2 2 2 Toutes les propriétés de la marge extérieure en CSS Propriété margin 22/33 Description définit toutes les propriétés de la marge extérieure en une déclaration margin-bottom définit la marge extérieure basse margin-left définit la marge extérieure gauche margin-right définit la marge extérieure droite margin-top définit la marge extérieure haute Valeurs margin-top, margin-right, marginbottom, margin-left auto length % auto length % auto length % auto length % CSS (1 ou 2) 1 1 1 1 1 Toutes les propriétés de la marge intérieure en CSS Propriété padding 23/33 Description définit toutes les propriétés de la marge intérieure en une déclaration padding-bottom définit la marge intérieure basse padding-left définit la marge intérieure gauche padding-right définit la marge intérieure droite padding-top définit la marge intérieure haute Valeurs padding-top, padding-right, padding-bottom, padding-left auto length % auto length % auto length % auto length % CSS (1 ou 2) 1 1 1 1 1 Affichage et visibilité en CSS display:none du texte <div> style="display:none;width:100px;height:100px;color:red"> </div> du texte en dessous du div du texte du texte en dessous du div visibility:hidden du texte <div style="visibility:hidden;width:100px;height:100px;color:red"> </div> du texte en dessous du div du texte du texte en dessous du div La propriété display permet de modifier la propriété d'afichage par défaut des éléments (block ou inline) 24/33 Positionnement des éléments en CSS Le positionnement statique : les éléments HTML sont par défaut en position statique (par rapport au flux normal d'affichage). Les éléments en position statique ne sont pas affectés par les propriétés top,left,right et bottom. Le positionnement fixe : les éléments HTML en position fixe sont positionnés relativement par rapport à la fenêtre du navigateur. Ces éléments ne bougeront pas même si l'on se déplace dans la page. Le positionnement relatif : positionnement par rapport à sa position normale (positionnement statique) Le positionnement absolu : un élément en position absolu est positionné relativement par rapport à un élément parent dont la position est autre que statique. Si un tel élément parent n'existe pas le block conteneur est <html> Les éléments en position absolue sont retirés du flux normal (comme la propriété display:none). Ces élément peuvent se chevaucher. On règle la priorité de chevauchement (par défaut le flux normal) en utilisant la propriété z-index en CSS. L'élément possédant la valeur la plus grande en z-index sera affiché au dessus des autres éléments. 25/33 Positionnement des éléments en CSS Propriété bottom clip Description définit le positionnement bas d'un élément clip un élément possédant la position absolue. cursor spécifie le type de curseur à afficher left définit le positionnement gauche d'un élément définit ce que l'on doit faire si un élément sort de la boîte parente définit le positionnement d'un élément définit le positionnement droit d'un élément définit le positionnement haut d'un élément définit l'empilement des éléments overflow position right top z-index Valeurs CSS (1 ou 2) auto, length, % 2 shape, auto 2 url, auto, crosshair, default, pointer, move, e-resize, ne-resize, nw-resize, 2 n-resize, se-resize, sw-resize, s-resize, w-resize, text, wait, help auto, length, % 2 auto, hidden, scroll, visible 2 absolute, fixed, relative, static, auto, length, % auto, length, % number, auto 2 2 2 2 Une liste dans le flux normal : 1. élément 1 2. élément 2 3. élement 3 26/33 La même liste en position relative avec un décalage à gauche de 1 cm et de 0.5 cm en haut : 1. élément 1 2. élément 2 3. élement 3 La propriété flottant en CSS Par défaut, les éléments de type block occupent toute la largeur de la page, même si l'on spécifie une largeur. Pour positionner deux éléments de type block l'un à côté de l'autre, on utilise la propriété float(left,right,none). Exemple : deux éléments de type block de largeur 3cm dans le flux normal Les mêmes avec la propriété {float:left;margin-left:2mm} : Pour repositionnner les éléments HTML dans le flux normal, on utilise la propriété clear(left,right,none,both) Même avec un <br/>, le texte continue à côté du div flottant. Maintenant on revient dans le flux normal d'affichage. 27/33 Pseudo-classes en CSS Nom :active :first-child :focus :hover :lang :link :visited 28/33 Description ajoute un style à un élément qui est activé ajoute un style à un élément qui est le premier enfant d'un autre élément ajoute un style à un élément qui a le focus clavier ajoute un style à un élément lorsque l'on passe la souris dessus ajoute un style à un élément avec un attribut lang spécifiques ajoute un style à un lien non visité ajoute un style à un lien visité CSS (1 ou 2) 1 2 2 1 2 1 1 Pseudo-éléments en CSS Nom :after :before :first-letter :first-line 29/33 Description ajoute un contenu après un élément ajoute un contenu avant un élément ajoute un style sur le premier caractère d'un texte (lettrine) ajoute un style à la première ligne d'un texte CSS (1 ou 2) 2 2 1 1 Maladies exotiques des CSS ? La divite chronique Symptômes : crise de la perception du monde sensé, le malade ne jurant plus que par une seule balise : l’élément <div>, par lequel il remplace toutes les structures utilisées auparavant (tableaux imbriqués, paragraphes, titres, citations, etc.). Le patient transforme donc tout ce qu’il a connu en <div>. Il s’exprime souvent de la sorte : « Sus aux tableaux ! Je les remplace par des <div>) ». Conséquences : transformer cent cellules de tableaux imbriquées en autant de <div> imbriqués ne résout rien. La structure, plus complexe, est devenue incompréhensible et inutilisable. Pire : remplacer toutes les balises logiques (<p>, <h1>, <cite>, <blockquote>, …) par la balise unique et générique <div> fait perdre aux documents tout leur sens et toute leur sémantique, les rendant inintelligibles aux navigateurs non graphiques et aux moteurs de recherche. Traitement : un traitement lourd est nécessaire. Il faut (ré)apprendre au patient qu’un document HTML doit avoir du sens et qu’il faut y utiliser chaque balise à bon escient : <p> structure des paragraphes, <div> délimite les grandes zones du document, <h1>… <h6> dénotent les niveaux de titres, <ul> introduit les listes et menus, etc. Le risque de rechute est alors faible. 30/33 Maladies exotiques des CSS ? La classite aiguë C’est une admiration exacerbée des classes CSS, proche de la dévotion. Certaines thèses y voient un rapprochement religieux. Symptômes : la classite se manifeste par une utilisation à outrance des propriétés class sur chaque balise rencontrée. Ce besoin d’identifier chaque élément par une classe (souvent répétée) témoigne d’un soudain manque de confiance en soi provoqué par une connaissance évasive des sélecteurs CSS et de leur héritage parent-enfant. <div id="menuglobal"> <ul class="menu"> <li class="menuitem"><a <li class="menuitem"><a <li class="menuitem"><a <li class="menuitem"><a </ul> class="bouton" class="bouton" class="bouton" class="bouton" href="#">Lien href="#">Lien href="#">Lien href="#">Lien 1</a></li> 2</a></li> 3</a></li> 4</a></li> Conséquences : prise de poids soudaine et excessive (exprimée en octets). Le code est inutilement alourdi et la répétition de ces propriétés le rend parfois difficile à interpréter. Traitement : une cure d’apprentissage des sélecteurs CSS et de leurs propriétés d’héritage est nécessaire pour venir à bout de cette affection. 31/33 <ul id="menu"> <li><a href="#">Lien <li><a href="#">Lien <li><a href="#">Lien <li><a href="#">Lien </ul> 1</a></li> 2</a></li> 3</a></li> 4</a></li> Maladies exotiques des CSS ? La cellulite ravageuse Cette forme de maladie est une réminiscence de nos anciennes habitudes de conception de sites web à l’aide de tableaux et de cellules. Cette technique impliquait de multiples découpes des éléments en petites cellules, contenant chacune un morceau d’image de l’arrière-plan ou une partie du contenu. Symptômes : on reconnaît le patient atteint de cellulite ravageuse à son obsession à vouloir tout découper, imbriquer et « celluliser ». Par exemple, le site d’Alsacréations sera immédiatement perçu comme un enchevêtrement élémentaire de multiples cellules auxquelles seront appliqués des équivalents des propriétés rowspan et colspan. Autre symptôme fréquent : le patient continue de tronçonner toutes ses images d’arrière-plan en plusieurs fichiers, se compliquant la tâche pour l’intégration de son code. Conséquences : à l’instar de la classite, la cellulite ravageuse implique une prise de poids conséquente chez le malade. Elle produit surtout une structure inextricable et illogique, opaque même aux yeux d’un utilisateur averti. Avec le temps et l’évolution de la maladie, le patient ne comprendra plus son propre code. Quant aux navigateurs, la complexité du site les incitera à mal interpréter les documents. Traitement : cette pathologie lourde nécessite une complète remise en cause de ses propres conceptions et de son expérience de webmaster. 32/33 Maladies exotiques des CSS ? La négativite virulente C’est l’obstination à nier en bloc l’existence des maladies précédentes. Le malade reste cloîtré dans son monde et refuse de s’ouvrir à la réalité. Il feint de croire aux promesses des standards CSS tout en réfutant chaque argument proposé en leur faveur. La strictite aveugle Cette nouvelle forme de contagion fait croire aux débutants que tous les sites web doivent être validés en XHTML Strict. Méfiez-vous de ces charlatans de la médecine qui vous submergent de remèdes (règles, doctypes, prologues). Le débutant est alors noyé de doctrines à respecter, alors qu’il est souvent préférable d’aller à son rythme, de commencer en transitionnel, voire de conserver un squelette minimal en tableaux et d’y insérer les mises en forme CSS par à-coups. 33/33