SlideShare une entreprise Scribd logo
1  sur  38
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Préprocesseurs
Veille technologique – Proxym-IT 2016
Préparer et animer par
Mahmoud N’bet
Maha Sghaier
Optimiser vos codes CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Plan
• Introduction
• Les problème inhérent à CSS
• Qu’est ce qu’un un préprocesseurs.
• Les fonctionnalités
• workshop
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Introduction
Vous connaissez forcement tout le CSS, ce langage
de style indispensable qui vous permet de mettre
en place le design de vos sites.
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LeCSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LeCSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LeCSS
Langage non
dynamique
duplication
de code
Pas de notion
de procédures
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LesproblèmeinhérentàCSS
Manque du Souplesse
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LesproblèmeinhérentàCSS
Manque de lisibilité
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LesproblèmeinhérentàCSS
Redondance du code
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LesproblèmeinhérentàCSS
Travaille avec plusieurs fichiers
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LesproblèmeinhérentàCSS
Travaille avec plusieurs fichiers
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
LespréprocesseursCSS
Les préprocesseurs CSS vont donc par pour
changer la notion de travailler de CSS,
mais plutôt afin d’ étendre CSS pour lui
apporter ce qu’il manque.
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Lesfonctionnalités
• Concaténer plusieurs fichiers (performance)
• Permettre l’utilisation de variables (faciliter)
• Permettre l’utilisation de « mixins » (classes
internes )
• Ajouter des fonctions mathématiques
(dynamique)
• Ajouter des méthodes prédéfinies (structurer)
• Permettre le « Nesting » (organiser)
L’import de plusieurs fichiers ne coûte pas de ressources ! Au final, on génère
un fichier unique (qui peut être minifié) pour l’intégralité du site.
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Quelpréprocesseurchoisir?
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
TravailleravecLESS
Il y a globalement trois façons d’utiliser LESS
Coté client
CSS
Coté serveur
En ligne de commande
ou via un logiciel
LESS
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="less.js" type="text/javascript"></script>
$ npm install less
$ lessc styles.less > styles.css
Node.js PHP
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
TravailleravecSASS
Les outils de compiler SASS
CSS
coté serveur En ligne de commandeNode.js
$ gem install sass
$ sass --watch style.scss:style.css
PHP
Via un logiciel
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Logicielsdepréprocessing
• Codekit (for Mac)
• Prepros
• Simpless
• Crunchapp
• …
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Structuredeprojet(exemple)
• css
– main.min.css
– /vendor
• Bootstrap.min.css
• less (ou bien sass)
– main.less
– fonts.less
– module
• forms.less
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Importetconcaténationdefichiers
@import: global.less;
@import: colors.less;
@import: responsive.less;
Code LESS
Concaténation
Import
Une seule requête
Un seul fichiers
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Importetconcaténationdefichiers
@import: ‘reset’;
body {
font-size : 12px;
background-color: #EEE;
}
Code SASS
*{
margin : 0px;
padding: 0px;
}
Code SASS
_reset.scss
main.scss
Import non
compilé
main.scss
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Importetconcaténationdefichiers
@import: ‘reset’;
body {
font-size : 12px;
background-color: #EEE;
}
Code SASS
*{
margin : 0px;
padding: 0px;
}
Code SASS
_reset.scss
main.scss
*{
margin : 0px;
padding: 0px;
}
body {
font-size : 12px;
background-color: #EEE;
}
Code SASS
main.scss
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Lesvariables
• La déclaration d’une variable
se fait de la façon suivante:
– @nom de la variable: valeur;
– $nom de la variable: valeur;
@main-color: #DDD;
.dialog {
border: 1px solid @main-color;
}
.menu {
color: @main-color;
}
.dialog {
border: 1px solid #DDD;
}
.menu {
color: 1px solid #DDD;
}
Code LESS
Rendu CSS
$main-color : #DDD;
.dialog {
border: 1px solid $main-color;
}
.menu {
color: $main-color;
}
Code SASS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Règlesimbriqués(Lenesting)
• le « nesting » permet aux préprocesseurs
d’écrire du code CSS sans répétitions
.nav{
border: 2px solid $linkColor;
li {
font-size: 12px;
a {
width: 300px;
&:hover {
text-decoration: none
}
}
}
}
.nav{ border-color: 2px solid black; }
.nav li {
font-size: 12px;
}
.nav li a {
width: 300px;
}
.nav li a:hover {
text-decoration: none;
}
Code LESS / SASS Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Règlesimbriqués(Lenesting)
.nav{
border: 2px solid $linkColor;
&-sub {
margin-top:20px;
background-color: $bgColor;
}
li {
font-size: 12px;
a {
width: 300px;
&:hover {
text-decoration: none
}
}
}
}
.nav{ border-color: 2px solid black; }
.nav-sub {
margin-top:20px;
background-color:#EFEFEF;
}
.nav li {
font-size: 12px;
}
.nav li a {
width: 300px;
}
.nav li a:hover {
text-decoration: none;
}
Code LESS / SASS Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymitLes«mixins»:L’extensionde
classes• les « mixins » ressemblent à des variables contenant des
propriétés CSS.
• Cela permet d’utiliser le même jeu de propriétés CSS
dans plusieurs classes.
.bordered {
border-top: 2px solid black;
border-bottom: 1px solid #ccc;
}
.widget-title {
color: #333;
.bordered;
}
nav.main-menu li {
color: #3C0;
.bordered;
}
.widget-title {
color: #333;
border-top: 2px solid black;
border-bottom: 1px solid #ccc;
}
nav.main-menu li {
color: #3C0;
border-top: 2px solid black;
border-bottom: 1px solid #ccc;
}
Code LESS Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Lesmixins:paramétrable
• Ils sont paramétrables
.bordered (@top-border: 2px, @border-color: #ccc){
border-top: (@top-border solid black;
border-bottom: 1px solid @border-color;
}
.widget-title {
color: #333;
.bordered(1px, black);
}
nav.main-menu li {
color: #3C0;
.bordered(2px);
}
.widget-title {
color: #333;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
nav.main-menu li {
color: #3C0;
border-top: 2px solid black;
border-bottom: 1px solid #ccc;
}
Code LESS
Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Lesmixins
@mixin bordered ($top-border: 2px, $border-color: #ccc){
border-top: ($top-border solid black;
border-bottom: 1px solid $border-color;
}
.widget-title {
color: #333;
@include bordered(1px, black);
}
nav.main-menu li {
color: #3C0;
@include bordered(2px );
}
.widget-title {
color: #333;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
nav.main-menu li {
color: #3C0;
border-top: 2px solid black;
border-bottom: 1px solid #ccc;
}
Code SASS
Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Extend
• L’ « extend », c’est une manière de surcharger
une classe.
.message{
color: black;
border-bottom: 1px solid #ccc;
}
.success {
&extend : (.message);
border-color: green;
}
.error {
&extend : (.message);
border-color: red;
}
.message, .success , .error{
color: black;
border-bottom: 1px solid #ccc;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
Code LESS Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Extend
.message{
color: black;
border-bottom: 1px solid #ccc;
}
.success {
&extend : (.message);
border-color: green;
}
.error {
&extend : (.message);
border-color: red;
}
.message, .success , .error{
color: black;
border-bottom: 1px solid #ccc;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
Code LESS Rendu CSS
<div class=“message success”> … </div>
<div class=“message error”> … </div>
HTML
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Extend
.message{
color: black;
border-bottom: 1px solid #ccc;
}
.success {
&extend .message;
border-color: green;
}
.error {
&extend .message;
border-color: red;
}
.message, .success , .error{
color: black;
border-bottom: 1px solid #ccc;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
Code SASS Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Lesopérateursetlesméthodes
$base: 5%;
$filler: $base * 2;
$other: $base + $filler;
color: #888 / 4;
background-color: $base-color + #111;
height: 100% / 2 + $filler;
Code LESS
// permet d’éclaircir une couleur
lighten(@color, 10%);
// permet d’assombrir une couleur
darken(@color, 10%);
// appliquer une transparence
fadein(@color, 10%);
fadeout(@color, 10%);
Code LESS
$str: "hello";
$var: ~`"@{str}".toUpperCase() + '!'`;
Code LESSMéthodes spécifiques
Evaluation du code JavaScript
Les opérateurs SASS comme LESS vous permet d’utiliser
les opérateurs et des fonctions
mathématiques.
Abs, floor, round…
Le seul bémol, c’est que tu ne peux pas faire
des calculs qui mêlent les % et les pixels ou
autres unités avec SASS.
/ permet d’assombrir une couleur
darken(@color, 10%);
// appliquer une transparence
rgba(@color, 10%);
Code SASS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Logique
Il est possible de définir des « mixins » en appliquant des
contrôles sur les paramètres.
.mixin (@a, @b: 0) when (isnumber(@b)) { ... }
.mixin (@a, @b: black) when (iscolor(@b)) { ... }
.mixin (@a) when (isnumber(@a)) and (@a > 0) { ... }
Code LESS
Et même sur les périphériques pour un CSS responsive.
.mixin (@a) when (@a > 0), (@a < 10) { ... } @media: mobile;
.mixin (@a) when (@media = mobile) { ... }
.mixin (@a) when (@media = desktop) { ... }
Code LESS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Logique
@main-color: #45DC2D;
.set-bg-color (@text-color) when (lightness(@text-color) >= 50%) {
background-color: #000;
}
.set-bg-color (@text-color) when (lightness(@text-color) < 50%) {
background-color: #fff;
}
.mybox{
color: @main-color;
.set-bg-color(@main-color);
}
Code LESS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Logique
$main-color: #45DC2D;
@mixin set-bg-color ($text-color) {
@if lightness($text-color) >= 50% {
background-color: #000;
} @ else {
background-color: #fff;
}
}
.mybox{
color: $main-color;
@include set-bg-color($main-color);
}
Code SASS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Boucle
.columns (@n, @i:1) when (@i =< @n) {
.column-@{i} {
width: (@i * 100% / @n);
.columns (@n, (@i+1));
}
}
.columns (4);
Code LESS
@mixin .columns ($n, $i:1) {
@for $i from 1 through $n {
.column-#{$i} {
width: ($i * 100% / $n);
}
}
.columns (4);
Code SASS
.column-1{ width: 25%; }
.column-2{ width: 50%; }
.column-3{ width: 75%; }
.column-4{ width: 100%; }
Rendu CSS
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
sudo gem install compass
compass create
compass watch
Permet de l’arborescence du projet
avec 2 dossiers « sass » et
« stylesheets » ainsi qu’un fichier
« config.rb »
Documentation : http://compass-style.org/reference/compass
sass –watch scss:css
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Conclusion
• Les préprocesseurs est à mon avis l’outil que
CSS manquait pour renforcer ses
développements.
• Mais la question qui se pose, pourquoi CSS n’a
pas pensé à intégrer toutes ces
fonctionnalités?
© Proxym-IT
Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia
Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90
http://www.proxym-it.com
http://twitter.com/proxymit
Merci pour votre
attention

Contenu connexe

Similaire à Préprocesseurs css

MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...DENAGNON FRANCK ✔
 
Sench formation-sencha-touch
Sench formation-sencha-touchSench formation-sencha-touch
Sench formation-sencha-touchCERTyou Formation
 
Zen05 formation-zend-framework-2-les-bases
Zen05 formation-zend-framework-2-les-basesZen05 formation-zend-framework-2-les-bases
Zen05 formation-zend-framework-2-les-basesCERTyou Formation
 
Nuxad formation-nuxeo-platform-administration
Nuxad formation-nuxeo-platform-administrationNuxad formation-nuxeo-platform-administration
Nuxad formation-nuxeo-platform-administrationCERTyou Formation
 
Monitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.ioMonitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.iolaurenthuet
 
PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...
PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...
PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...AAEC_AFRICAN
 
Présentation vbox fw104
Présentation vbox fw104Présentation vbox fw104
Présentation vbox fw104Yacine Hamoudi
 
Présentation vbox fw104
Présentation vbox fw104Présentation vbox fw104
Présentation vbox fw104Yacine Hamoudi
 
Titaa formation-titanium-appcelerator
Titaa formation-titanium-appceleratorTitaa formation-titanium-appcelerator
Titaa formation-titanium-appceleratorCERTyou Formation
 
Ux076 formation-administration-tomcat
Ux076 formation-administration-tomcatUx076 formation-administration-tomcat
Ux076 formation-administration-tomcatCERTyou Formation
 
Guide d'installation facile d'une antenne sur nss 7
Guide d'installation facile d'une antenne sur nss 7Guide d'installation facile d'une antenne sur nss 7
Guide d'installation facile d'une antenne sur nss 7Abdelhamid KHIRENNAS
 
Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...
Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...
Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...AAEC_AFRICAN
 
Px presentation corporate
Px presentation corporatePx presentation corporate
Px presentation corporateaminabm
 
2007-11-08~1801@L_INFORMATICIENHORS_SERIE
2007-11-08~1801@L_INFORMATICIENHORS_SERIE2007-11-08~1801@L_INFORMATICIENHORS_SERIE
2007-11-08~1801@L_INFORMATICIENHORS_SERIEArnaud Flotté-Dubarry
 
Fiche applicative WeOS manuel_simplifié - rev c
Fiche applicative WeOS manuel_simplifié - rev cFiche applicative WeOS manuel_simplifié - rev c
Fiche applicative WeOS manuel_simplifié - rev cFabian Vandendyck
 

Similaire à Préprocesseurs css (20)

TypeScript
TypeScriptTypeScript
TypeScript
 
Angular
AngularAngular
Angular
 
ConsulManager
ConsulManagerConsulManager
ConsulManager
 
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
MISE EN PLACE D’ UN VPN (SITE-TO-SITE) AU SEIN D’ UNE ENTREPRISE : CAS DE LA ...
 
Sench formation-sencha-touch
Sench formation-sencha-touchSench formation-sencha-touch
Sench formation-sencha-touch
 
Zen05 formation-zend-framework-2-les-bases
Zen05 formation-zend-framework-2-les-basesZen05 formation-zend-framework-2-les-bases
Zen05 formation-zend-framework-2-les-bases
 
Nuxad formation-nuxeo-platform-administration
Nuxad formation-nuxeo-platform-administrationNuxad formation-nuxeo-platform-administration
Nuxad formation-nuxeo-platform-administration
 
CV-amiralaya
CV-amiralayaCV-amiralaya
CV-amiralaya
 
Monitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.ioMonitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.io
 
PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...
PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...
PROJET PILOTE DE MISE EN OEUVRE DES ÉCHANGES TRANSFRONTALIERS DU CERTIFICAT D...
 
Présentation vbox fw104
Présentation vbox fw104Présentation vbox fw104
Présentation vbox fw104
 
Présentation vbox fw104
Présentation vbox fw104Présentation vbox fw104
Présentation vbox fw104
 
Titaa formation-titanium-appcelerator
Titaa formation-titanium-appceleratorTitaa formation-titanium-appcelerator
Titaa formation-titanium-appcelerator
 
Ux076 formation-administration-tomcat
Ux076 formation-administration-tomcatUx076 formation-administration-tomcat
Ux076 formation-administration-tomcat
 
Guide d'installation facile d'une antenne sur nss 7
Guide d'installation facile d'une antenne sur nss 7Guide d'installation facile d'une antenne sur nss 7
Guide d'installation facile d'une antenne sur nss 7
 
Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...
Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...
Projet pilote de mise en oeuvre des échanges transfrontaliers du certificat d...
 
web application security
web application securityweb application security
web application security
 
Px presentation corporate
Px presentation corporatePx presentation corporate
Px presentation corporate
 
2007-11-08~1801@L_INFORMATICIENHORS_SERIE
2007-11-08~1801@L_INFORMATICIENHORS_SERIE2007-11-08~1801@L_INFORMATICIENHORS_SERIE
2007-11-08~1801@L_INFORMATICIENHORS_SERIE
 
Fiche applicative WeOS manuel_simplifié - rev c
Fiche applicative WeOS manuel_simplifié - rev cFiche applicative WeOS manuel_simplifié - rev c
Fiche applicative WeOS manuel_simplifié - rev c
 

Dernier

Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...Faga1939
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 

Dernier (13)

Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 

Préprocesseurs css

  • 1. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Préprocesseurs Veille technologique – Proxym-IT 2016 Préparer et animer par Mahmoud N’bet Maha Sghaier Optimiser vos codes CSS
  • 2. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Plan • Introduction • Les problème inhérent à CSS • Qu’est ce qu’un un préprocesseurs. • Les fonctionnalités • workshop
  • 3. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Introduction Vous connaissez forcement tout le CSS, ce langage de style indispensable qui vous permet de mettre en place le design de vos sites.
  • 4. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LeCSS
  • 5. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LeCSS
  • 6. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LeCSS Langage non dynamique duplication de code Pas de notion de procédures
  • 7. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LesproblèmeinhérentàCSS Manque du Souplesse
  • 8. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LesproblèmeinhérentàCSS Manque de lisibilité
  • 9. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LesproblèmeinhérentàCSS Redondance du code
  • 10. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LesproblèmeinhérentàCSS Travaille avec plusieurs fichiers
  • 11. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LesproblèmeinhérentàCSS Travaille avec plusieurs fichiers
  • 12. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit LespréprocesseursCSS Les préprocesseurs CSS vont donc par pour changer la notion de travailler de CSS, mais plutôt afin d’ étendre CSS pour lui apporter ce qu’il manque.
  • 13. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Lesfonctionnalités • Concaténer plusieurs fichiers (performance) • Permettre l’utilisation de variables (faciliter) • Permettre l’utilisation de « mixins » (classes internes ) • Ajouter des fonctions mathématiques (dynamique) • Ajouter des méthodes prédéfinies (structurer) • Permettre le « Nesting » (organiser) L’import de plusieurs fichiers ne coûte pas de ressources ! Au final, on génère un fichier unique (qui peut être minifié) pour l’intégralité du site.
  • 14. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Quelpréprocesseurchoisir?
  • 15. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit TravailleravecLESS Il y a globalement trois façons d’utiliser LESS Coté client CSS Coté serveur En ligne de commande ou via un logiciel LESS <link rel="stylesheet/less" type="text/css" href="styles.less" /> <script src="less.js" type="text/javascript"></script> $ npm install less $ lessc styles.less > styles.css Node.js PHP
  • 16. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit TravailleravecSASS Les outils de compiler SASS CSS coté serveur En ligne de commandeNode.js $ gem install sass $ sass --watch style.scss:style.css PHP Via un logiciel
  • 17. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Logicielsdepréprocessing • Codekit (for Mac) • Prepros • Simpless • Crunchapp • …
  • 18. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Structuredeprojet(exemple) • css – main.min.css – /vendor • Bootstrap.min.css • less (ou bien sass) – main.less – fonts.less – module • forms.less
  • 19. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Importetconcaténationdefichiers @import: global.less; @import: colors.less; @import: responsive.less; Code LESS Concaténation Import Une seule requête Un seul fichiers
  • 20. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Importetconcaténationdefichiers @import: ‘reset’; body { font-size : 12px; background-color: #EEE; } Code SASS *{ margin : 0px; padding: 0px; } Code SASS _reset.scss main.scss Import non compilé main.scss
  • 21. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Importetconcaténationdefichiers @import: ‘reset’; body { font-size : 12px; background-color: #EEE; } Code SASS *{ margin : 0px; padding: 0px; } Code SASS _reset.scss main.scss *{ margin : 0px; padding: 0px; } body { font-size : 12px; background-color: #EEE; } Code SASS main.scss
  • 22. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Lesvariables • La déclaration d’une variable se fait de la façon suivante: – @nom de la variable: valeur; – $nom de la variable: valeur; @main-color: #DDD; .dialog { border: 1px solid @main-color; } .menu { color: @main-color; } .dialog { border: 1px solid #DDD; } .menu { color: 1px solid #DDD; } Code LESS Rendu CSS $main-color : #DDD; .dialog { border: 1px solid $main-color; } .menu { color: $main-color; } Code SASS
  • 23. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Règlesimbriqués(Lenesting) • le « nesting » permet aux préprocesseurs d’écrire du code CSS sans répétitions .nav{ border: 2px solid $linkColor; li { font-size: 12px; a { width: 300px; &:hover { text-decoration: none } } } } .nav{ border-color: 2px solid black; } .nav li { font-size: 12px; } .nav li a { width: 300px; } .nav li a:hover { text-decoration: none; } Code LESS / SASS Rendu CSS
  • 24. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Règlesimbriqués(Lenesting) .nav{ border: 2px solid $linkColor; &-sub { margin-top:20px; background-color: $bgColor; } li { font-size: 12px; a { width: 300px; &:hover { text-decoration: none } } } } .nav{ border-color: 2px solid black; } .nav-sub { margin-top:20px; background-color:#EFEFEF; } .nav li { font-size: 12px; } .nav li a { width: 300px; } .nav li a:hover { text-decoration: none; } Code LESS / SASS Rendu CSS
  • 25. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymitLes«mixins»:L’extensionde classes• les « mixins » ressemblent à des variables contenant des propriétés CSS. • Cela permet d’utiliser le même jeu de propriétés CSS dans plusieurs classes. .bordered { border-top: 2px solid black; border-bottom: 1px solid #ccc; } .widget-title { color: #333; .bordered; } nav.main-menu li { color: #3C0; .bordered; } .widget-title { color: #333; border-top: 2px solid black; border-bottom: 1px solid #ccc; } nav.main-menu li { color: #3C0; border-top: 2px solid black; border-bottom: 1px solid #ccc; } Code LESS Rendu CSS
  • 26. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Lesmixins:paramétrable • Ils sont paramétrables .bordered (@top-border: 2px, @border-color: #ccc){ border-top: (@top-border solid black; border-bottom: 1px solid @border-color; } .widget-title { color: #333; .bordered(1px, black); } nav.main-menu li { color: #3C0; .bordered(2px); } .widget-title { color: #333; border-top: 1px solid black; border-bottom: 1px solid black; } nav.main-menu li { color: #3C0; border-top: 2px solid black; border-bottom: 1px solid #ccc; } Code LESS Rendu CSS
  • 27. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Lesmixins @mixin bordered ($top-border: 2px, $border-color: #ccc){ border-top: ($top-border solid black; border-bottom: 1px solid $border-color; } .widget-title { color: #333; @include bordered(1px, black); } nav.main-menu li { color: #3C0; @include bordered(2px ); } .widget-title { color: #333; border-top: 1px solid black; border-bottom: 1px solid black; } nav.main-menu li { color: #3C0; border-top: 2px solid black; border-bottom: 1px solid #ccc; } Code SASS Rendu CSS
  • 28. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Extend • L’ « extend », c’est une manière de surcharger une classe. .message{ color: black; border-bottom: 1px solid #ccc; } .success { &extend : (.message); border-color: green; } .error { &extend : (.message); border-color: red; } .message, .success , .error{ color: black; border-bottom: 1px solid #ccc; } .success { border-color: green; } .error { border-color: red; } Code LESS Rendu CSS
  • 29. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Extend .message{ color: black; border-bottom: 1px solid #ccc; } .success { &extend : (.message); border-color: green; } .error { &extend : (.message); border-color: red; } .message, .success , .error{ color: black; border-bottom: 1px solid #ccc; } .success { border-color: green; } .error { border-color: red; } Code LESS Rendu CSS <div class=“message success”> … </div> <div class=“message error”> … </div> HTML
  • 30. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Extend .message{ color: black; border-bottom: 1px solid #ccc; } .success { &extend .message; border-color: green; } .error { &extend .message; border-color: red; } .message, .success , .error{ color: black; border-bottom: 1px solid #ccc; } .success { border-color: green; } .error { border-color: red; } Code SASS Rendu CSS
  • 31. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Lesopérateursetlesméthodes $base: 5%; $filler: $base * 2; $other: $base + $filler; color: #888 / 4; background-color: $base-color + #111; height: 100% / 2 + $filler; Code LESS // permet d’éclaircir une couleur lighten(@color, 10%); // permet d’assombrir une couleur darken(@color, 10%); // appliquer une transparence fadein(@color, 10%); fadeout(@color, 10%); Code LESS $str: "hello"; $var: ~`"@{str}".toUpperCase() + '!'`; Code LESSMéthodes spécifiques Evaluation du code JavaScript Les opérateurs SASS comme LESS vous permet d’utiliser les opérateurs et des fonctions mathématiques. Abs, floor, round… Le seul bémol, c’est que tu ne peux pas faire des calculs qui mêlent les % et les pixels ou autres unités avec SASS. / permet d’assombrir une couleur darken(@color, 10%); // appliquer une transparence rgba(@color, 10%); Code SASS
  • 32. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Logique Il est possible de définir des « mixins » en appliquant des contrôles sur les paramètres. .mixin (@a, @b: 0) when (isnumber(@b)) { ... } .mixin (@a, @b: black) when (iscolor(@b)) { ... } .mixin (@a) when (isnumber(@a)) and (@a > 0) { ... } Code LESS Et même sur les périphériques pour un CSS responsive. .mixin (@a) when (@a > 0), (@a < 10) { ... } @media: mobile; .mixin (@a) when (@media = mobile) { ... } .mixin (@a) when (@media = desktop) { ... } Code LESS
  • 33. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Logique @main-color: #45DC2D; .set-bg-color (@text-color) when (lightness(@text-color) >= 50%) { background-color: #000; } .set-bg-color (@text-color) when (lightness(@text-color) < 50%) { background-color: #fff; } .mybox{ color: @main-color; .set-bg-color(@main-color); } Code LESS
  • 34. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Logique $main-color: #45DC2D; @mixin set-bg-color ($text-color) { @if lightness($text-color) >= 50% { background-color: #000; } @ else { background-color: #fff; } } .mybox{ color: $main-color; @include set-bg-color($main-color); } Code SASS
  • 35. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Boucle .columns (@n, @i:1) when (@i =< @n) { .column-@{i} { width: (@i * 100% / @n); .columns (@n, (@i+1)); } } .columns (4); Code LESS @mixin .columns ($n, $i:1) { @for $i from 1 through $n { .column-#{$i} { width: ($i * 100% / $n); } } .columns (4); Code SASS .column-1{ width: 25%; } .column-2{ width: 50%; } .column-3{ width: 75%; } .column-4{ width: 100%; } Rendu CSS
  • 36. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit sudo gem install compass compass create compass watch Permet de l’arborescence du projet avec 2 dossiers « sass » et « stylesheets » ainsi qu’un fichier « config.rb » Documentation : http://compass-style.org/reference/compass sass –watch scss:css
  • 37. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Conclusion • Les préprocesseurs est à mon avis l’outil que CSS manquait pour renforcer ses développements. • Mais la question qui se pose, pourquoi CSS n’a pas pensé à intégrer toutes ces fonctionnalités?
  • 38. © Proxym-IT Technopole de Sousse / BP 184 – 4051 Sousse, Tunisia Phone : +216 73 82 12 22 / +33 4 34 08 02 48 Fax : +216 73 82 03 90 http://www.proxym-it.com http://twitter.com/proxymit Merci pour votre attention

Notes de l'éditeur

  1. Bonjour à tous et bienvenue dans cette présentation autour des préprocesseurs CSS. Tout d’abord, cette présenter est réalisé dans cadre du veille technologique au sein de Proxym
  2. Je vais dans cette présentation de vous proposer de découvrir ensembles ·         Qu’est ce qu’un préprocesseur CSS ·         Les principales fonctionnalités ·         à quoi elles servent ·         en quoi peuvent être utile dans votre code Et finaliser par un petit workshop afin d’appliquer avec des exemples réels ce qu’on va apprendre durant la présentation.
  3. Donc, avant de démarrer avec les préprocesseurs, je veux présenter rapidement le langage CSS. [ SLIDE ] À la base CSS a été créé pour séparer la structure d’une page web de son habillage graphique, c’est grâce au CSS qu’aujourd’hui qu’on peut parler des thèmes.
  4. Jour après jour, le CSS vient de s’évoluer et de prendre une place plus importante dans le développement des sites Web.
  5. Il nous offre plein plein de fonctionnalités qui nous aide à bien définir (et bien mettre en place) la mise en forme de nos pages web Même l’importance de son évolution, il reste comme toujours un système purement déclaratif textuel pour indiquer les présentations, qui se repose toujours sur « sélecteurs - propriétés et valeurs ».
  6. La chose qui nous amène à rencontrer des problèmes, non lier aux fonctionnalités du CSS mais plutôt au fondement du CSS ou au langage lui-même. Il n’est pas prévu pour limiter la duplication de code. Ainsi un thème qui se base sur quatre couleurs principales devra répéter le code couleur à de multiples endroits. Évidemment, le jour où on voudra modifier une couleur par exemple, il faudra parcourir 1000 lignes de code. En CSS: On ne peut pas réutiliser une partie d’un style pour l’appliquer à un autre. On ne peut pas paramétrer des styles semblables. On ne peut pas déclarer de constantes et les réutiliser. On ne peut pas faire d’opérations simples sur des tailles, des couleurs, ect Ce n’est qu’un exemple de Less.
  7. Manque de souplesse, on peut se retrouver face à des fichiers CSS qui contient plusieurs millier de lignes. Ici j’ai mis un exemple d’un fichier qui contient plus que 6000 lignes. Ça arrive souvent de rencontrer des grands fichiers, dans lesquels on peut avoir du mal à naviguer, surtout si vous n’êtes pas l’auteur du fichier, ou si le fichier n’est pas bien organisé.  
  8. Manque de lisibilité : certaine règles ou propriétés peuvent être totalement perdu une des définitions sans fin Par exemple ici il n’est pas évident de voir que ces propriétés sont appliqué sur le lien a son état hover qui se trouve directement sous une balise dont la classe .active qui se trouve elle même
  9. Redevance du code: la répétions d’ailleurs c’est un autre problème lié CSS (plustôt au logique de construction du CSS), du coup ici vous voulez modifier par exemple la couleur d’un lien au survole du souri, vous êtes obligé de répéter le sélecteur. De même avec les nouvelles propriétés CSS qui ne sont pas supporter par tous les navigateurs, on est obligé de  les redéfinir avec les différents prefix.
  10. Travaille avec plusieurs fichiers : on va avoir un fichier dédié au IE, un autre dedié au responsive… on peut utiliser la fonction @import du CSS, mais le  soucie ici (c’est un grand souci) que va se poser, que est à chaque fois on va faire un appel HTTP qui va encombrer le réseau d’une manière inutile. Notre site va répondre plus rapidement si nous avons un seul fichier.
  11. Les préprocesseurs CSS nous propose un langage de présentation qui étend CSS pour lui apporter ce qu’il manque en ajoutant des nouvelles fonctionnalités et nomenclatures à votre feuille de style en apportant une plus grande lisibilité des informations.
  12. Les PP vous permet plein de choses : Concaténer plusieurs fichiers : avoir une seule fichier qui serve tout le site, et qui augmente du coup la performance de vos apps l’utilisation de variables : avancer plus vite qu’on avoir des variables. Et faciliter la maintenance. Utiliser les mixines qui vous permet d’organiser votre code et de regrouper les règles réutilisables. Fct, opérateur mathématiques, méthodes prédéfinies utilisation des nestings qui va vraiment vous permettre d’organiser votre code
  13. Quel PP je dois choisir Tous les PP se rassemble un petit peu avec quelques différances ( dans syntaxe ) On va se concentrer aujourd’hui sur les deux PP les plus connue et les plus utilisés
  14. Après avoir chargé la feuille de styles (fichier .less) avec la méthode classique, il faut également charger le script less.js, qui va « traduire » la syntaxe LESS, en syntaxe CSS standard, compréhensible par le navigateur. Cette technique consiste à traduire le fichier LESS en CSS au niveau du serveur, puis à envoyer le fichier CSS résultant vers le navigateur. Cette méthode se base sur Node.js, qui permet de faire tourner Javascript sur un serveur, comme on peut le faire avec d’autres langages, comme PHP. Cette méthode utilise explicitement un outil, qui peut être en ligne de commande, ou un logiciel sous Windows ou Mac. Contrairement aux autres méthodes, celle-ci est statique. La feuille de styles CSS n’est générée qu’une seule fois, au lancement de la commande.
  15. Après avoir chargé la feuille de styles (fichier .less) avec la méthode classique, il faut également charger le script less.js, qui va « traduire » la syntaxe LESS, en syntaxe CSS standard, compréhensible par le navigateur. Cette technique consiste à traduire le fichier LESS en CSS au niveau du serveur, puis à envoyer le fichier CSS résultant vers le navigateur. Cette méthode se base sur Node.js, qui permet de faire tourner Javascript sur un serveur, comme on peut le faire avec d’autres langages, comme PHP. Cette méthode utilise explicitement un outil, qui peut être en ligne de commande, ou un logiciel sous Windows ou Mac. Contrairement aux autres méthodes, celle-ci est statique. La feuille de styles CSS n’est générée qu’une seule fois, au lancement de la commande.
  16. Je vous conseil d’adopter une structure du projet, voila un exemple
  17. Entrons maintenant dans le vif du sujet, en regardant ce que nous pouvons faire avec les PP. Les PP, quel qu’ils font, la 1er chose qui permet de le faire c’est la concaténation des fichiers. La commande Import va permet d’appeler d’autre fichiers qui vont être compiler avec notre fichier princpale. L’avantage, que au final, la concaténation des fichiers va nous permettre de générer un seul fichier qui sera éventuellement minifier, mais que se nous permettre de se faire une seule requête auprès de serveur N’est obligatoirement au début du fichier de style. (responsive.less à la fin du fichier)
  18. Import non compilé Si on préfixe le nom du fichier à importé par un _ on donne l’ordre au SASS de ne pas compiler ce fichier
  19. Import non compilé Si on préfixe le nom du fichier à importé par un _ on donne l’ordre au SASS de ne pas compiler ce fichier
  20. Ensuite, on peut les réutiliser dans les propriétés CSS de nos déclarations En appelant chaque variable n’importe ou dans ce fichiers, je peux aussi le rappeler dans n’importe quelle autre fichier dans mon projet.
  21. Au lieu d’écrire #nav li a, tu peux faire #nav { li { a {…} } }. Et tu peux écrire du code entre chaque niveau de l’arbo ! La chose que vous permettre d’organiser votre code, et d’avoir un code vraiment de qualité. Le nesting c’est tout simplement la capacité du PP a réécrire du code d’une façon très simple et très lisible. On va retourver on plus un pseudo-sélecteur qui présente le sélecteur parent.
  22. Il est possible aussi d’utiliser les pseudo sélecteur de la façon suivante. en suffixant par une chaine à concaténer par le nom de la classe parente.
  23. Que vous donner une grande flexibilité dans réutilisation du code
  24. On SASS on va voir une autre type de définition des mixins en utlisant @mixin pour la définition et @include pour les appels
  25. Ça permet d’appliquer tous les propriétés une classe sur des autres classe
  26. Ça permet d’appliquer tous les propriétés une classe sur des autres classe
  27. En SASS sa rassemble à la même chose mais avec un syntaxe tout petit différent.
  28. SASS gère les opérations arithmétiques et mathématiques de base. Nous pouvons donc avoir des règles du type: …
  29. Les mixins : avec les définitions conditionnelles Tout cela devient très intéressant, mais il y a mieux, avec les définitions conditionnelles des mixins: Ces règles nous montrent tous le potentiel d’un tel langage, avec notamment la capacité de générer des feuilles de styles différentes à partir d’un même fichier LESS.
  30. Tout cela devient très intéressant, mais il y a mieux, avec les définitions conditionnelles des mixins: Ces règles nous montrent tous le potentiel d’un tel langage, avec notamment la capacité de générer des feuilles de styles différentes à partir d’un même fichier LESS.
  31. Tout cela devient très intéressant, mais il y a mieux, avec les définitions conditionnelles des mixins: Ces règles nous montrent tous le potentiel d’un tel langage, avec notamment la capacité de générer des feuilles de styles différentes à partir d’un même fichier LESS.
  32. Tout cela devient très intéressant, mais il y a mieux, avec les définitions conditionnelles des mixins: Ces règles nous montrent tous le potentiel d’un tel langage, avec notamment la capacité de générer des feuilles de styles différentes à partir d’un même fichier LESS.
  33. vous n’avez donc plus besoin d’utiliser sass –watch scss:css.
  34. Ça peut être dans la version CSS4…