Les tableaux et les pseudo-classes CSS



Documents pareils
.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

Formation HTML / CSS. ar dionoea

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

Tutoriel : Feuille de style externe

ING & NEWSLETTER NEWSLETTER RESPONSIVE

Introduction à Expression Web 2

HTML5 et CSS3 pour des sites Responsive Web Design

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

SOUTENANCE ORALE RAPPORT DE PROJET D INFORMATIQUE

Utilisation de l éditeur.

1. La notion de cascade

Grille fluide. Une grille fluide sert à structurer la mise en page, la rendre harmonieuse et faciliter le passage au responsive web design

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

JOOMLA 1.5 avancé SUPPORT DE COURS + annexe

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Responsive Design. Technologies du web. Stéphane Bouvry, 2014

Intégrateur Web HTML5 CSS3

Guide de réalisation d une campagne marketing

Présentation du Framework BootstrapTwitter

Freeway 7. Nouvelles fonctionnalités

HTML. Notions générales

Optimiser pour les appareils mobiles

Optimiser les s marketing Les points essentiels

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

TP JAVASCRIPT OMI4 TP5 SRC

Normes techniques 2011

Création de maquette web

Cours pratique Excel. Dans chacune des feuilles, les donnés sont déjà entrées afin de gagner du temps.

Bernard Lecomte. Débuter avec HTML

TP 5 Les CMS, la forme et le fond Internet et Outils (IO2)

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

Pack Fifty+ Normes Techniques 2013

Les outils de création de sites web

GUIDE D UTILISATION DU BACKOFFICE

BUREAUTIQUE. 1 Journée. Maîtriser les fonctions de base du logiciel

Cours Excel : les bases (bases, texte)

Bonnes pratiques du ing

DÉFINITION DE LA NEWSLETTER : OUVERTURE DU LOGITIEL ETARGET

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

INTRODUCTION AU CMS MODX

MESUREZ L'IMPACT DE VOS CAMPAGNES!

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

// HTML, Javascript XHTML & CSS

Initiation à html et à la création d'un site web

Créer une application de livre interactif pour tablette avec Indesign CS6 et Adobe Digital Publishing Suite

Programmation Web TP1 - HTML

Dans cette Unité, nous allons examiner

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Un mini-site internet en une après-midi

Trucs et astuces N o 2.1 COMMENT AJUSTER VOTRE TABLETTE PORTE-CLAVIER

Responsive Web Design. La Rochelle, Avril 2014

Parcours FOAD Formation EXCEL 2010

PLANIFIER UNE RÉUNION AVEC DOODLE

3. RÉALISATION ET QUALIFICATION D UN PROTOTYPE 3.1 Réalisation d un prototype CRÉATION D UNE PAGE WEB STATIQUE AU FORMAT HTML

Créer une base de données vidéo sans programmation (avec Drupal)

NOTICE TELESERVICES : Créer mon compte personnel

Soyez accessible. Manuel d utilisation du CMS

La balise object incorporer du contenu en HTML valide strict

Introduction : présentation de la Business Intelligence

RESPONSIVE WEB DESIGN

Infolettre #18 : Les graphiques avec Excel 2010

mon site web via WordPress

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

RAPPORT D'OPTIMISATION DU SITE INTERNET

Manuel utilisateur du CMS Anan6

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

<Créer un site Web. avec/> Suzanne Harvey

PARAMETRAGE CONSOLE ADMINISTRATION DE MESSAGERIE "VENDOME.EU" NOTICE UTILISATION

SAP BusinessObjects Web Intelligence (WebI) BI 4

Création d un site Internet

Brady Mobile Application

RESPONSIVE DESIGN : Comment offrir à vos sites une adaptabilité parfaite?

Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

Atelier numérique Développement économique de Courbevoie

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Débuter avec Excel. Excel

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Travaux dirigés n 10

NOEUD HERRINGBONE-PINEAPPLE STANDARD TYPE and PASS

Relever le défi du Web mobile

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz mqwertyuiopasdfghjklzxcvbnmqwert

{less} Guide de démarrage

SUPPORT DE COURS / HTML

LES TOUT PREMIERS PAS

