Ce cours introduit aux trois langages de programmation du Web que sont l'HTML, le CSS et le Javascript. L'HTML est un langage de balisage qui permet de décrire un document et sa structure. Le CSS est un langage qui permet de définir des règles de style à appliquer à un document. Enfin, Javascript est un langage permettant d'ajouter un aspect dynamique à une page web.
Voici une présentation sur l’HTML5 que j’ai réalisé pour l’entreprise Sfeir dans laquelle je travaille. Bien que vous n’ayez pas accès à tout le contenu retranscrit à l’oral, elle peut déjà vous apporter une synthèse assez complète de ce que cette technologie apporte.
jQuery est une bibliothèque JavaScript libre qui porte sur l'interaction entre JavaScript (comprenant Ajax) et HTML, et a pour but
de simplifier des commandes communes de JavaScript. La première version date de janvier 2006.
Le framework contient notamment les fonctionnalités suivantes :
- Parcours et modification du DOM
- Selecteurs CSS 1 à 3
- Événements
- Effets et animations
- Manipulations des feuilles de style en cascade
- Ajax
- Plugins
- Fonctions utilitaires
Il n’existe à ce jour plus une seule application Web qui n’utilise pas « CSS », ces fichiers qui permettent de styliser son application. Aujourd’hui, « CSS3 » nous permet d’écrire des applications du plus en plus attrayantes mais n’est pas encore idéal puisque nous constatons des manques comme par exemple la définition de constantes de couleurs, chose appréciable pour les sites en marque blanche. Notons également la difficulté pour factoriser et maintenir ce code.
Une lueur d’espoir est apparue, grâce à « Less ». C’est un framework qui non seulement nous facilite l’écriture de nos fichiers CSS, mais nous aide également à les maintenir et à mieux les structurer, tout en ayant des outils que nous pouvons utiliser dans nos usines logiciels.
jQuery est une bibliothèque JavaScript libre qui porte sur l'interaction entre JavaScript (comprenant Ajax) et HTML, et a pour but de simplifier des commandes communes de JavaScript.
Atelier présenté par SMAHI Zakaria.
UX Day, Semaine du Web.
Ce cours introduit aux trois langages de programmation du Web que sont l'HTML, le CSS et le Javascript. L'HTML est un langage de balisage qui permet de décrire un document et sa structure. Le CSS est un langage qui permet de définir des règles de style à appliquer à un document. Enfin, Javascript est un langage permettant d'ajouter un aspect dynamique à une page web.
Voici une présentation sur l’HTML5 que j’ai réalisé pour l’entreprise Sfeir dans laquelle je travaille. Bien que vous n’ayez pas accès à tout le contenu retranscrit à l’oral, elle peut déjà vous apporter une synthèse assez complète de ce que cette technologie apporte.
jQuery est une bibliothèque JavaScript libre qui porte sur l'interaction entre JavaScript (comprenant Ajax) et HTML, et a pour but
de simplifier des commandes communes de JavaScript. La première version date de janvier 2006.
Le framework contient notamment les fonctionnalités suivantes :
- Parcours et modification du DOM
- Selecteurs CSS 1 à 3
- Événements
- Effets et animations
- Manipulations des feuilles de style en cascade
- Ajax
- Plugins
- Fonctions utilitaires
Il n’existe à ce jour plus une seule application Web qui n’utilise pas « CSS », ces fichiers qui permettent de styliser son application. Aujourd’hui, « CSS3 » nous permet d’écrire des applications du plus en plus attrayantes mais n’est pas encore idéal puisque nous constatons des manques comme par exemple la définition de constantes de couleurs, chose appréciable pour les sites en marque blanche. Notons également la difficulté pour factoriser et maintenir ce code.
Une lueur d’espoir est apparue, grâce à « Less ». C’est un framework qui non seulement nous facilite l’écriture de nos fichiers CSS, mais nous aide également à les maintenir et à mieux les structurer, tout en ayant des outils que nous pouvons utiliser dans nos usines logiciels.
jQuery est une bibliothèque JavaScript libre qui porte sur l'interaction entre JavaScript (comprenant Ajax) et HTML, et a pour but de simplifier des commandes communes de JavaScript.
Atelier présenté par SMAHI Zakaria.
UX Day, Semaine du Web.
Quelques rappels de cours sur les bonnes pratiques liées à la modularisation des applications C/C++. Je présente en plus quelques astuces pour structurer une application C/C++ et son packaging.
Se support présente l'outil d'intégration Maven dans le processus d'industrialisation du génie logiciel. Tout ce qu'il faut savoir sur maven.
La deuxième partie de ce cours traite la mise en oeuvre de maven dans des projets basés sur JPA, Hibernate, Spring et Struts.
Bon apprentissage à tous
Comment réussir son projet en Angular 1.5 ?Maxime Bernard
À travers un retour d'éxpérience, je vous propose de découvrir les outils, les nouveautés d'Angular 1.5 et quelques tips & tricks qui vous aideront dans la réussite de votre projet Angular.
FRAMEWORK PHP – notre dernier « cahier techno » !
PHP est aujourd’hui le langage de développement Web le plus populaire. Au cours de son ascension un certain nombre de Frameworks ont émergés afin d’aider les développeurs et de standardiser certaines bonnes pratiques.
David Négrier, notre CTO, explique l’intérêt des Frameworks dans un projet Web et réalise un test en « temps réel » sur des Frameworks majeurs du marché.
Automatisez vos tâches répétitives avec Grunt (Blend 2013)Corinne Schillinger
Cette présentation vous propose de découvrir les possibilités offertes par Grunt, et de voir comment automatiser certaines tâches telles que la compilation des feuilles de styles, la concaténation et minification des fichiers JavaScript ou encore l'optimisation des images.
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
Retour d'expérience sur les pratiques que j'utilise au quotidien pour l'industrialisation de mes développements WordPress...
https://lyon.wordcamp.org/2015/session/wordpress-git-et-lintegration-continue/
Savoir quelle solution de supervision choisir est toujours délicat et surtout avec la panoplie de produits qui existent, dans cet ouvrage retrouvez toute une comparaison "pratique" des solutions régnantes sur le marché et surtout comment et Pas à Pas implémenter Nagios et ses sur-couches afin de cacher un peu son interface dite fastidieuse et encombrante autrement dit l'interface d'administration sera embelli avec des graphes et des Maps afin de détecter rapidement un problème dans son réseau et cela juste par un coup d’œil. Tous les problèmes d'installation et de paramétrage sont traitées et bien détaillé afin de pouvoir installer son Nagios en toute fluidité et rapidité chose qui est rare dans un tutoriel.
Manuel des TP - Atelier de développement web (PHP)
Niveau : Licence informatique - L2
Auteur : Houda TOUKABRI
Bibliothèque ISET Kélibia [TPI11 : 02-01-2018]
Vous êtes étudiant en dernière année d'étude, orienté(e) Informatique ou Finance ? NeoXam Tunisia vous accorde l'opportunité d'effectuer votre stage de Projet de Fin d'Etudes au sein de ses équipes.
Ci dessous le détail des offres !
BigData_TP2: Design Patterns dans HadoopLilia Sfaxi
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...Horgix
This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.
March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.
Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!
On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
3. Hello!
Je m’appelle Thomas et je suis co-fondateur d’Hidden.market,
une startup dans le domaine de la cotation de salaire !
Retrouvez moi sur Twitter @ThomasBodinFr
3
6. 1. Contenu principal
Représente le contenu principal du <body>
Il ne peut pas y avoir plusieurs élément <main> sur une même
page.
<main>Mon contenu</main>
6
7. 2. Sidebar
Pour définir une sidebar (petite colonne à gauche ou à droite du
contenu principal) contenant des informations supplémentaires
relatives ou non au contenu principal.
<aside>Mon contenu</aside>
7
8. 3. Exposant
L'élément HTML <sup> est utilisé, pour des raisons
typographiques, afin d'afficher du texte en exposant (plus haut et
généralement plus petit) par rapport au bloc de texte
environnant.
m<sup>2</sup>
8
9. 4. Progression Indique la progression d'une tâche au cours du temps, sans que
l'on ne s'attache à une valeur précise mais plutôt à un
pourcentage.
Par exemple débutant à zéro et avançant jusqu'à atteindre les
100% comme les musiques, vidéos, chargement de page,...
<progress value="22" max="100"></progress>
9
10. 5. Jauge
Représente une jauge mesurant une valeur comprise entre un
minimum et un maximum. Ainsi les valeurs négatives peuvent
être utilisées, contrairement à <progress>.
Son usage est principalement destiné à indiquer un état, stable ou
évoluant au cours du temps.
Par exemple : espace restant d’un disque dur, taux de globule
blanc dans le sang, places restantes d’un événement
<meter value="2" min="0" max="10"></meter>
10
11. 6. Temps
Permet de définir une notion de temps comme une date, une
heure ou une durée.
<time datetime="2018-02-14 20:00">14/02/2018</time>
11
12. 7. Suggestions de choix
Elément de formulaire permettant de lier une liste de choix à un
élément input.
Il est voué à fournir des fonctionnalités d'auto-complétion ou
d'auto-suggestion, dans un formulaire classique ou un champ de
recherche.
<input list="browser" id="mybrowser" name="mybrowser">
<datalist id="browser">
<option value="Chrome">
<option value="Firefox">
<option value="Internet Explorer">
<option value="Safari">
</datalist>
12
13. 8. Illustration légendée
C’est une unité de contenu, c'est-à-dire que cet élément sert de
conteneur dans lequel s'insèrent divers éléments comme des
images, des schémas, des vidéos, des tableaux ou encore des
blocs de code.
L'objectif est de lier ce contenu à une légende, définie par
l'élément <figcaption>
<figure>
<img src="image.jpg" alt="">
<figcaption>Légende associée</figcaption>
</figure>
13
14. 8. Types d’input
▫ color : Choix de couleur par color picker
▫ date : Date par calendrier
▫ datetime-local : Date + Heure par calendrier
▫ email : Adresse email d’un format valide
▫ month : Mois par calendrier
▫ number : Nombre
▫ range : Slider contrôle entre une valeur min et max
▫ search : Barre de recherche
▫ tel : Téléphone
▫ time : Durée / Heure
▫ url : Adresse URL d’un format valide
▫ week : Semaine de l’année par calendrier
14
15. 7. Attributs d’input
▫ autocomplete : indiquer si la valeur saisie doit
automatiquement être complétée par le navigateur
▫ autofocus : focus au chargement de la page
▫ form : élément de formulaire auquel l'élément est rattaché.
La valeur de cet attribut doit être l'ID du <form>. Cet attribut
permet de placer un élément <input> n'importe où et pas
uniquement comme descendant d'un formulaire
▫ min and max : valeur minimale/maximale (numérique ou
temporelle) de l'élément
▫ step : Cet attribut fonctionne avec les attributs min et max et
permet de définir l'incrément utilisé pour passer d'une
valeur à l'autre (dans le cas d'une valeur numérique ou
d'une date)
15
18. 1. Kesako Quand nous débutons un projet, la première tâche consiste à
créer l’arborescence des fichiers et dossiers.
Pour cela, il faut aller visiter un par un les outils incontournables
d’un projet : jQuery, Bootstrap, Modernizr,... pour installer les
dernières versions.
C’est une perte de temps
18
19. 2. Avantages
1. Le dépôt n’est pas encombré d’un nombre important de
fichiers que nous ne maintenons pas
2. La mise à jour des dépendances est simplifié et propre (pas
de commit d’uptade)
3. Gain de temps sur l’initialisation des nouveaux projets
19
20. 3. NPM Les extensions de Node.js sont appelées modules et sont très
nombreuses. Il existe des milliers de modules qui offrent des
fonctionnalités variées comme des frameworks, des systèmes de
templates,...
NPM (Node Package Manager), est l'outil qui permet de
télécharger facilement tous les modules de la communauté
Node.js. Avec NPM, il suffit d’une simple commande et le module
est téléchargé et installé.
20
21. 3. NPM
L’avantage de NPM c’est qu’il gère les dépendances. Cela signifie
que, si un module a besoin d'un autre module pour fonctionner,
NPM ira le télécharger automatiquement.
Aujourd’hui, il est de plus en plus utilisé pour des applications
front et est devenu un outil de développement incontournable. Il
permet d’accéder au plus gros dépôt de paquets tous langages
confondus.
21
23. 4. Chercher un module
Pour chercher le nom d’un module permettant de l’installer, il
suffit de se rendre sur le site de NPM :
https://www.npmjs.com/
23
24. 5. Commandes
Initialisation de votre projet, cela va créer un fichier package.json :
$ npm init
Le fichier package.json décrit la configuration de votre projet.
Chaque module NPM est configuré ainsi, ce qui fait que votre
projet est par définition un module au même titre que les autres
et donc potentiellement publiable sur NPM
24
25. 5. Commandes
Installer un module :
$ npm install nom_du_module
Le module sera installé localement spécialement pour votre
projet.
Si vous avez un autre projet, il faudra donc relancer la commande
pour l'installer à nouveau pour cet autre projet. Cela vous permet
d'utiliser des versions différentes d'un même module en fonction
de vos projets.
NPM va télécharger automatiquement la dernière version du
module et il va la placer dans un sous-dossier > node_modules
Exemple :
$ npm install bootstrap
25
26. 5. Commandes
Les options d’installation d’un module :
▫ -g : installation global
▫ @version : si vous souhaitez une version spécifique
▫ --save : enregistrement automatique dans package.json du
module indispensable au fonctionnement de l’application
▫ --save-dev : enregistrement automatique dans package.json
du module à des fins de développement
Raccourcis :
$ npm i bootstrap
26
28. 5. Commandes
Mise à jour de module :
$ npm update
NPM va chercher s'il y a de nouvelles versions des modules, puis
mettre à jour les modules installés sur votre machine (en veillant à
ne pas casser la compatibilité) et il supprimera les anciennes
versions.
Pour mettre à jour et changer les versions dans package.json,
pensez à mettre l’option (--save ou --save-dev).
28
29. 5. Commandes
Changer le répertoire d’installation global de npm :
1. Créer un dossier dédié
$ mkdir ~/npm-global
2. Configurer npm pour utiliser ce dossier
$ npm config set prefix '~/.npm-global'
3. Ajouter cette ligne à votre fichier .profile (créer se fichier si il
n’existe pas)
export PATH=~/.npm-global/bin:$PATH
4. Mettre à jour les variables
$ source ~/.profile
Lorsque vous installez un module en mode global ( -g ) il sera
installé dans le dossier node_modules de votre machine. Je vous
conseil de changer cet emplacement pour des questions de droits
d’accès et éviter ainsi les “sudo”.
29
32. 1. Kesako
Un task runner est un automatiseur de tâches, c’est à dire qu’il va
lancer des scripts automatiquement à notre place.
Il est possible de lancer toute sortes de tâches :
▫ Tests
▫ Serveur local
▫ Optimisation et compression d’images
▫ Création, suppression, modifications de dossiers/fichiers
▫ Minification et concatenation des fichiers CSS/JS
▫ ...
Par exemple, il existe plus de 3 400 plugins Gulp, c’est autant de
tâches automatiques qu’il est possible de faire.
32
35. 3. Installation
Installation de manière global :
$ npm install gulp -g
Dans votre projet, il vous faudra 2 fichiers :
▫ package.json : contient la liste des plugins gulp nécessaires à
vos tâches
▫ gulpfile.js : contient la liste des tâches à réaliser
Puis installer Gulp comme dépendance du projet :
$ npm install gulp --save-dev
Et le require dans le fichier gulpfile.js :
var gulp = require('gulp');
35
36. 4. Création d’une tâche
Tout d’abord il faut définir une tâche à automatiser.
Prenons un exemple de tâche à automatiser :
Je souhaite optimiser toutes les images de mon projet et que cette
optimisation se fasse à chaque fois que je rajoute une image (sans
aucune exécution de ma part).
36
37. 4. Création d’une tâche
Etape 1 :
gulp.task(“nom_tache”, function () {
//Liste des opérations à réaliser
});
Il sera possible d’exécuter cette tâche en ligne de commande :
$ gulp nom_tache
37
38. 4. Création d’une tâche Etape 2 :
Aller chercher un plugin Gulp qui effectuera une opération à
l'exécution de la tâche.
> https://gulpjs.com/plugins/
Je vais donc chercher un plugin permettant d’optimiser les images.
Celui-ci me semble bien : gulp-imagemin
38
39. 4. Création d’une tâche
Etape 3 :
Installation du plugin imagemin :
$ npm install gulp-imagemin --save-dev
Automatiquement cela va le mettre dans mon fichier package.json
comme dépendance du projet.
39
40. 4. Création d’une tâche
Etape 4 :
Utilisation du plugin imagemin :
1) On require le plugin
var imagemin = require('gulp-imagemin');
2) On crée le stream dans notre task
gulp.task(‘image’, function () {
return gulp.src(’src/img/*')
});
Cela correspond au chemin des fichiers sources. Dans notre
exemple, nous allons cibler le dossier contenant toutes les images
que nous importons et qui ne sont pas optimisés.
40
41. 4. Création d’une tâche
Etape 4 :
Utilisation du plugin imagemin :
gulp.task(‘image’, function () {
return gulp.src(’src/img/*')
.pipe(imagemin())
});
Ensuite nous “pipons” nos sources pour les faire passer dans
différentes fonctionnalitées. Là nous faisons passer nos fichiers
dans une fonctionnalité “imagemin”.
41
42. 4. Création d’une tâche
Etape 4 :
Utilisation du plugin imagemin :
gulp.task(‘image’, function () {
return gulp.src(’src/img/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/img/'))
});
Il ne reste plus qu’à définir un dernier “pipe” permettant de dire
où on envoie les fichiers minifiés.
42
43. 4. Mise en place d’un
WATCHER
Notre task fonctionne mais l’inconvénient c’est qu’il faut la lancer à
chaque fois.
On va donc mettre en place un Watcher qui surveillera toutes les
activités dans notre projet et qui a chaque événement dans le
dossier source contenant les images exécutera la task.
43
44. 4. Mise en place d’un
WATCHER
On crée une nouvelle task que l’on nomme “watch” (par exemple)
et qui va exécuter l’opération watch qui est native à Gulp donc pas
besoin de plugin.
Cette opération exécutera la task “img” a chaque modification
dans le répertoire src/img
gulp.task(“watch”, function () {
gulp.watch('src/img/*', ['image']);
});
Il sera possible de lancer le watcher en ligne de commande :
$ gulp watch
44
47. 1. Spécificité des
sélecteurs
47
Entre les deux déclarations ci-dessous, à votre avis, laquelle sera
appliquée sur l’élément de liste <li> ?
.page .menu li {color: red;}
body div.menu ul li {color: blue;}
48. 1. Spécificité des
sélecteurs
48
Si les deux déclarations ciblent le même élément, l’une est
prioritaire par rapport à l’autre.
La première déclaration (.page .menu li) prend le dessus sur la
deuxième (body div.menu ul li) car le calcul de spécificité lui
donne plus d’importance.
49. 1. Spécificité des
sélecteurs
49
La spécificité est donc le calcul qui indique le “poids” d’une
déclaration CSS.
Ce “poids” est utilisé pour comparer les différentes déclarations
entre-elles et savoir laquelle est prioritaire sur l’autre, c’est à dire
laquelle a le plus de ”poids”.
50. 1. Spécificité des
sélecteurs
50
Le calcul de spécificité se base sur 3 valeurs :
A ▸ Nombre d'id
B ▸ Nombre de class, pseudo-classes, d'attributs
C ▸ Nombre d'éléments, pseudo-éléments
Exemple :
#toto 1,0,0
.inner ul li 0,1,2
a:hover 0,1,1
.page .menu li 0,2,1
body div.menu ul li 0,1,4
51. 1. Spécificité des
sélecteurs
51
2 cas particuliers :
- Style inline (dans le HTML) équivaut à 1,0,0,0
<li style="color:green;">Bleu ou rouge ou vert</li>
- !important équivaut à 1,0,0,0,0
li {color: yellow !important;}
53. “
Pour cibler un identifiant sans donner plus de spécificité,
utilisez le sélecteur d'attribut. [id=toto] est identique à
#toto, mais avec la même spécificité qu'une class.
53
54. 1. Spécificité des
sélecteurs
54
Conclusion :
La spécificité permet de comprendre pourquoi, dans certains cas
“inexplicable” notre déclaration ne s’applique pas alors qu’elle ne
contient aucune erreur.
L’élément cible hérite en fait d’une déclaration ayant une
spécificité plus forte.
Parfois, ces problèmes peuvent simplement se régler en
“surchargeant” la déclaration afin de lui donner plus de poids.
55. 2. BEM
55
Le concept est de repérer des « objets CSS », c'est-à-dire des
éléments qui se répètent, et de définir ainsi des class réutilisables.
La méthode consiste à prendre le design comme point de départ :
on repère des répétitions visuelles puis on les nomme.
BEM apporte une convention de nommage des class CSS.
BEM = Block Element
Modifier
56. 2. BEM
56
Règles :
▫ Un nœud pouvant exister sans dépendre d'un ancêtre est un
Block
▫ Un nœud pouvant n'exister qu'en tant que descendant d'un
ancêtre N est un Element du Block N
▫ Un état local pour un Block ou un Element est défini par un
modifier de ce Block ou Element
BEM = Block Element
Modifier
57. 2. BEM
57
Block :
C’est une entité indépendante ! Un Block forme son propre
contexte autonome.
BEM = Block Element
Modifier
58. 2. BEM
58
Element :
Un Element est une partie d'un Block. Le contexte d'un élément
est celui du Block.
BEM = Block Element
Modifier
59. 2. BEM
59
Modifier :
Un Modifier est une propriété qui sert à créer des variantes, pour
faire des modifications minimes comme changer des couleurs. Il
existe des Modifier de Block et des Modifier d’Element.
BEM = Block Element
Modifier
60. 2. BEM
60
Convention de nommage :
Le site officiel BEM précise que seul compte le concept, la syntaxe
reste libre.
Voici un exemple de syntaxe :
▫ block
▫ block--modifier
▫ block__element
▫ block__element--modifier
BEM = Block Element
Modifier
61. 2. BEM
61
Avantages :
▫ Propreté : Pas d’override sur son propre code
▫ Performance : Usage limité de la cascade
▫ Scalabilité : Possibilité de construire des applications
géantes tout en travaillant à une échelle réduite
▫ Composant : Un block peut être placé n'importe où dans la
page ou encore apparaître plusieurs fois
▫ Moins prise de tête : Il y a moins de nom de class à trouver
BEM = Block Element
Modifier
62. 2. BEM
62
Un autre avantage est que l’on peut éviter de regrouper toutes
nos media queries. Ce qui est une mauvaise technique.
Les media queries sont toujours près des déclarations qu’elles
override.
.press {
&__text {
@include font-size(30);
@media (max-width: $screen-sm) {
text-align: center;
}
}
}
BEM = Block Element
Modifier
64. 1. Semantic
versionning
64
Une version s'applique à un produit, une application, une
bibliothèque, un OS,... tout ce qui a une progression en
informatique.
Cela permet de définir l'avancement du produit. La majorité du
temps, cela s'écrit de cette façon : X.Y.Z
X, Y et Z sont des entiers, par exemple : 1.1.24
▫ X = "majeur",
▫ Y = "mineur",
▫ Z = "patch ou correctif"
65. 1. Semantic
versionning
65
Si vous avez corrigé un bug, alors il faut incrémenter Z (+0.0.1).
Si vous avez fait des ajouts qui peuvent être intéressants pour
l'utilisateur, alors il faut incrémenter Y (+0.1.0).
Si vous avez changé quelque chose qui nécessite forcément une
modification de la part de l'utilisateur sous peine que sa propre
app ne fonctionne plus, alors il faut incrémenter X (+1.0.0).