UN SITE WEB RESPONSIVE EN UNE HEURE?

SARL DDLX Multimédia Place du général de Gaule Boisseron Tèl : support@ddlx.org. Agence Web. Design Prestashop personnalisé

Système de Gestion de Fichiers

Tableau de bord. Tableau de bord. Statistiques des contenus de votre site (nb de pages, articles, commentaires...)

CONCEPTION D S ADAPTATIFS

Transcription:

Les tableaux et les pseudo-classes CSS Introduction : Pendant longtemps, la mise en page des sites reposait sur l utilisation de tableau. En effet, face à l absence ou l interprétation parfois fantaisiste de la CSS, ils permettaient de s assurer une disposition harmonieuse. Ce temps est révolu et les tableaux retrouvent leur première fonction, la présentation de données tabulaires. Quant à la CSS, la version 3 concernant les tableaux n est pas encore définie, mais la version 2.1 est toujours valide. Balises HTML : Le tableau <table> et son titre ou sa légende <caption> Un tableau est défini entre les balises <table> et </table>. Il possède l attribut spécifique optionnel border, qui spécifie l usage d une grille. Cet attribut peut cependant être omis et les bordures seront créées avec la CSS. L ancien attribut summary (équivalent de l alt des images) est désormais prohibé. La première balise à l intérieur du tableau est son titre (ou sa légende), encadré(e) par les balises <caption> et </caption>. Elle peut contenir d autres balises à l instar d un bloc <div>. Si le tableau contient des bordures, le titre se trouvera forcément à l extérieur. Les sections d un tableau : <thead> <tbody> <tfoot> Il est possible de subdiviser le tableau en plusieurs sections horizontales de manière similaire à une page standard ou un article, avec un entête <thead>, un corps <tbody> et un pied-de-page <tfoot>. Chacune de ces sections peut contenir une ou plusieurs lignes. Il est également possible de créer plusieurs sections de corps <tbody> à la suite. Contrairement à toute logique, l ordre de déclaration de ces balises est <thead> puis <tfoot>, et finalement le(s) <tbody>. L élément <tfoot> sera de toute façon affiché en bas du tableau, même s il est déclaré en seconde position, et peut servir à reproduire l entête en bas des tables les plus grandes. Les groupes de colonnes : <colgroup> et <col> A l instar des sections précédentes, il est possible de grouper des colonnes en section verticale. Il faut inscrire celles-ci avant de déclarer les sections horizontales. On indique le nombre de colonne dans l attribut span d une balise orpheline <colgroup />. Lorsqu on veut être plus précis (en attribuant une classe à toute une colonne p.ex), il faut alors placer des balises orphelines <col /> entre les balises <colgroup> et </colgroup>. A nouveau, il est possible de regrouper certaines colonnes à l aide de l attribut span d une balise <col />. Les lignes : <tr> Chaque ligne commence par <tr> et s achève par </tr>. Une ligne comporte une ou plusieurs cellules. Des cellules d entête <th> ou de donnée <td> Il existe deux types de cellules : celles d entête <th> et celles de donnée <td>. Les cellules doivent être situées au sein d une ligne (<tr> </tr>). Toutes les cellules du tableau doivent être déclarées, même si celles-ci sont vides. 1

Il est possible de fusionner des cellules, en utilisant l attribut colspan (fusion sur plusieurs colonnes) ou rowspan (fusion sur plusieurs lignes) et en indiquant le nombre de colonnes/lignes (respectivement) fusionnées. Les cellules fusionnées sur plusieurs lignes ne doivent plus être déclarées dans les lignes suivantes. Les cellules peuvent être rattachées (sémantiquement) à leurs entêtes grâce à l attribut headers. Il reçoit comme paramètre les identifiants (id) des entêtes, séparées par un espace. Alternativement, les cellules d entête peuvent être rattachées (toujours sémantiquement) aux cellules de données, à l aide de l attribut scope, qui prend l une des valeurs suivante : row (ligne), col (colonne), rowgroup (groupe de lignes), colgroup (groupe de colonnes), auto (par défaut). Ces deux attributs n ont aucun intérêt visuel, mais servent à restituer le tableau par des moyens non-visuels (pour les malvoyants par exemple), nous ne les utiliserons donc pas dans ce cours. REMARQUE : il est possible (mais non recommandé) d imbriquer des tableaux dans d autres tableaux. Propriétés CSS : La position du titre ou de la légende : caption-side Le contenu de la balise <caption> peut se trouver au-dessus du tableau, comme un titre, ou endessous, comme une légende. Ce choix dépend de la propriété caption-side, qui peut prendre l une des deux valeurs suivantes : top (en haut, par défaut) ou bottom (en bas). Espacement des cellules (!) : border-collapse et border-spacing Les balises <table> et <tr> peuvent recevoir la propriété border-collapse qui définit l espacement des cellules. Celle-ci peut donc prendre les valeurs : separate (séparées, par défaut) ou collapse (collées). Si les cellules sont séparées, il est possible de spécifier la distance entre celles-ci à l aide de la propriété border-spacing. Celle-ci peut recevoir une ou deux valeurs séparées par un espace. Si deux valeurs sont indiquées, la première correspond à l espacement horizontal et la seconde pour le vertical. Ce choix est très important car il détermine certaines possibilités des propriétés suivantes. Les cellules vides : empty-cells Les cellules qui ne contiennent aucune donnée peuvent être cachées (p.ex pour ne pas afficher de bordure) à l aide de la valeur hide de la propriété empty-cells attribuée à la balise <table>. La valeur par défaut de cette propriété est show. Cette propriété ne fonctionne toutefois que si la propriété border-collapse prend la valeur separate. Les dimensions : width (largeur) et height (hauteur) Si les dimensions du tableau ne sont pas précisées, le navigateur créera automatiquement les dimensions des cellules en fonction du contenu le plus grand de chaque colonne et de chaque ligne. Il est toutefois possible de fixer les dimensions du tableau à l aide des propriétés width et height qui peuvent recevoir des valeurs en unités absolues ou relatives. En tant qu élément similaire au type bloc, la table peut être dimensionnée. Cependant, certains éléments contenus à l intérieur sont similaires au type en ligne. Ainsi si une hauteur est imposée au tableau, seul l élément tbody sera étiré. 2

Chaque cellule peut également recevoir des dimensions particulières, mais le tableau gardera ses lignes et ses colonnes alignées. Donc si plusieurs dimensions contradictoires sont indiquées, seule la plus grande sera conservée. Type d affichage : display Habituellement, les éléments peuvent être rangés en deux catégories : les éléments de type bloc et ceux de type en ligne (inline). La principale différence est qu un élément bloc peut contenir des éléments en ligne alors que l inverse n est pas vrai. Une autre différence est qu un élément de type bloc peut recevoir des dimensions, tandis qu un élément en ligne ne le peut pas. Pour modifier cela, il faut changer l affichage (display) de l élément. Les valeurs possibles sont none (non affiché), block, inline, inline-block (un élément en ligne avec des dimensions personnalisables), list-item (liste à puce), flex (un nouveau type de boîte), inherit (identique à son parent). A cela s ajoute les valeurs qui sont habituellement attribuées aux éléments des tables : table (correspondant à <table>), inline-table (<table> mais en ligne), table-caption (<caption>), table-cell (<td> ou <th>), table-column (<col>), table-column-group (<colgroup>), table-row (<tr>), table-row-group (<tbody>), table-headergroup (<thead>), table-footer-group (<tfoot>). Comme annoncé précédemment, on peut assigner des dimensions à certains types d affichage mais pas à d autres, le faire quand même ne sert donc à rien. Alignement du contenu des celules : text-align et vertical-align Il est rare que chaque contenu de chaque cellule fasse exactement la même dimension. De fait, il peut être intéressant de fixer les alignements horizontaux et verticaux des contenus des cellules. Horizontalement, c est la propriété text-align, que nous avons déjà vu, qui le détermine. Verticalement, cela est déterminé par la propriété vertical-align qui peut prendre une des valeurs suivantes : baseline (idem au parent, par défaut), top (en haut), middle (au milieu), bottom (en bas). Espacement entre bordure et contenu : padding Si le contenu est collé aux bordures, cela n est pas très joli ni très lisible. Pour résoudre ce problème, il suffit d utiliser la propriété padding qui comme la propriété border que nous avons déjà vu, peut se voir attribuer de 1 à 4 valeurs (en unités absolues ou relatives). Bordures : border Nous avons déjà vu la propriété border, elle peut être appliquée à la table (<table>) et aux cellules (<th> et <td>). Cependant, si la propriété border-collapse est réglée sur collapse, on peut alors attribuer des bordures à tous les éléments de la table. Dans ce dernier cas, comme il ne peut y avoir qu une seule bordure entre deux éléments, un conflit entre les bordures choisies peut apparaitre. De fait, une nouvelle valeur vient s ajouter au style de bordure, hidden (caché), qui permet de supprimer toute bordure de cellule, cette valeur est prioritaire sur toutes les autres. La priorité est ensuite donnée à la bordure la plus large, puis en cas d égalité à celle qui a le style le plus important (double > solid > dashed > dotted > ridge > outset > groove > inset). S il y a toujours égalité, l ordre est alors donné en priorité aux cellules puis aux lignes, au groupe de lignes, aux colonnes, au groupe de colonnes, à la table ou finalement en cas d égalité à la colonne de gauche. Couleur de fond : background-color Finalement la couleur de fond est déterminée par la propriété background-color que nous avons également déjà vu. Comme chaque élément d un tableau peur recevoir ce type de couleur, voici 3

l occasion d introduire la couleur transparent, qui indique l absence de fond. Pour rappel, nous avons déjà vu les couleurs transparentes de la fonction rgba(r,v,b,a). En cas de conflit entre les éléments du tableau, un ordre est respecté. Je vous laisse chercher lequel. Les pseudo-classes et autres sélecteurs précis : Il existe plusieurs façons d attribuer des styles aux cellules d un tableau. On peut passer par une identité (id) ou une classe (class) comme nous l avons déjà vu. Cela requiert cependant que le code HTML contienne ces indications. Pour des tables simples, il peut être plus rapide de n utiliser que la CSS. Mais alors, comment sélectionner uniquement certaines cellules ou groupes de cellules? Premièrement, il est possible de sélectionner certaines balises répondant à certains critères. Voici la liste des sélecteurs, cette fois complète : * { } Applique la déclaration à toutes les balises du document. A, B { } Applique la déclaration aux balises A et aux balises B. A B { } A > B { } A ~ B { } A + B { } A[attrib] { } A[attrib="val"] { } A[attrib~="val"] { } A[attrib^="val"] { } A[attrib$="val"] { } A[attrib*="val"] { } A[attrib ="val"] { } A.cla { } Applique la déclaration aux balises B incluses (directement ou indirectement) dans entre des balises A. Applique la déclaration aux balises B incluses directement dans entre des balises A (ou «B est fille de A»). Applique la déclaration aux balises B suivant une balise A se situant au même niveau (A et B sont donc sœurs). Applique la déclaration aux balises B suivant immédiatement une balise A et se situant au même niveau (A et B sont donc sœurs). Applique la déclaration aux balises A contenant l attribut attrib. Applique la déclaration aux balises A contenant l attribut attrib avec la valeur exacte val. Applique la déclaration aux balises A contenant l attribut attrib avec la valeur val incluse dans une liste séparée par des espaces. Applique la déclaration aux balises A contenant l attribut attrib dont la valeur commence par val. Applique la déclaration aux balises A contenant l attribut attrib dont la valeur se termine par val. Applique la déclaration aux balises A contenant l attribut attrib avec la valeur val comme suite de caractères partielle (ou totale). Applique la déclaration aux balises A contenant l attribut attrib commençant par la valeur val au sein d une liste séparée par des tirets. Applique la déclaration aux balises A qui sont de la classe cla. 4

Deuxièmement, les pseudo-classes sont une façon de sélectionner certaines balises sans recourir aux classes. Pour utiliser une pseudo-classe, il suffit d ajouter :nom_pseudoclass à la suite du sélecteur. Il est évidemment possible de les combiner avec les sélecteurs précédents. Les pseudo-classes existantes sont : A:root { } A:first-child { } A:last-child { } A:only-child { } A:nth-child(n) { } Applique la déclaration à la balise A qui est la racine du document. En HTML, cette déclaration est sans intérêt puisque l élément racine est toujours <html>. Applique la déclaration à la balise A qui est la première de son parent. Applique la déclaration à la balise A qui est la dernière de son parent. Applique la déclaration à la balise A s il est le seul enfant de son parent. Applique la déclaration à la balise A qui est le n ème enfant de son parent (toute balise confondue). Alternativement, on peut utiliser les termes odd (impaire) ou even (paire), pour l appliquer à toutes les balises impaires ou paires. Finalement, on peut également utiliser une formule mathématique de type Pn+Q, ou P ( ) représente la périodicité et Q ( ) le décalage. P.ex : 4n+1, correspondrait à tous les multiples de 4 éléments en commençant par le premier, alors que n+3 représente les 3 premiers éléments. A:nth-last-child(n) { } Similairement au précédent mais en comptant par la fin. A:nth-of-type(n) { } Similairement à nth-child mais en ne comptant que les éléments d un même type. A:nth-last-of-type(n) { } Idem mais en comptant par la fin. A:first-of-type { } A:last-of-type { } A:only-of-type { } A:empty { } A:not(X) { } A:link { } A:visited { } A:hover { } A:active { } Idem mais uniquement le premier. Idem mais uniquement le dernier. Applique la déclaration si l élément A est le seul enfant de ce type dans son parent. Applique la déclaration uniquement si l élément est vide : <A></A>. Applique la déclaration aux balises A qui ne répondent pas à la condition X. Il existe de nombreuses conditions possibles. P.ex : *:not(h1) sélectionnera toutes les balises du document à l exception des titres 1. Applique la déclaration aux balises A dont la cible du lien n a pas encore été visitée. Idem au précédent mais la cible du lien a été visitée. Applique la déclaration aux balises A lorsque celles-ci sont survolées par la souris. Idem mais l utilisateur effectue actuellement une action (p.ex clic) sur la balise. 5

A:focus { } A:target { } Idem mais la cible est actuellement sélectionnée par l utilisateur. Applique la déclaration à la balise A lorsque celle-ci vient de servir d ancre (càd que l utilisateur a cliqué sur un lien l amenant à cette balise). A:lang(C) { } Applique la déclaration aux balises A dont l attribut lang possède la valeur C. Finalement, il est encore possible de sélectionner une partie de contenu de balise ou d ajouter du contenu à une balise. Ce sont les pseudo-éléments, qui sont déclarés par ::pseudoelement : A::first-line { } Applique la déclaration à la première ligne contenue dans la balise A. A::first-letter { } Applique la déclaration à la première lettre contenue dans la balise A. Cela permet de faire facilement des lettrines. A::before { } Permet d ajouter du contenu avant les balises A. A::after { } Permet d ajouter du contenu après les balises A. REMARQUES : Vous l aurez probablement constaté, il existe plusieurs façons de toucher les mêmes balises. Alors quelle différence existe-t-il entre ces sélecteurs? Parfois il n y en a pas (et du coup la dernière déclaration prend le pas sur les autres), parfois c est une question de poids accordé à chacun. Je vous laisse chercher la logique qui se cache là-derrière et comme indice, je vous rappelle que le C de CSS signifie «en Cascade». Exercices : 1. Réalisez une grille de Sudoku. 2. Réalisez un nuancier sur 2 composantes (p.ex Rouge et Vert) en utilisant background-color. 3. Réalisez un graphique de type histogramme avec une table. Cela ne se fait normalement pas, mais c est juste un exercice. Principales références : Site du W3C : http://www.w3.org en particulier : http://www.w3.org/tr/css2/tables.html DÉVELOPPER VOTRE SITE WEB, F. Basmaison et coll., MicroApplication 2012 APPRENEZ À CRÉER VOTRE SITE WEB AVEC HTML5 ET CSS3, M. Nebra, Site du Zéro 2011 6