Les dernières ressources publiées sur Alsacreations.com
Vous connaissez sans-doute déjà le plugin Zen Coding (sinon courez vite admirer cette vidéo assez ancienne mais plutôt bluffante).
Zen Coding est une extension pour éditeurs HTML et autres logiciels de développement (IDE) permettant d'automatiser et d'accélérer la rédaction de code à l'aide de syntaxes courtes (snippets) et de raccourcis-clavier.
Je me suis récemment amusé à compiler un ensemble de raccourcis (snippets) personnalisés que j’applique à mes projets et que je commence à intégrer en interne chez Alsacreations.fr
J’ai pensé que ces aménagements pourraient éventuellement servir à d’autres. Du coup, je vous partage volontiers le fichier, faites-en bon usage.
Rappel : sur Zen Coding, les Snippets fonctionnent avec les mots-clés (ci-dessous) + la combinaison de touches Ctrl + e
Beaucoup de mots-clés sont définis de base, voici uniquement ceux que j’ai modifiés personnellement (ajoutés) :
if IE
if IE lte IE 6
if IE lte IE 7
if not IE
content
)Pour illustrer l'efficacité de ces snippets, voici comment je procède pour créer un gabarit HTML à partir d'une page vide sous Notepad++
Pour commencer, j'écris simplement "doctype" + Ctrl + e pour générer le code suivant :
Puis, si je désire ajouter une liste, les touches seront "list" + Ctrl + e pour générer ceci :
- Salade
- Tomate
- Oignons
- Choucroute
- Picon bière
Enfin, si je souhaite du faux texte de remplissage encadré par des paragraphes, la manipulation sera "loremp" + Ctrl + e :
Lorem Elsass ipsum réchime amet non Choucroute knack tchao bissame hopla. Wotch a kofee avec ton BibalaekaesSalat et ta wurscht ?
Yeuh non che suis au réchime, je ne mange plus que des Grumbeere light et che fais de la chym avec Chulien. Tiens, un Picon sur le comptoir.
Allez tchao bissame !
Pratique, n'est-ce pas ?
N’hésitez pas à me faire vos retours si vous utilisez ces modifications, et me proposer les vôtres si vous avez vous aussi bidouillé votre fichier.
Les cancres du Web, Internet Explorer 6, 7 et parfois 8, nous mènent souvent la vie dure. Même quand on s’abaisse à leur niveau, il leur arrive de ne pas comprendre, ou d’y mettre de la mauvaise volonté.
La solution classique (comprendre: à l’ancienne) est d’utiliser des hacks CSS. Ces derniers sont déconseillés car peu fiables; en effet, on ne sait jamais à l’avance quels seront les navigateurs sur le marché dans deux ou cinq ans, et comment ils comprendront ou pas nos hacks CSS. Une deuxième solution, conseillée par Microsoft et Alsacréations (que du beau monde :)), est d’utiliser les commentaires conditionnels.
Nous allons voir dans cette article que l’utilisation habituelle des commentaires conditionnels a quelques inconvénients, et proposer une technique qui combine plusieurs avantages : les classes conditionnelles.
Les commentaires conditionnels se présentent comme des instructions dotées d’une condition (if) et qui peuvent se placer à n’importe quel endroit du document (X)HTML.
Il s’agit d’un mécanisme propre à Internet Explorer Windows, né avec la version IE5, et qui permet d’inclure dans une page HTML, de manière valide, une portion de code qui ne sera lue et interprétée que par IE, ou par l’une ou l’autre de ses versions.
Pour information, Internet Explorer 10 ne reconnaît plus les commentaires conditionnels, il ne peut donc plus être ciblé de cette manière.
Dans notre quête de compatibilité maximale sur le navigateur de Microsoft, nous allons principalement nous servir de ce mécanisme pour faire un lien vers une feuille de styles corrective dédiée. Cette seconde feuille CSS, chargée à la suite du fichier de styles principal, aura pour but d’écraser et de rectifier au cas par cas les règles générales mal reconnues par IE, comme le montre l'illustration ci-dessous :
Cependant, dans la pratique, une feuille de style corrective pour Internet Explorer ne suffira pas. Vous serez souvent amenés à produire une feuille CSS spécifique à IE6 et 7, ainsi qu'une autre pour IE8. Ou pire : une feuille différente pour chacune des trois versions !
Au final, vous jonglerez avec au minimum trois feuilles de styles CSS :
Non seulement, nous avons à gérer plusieurs fichiers différents, mais nous ne pourrions toujours pas cibler les trois versions IE6 et IE7 et IE8 à la fois sans ajouter une nouvelle condition et feuille CSS supplémentaire.
En 2008, le développeur américain Paul Irish s’est penché sur le mécanisme des commentaires conditionnels et en a listé ces quelques désagréments :
L’argument des baisses de performances est non négligeable sur les versions IE6 et IE7, car il s’agit justement de navigateurs vieillots nécessitant des optimisations constantes et nombreuses en vue de ne pas handicaper leurs temps de calcul et d’affichage.
La solution proposée par Paul Irish a été initialement de créer un nom de classe spécifique à l’élément , via un commentaire conditionnel et sans nécessiter d’appel vers une feuille de styles. Je préfère néanmoins l’appliquer directement à l’élément
, plus logique et plus souple à manipuler.
Voici une version optimisée de classe conditionnelle :
Vous pouvez voir cette classe conditionnelle en action sur le site www.goetter.fr/livres/css-avancees/
Le principe et les explications sont simples :
;
;
.Il devient alors aisé d’appliquer une règle spécifique à IE6 et IE7 :
#kiwi { /* Pour tout le monde */
display: inline-block;
}
.ie7 #kiwi { /* Pour IE6 et IE7 */
display: inline;
zoom: 1;
}
Et pour appliquer des styles à la fois sur IE6, IE7 et IE8 :
#kiwi { /* Pour tout le monde */
font-size: 1.2rem;
}
.oldie #kiwi { /* Pour IE6, IE7 et IE8 */
font-size: 20px;
}
Bien que la syntaxe demeure un tantinet rebutante et qu'un ajout de codes HTML soit nécessaire, cette méthode commence à faire son chemin parmi les développeurs web aguerris (elle figure même dans le gabarit par défaut proposé par HTML5boilerplate) car ses avantages sont séduisants :
Et vous, que pensez-vous de cette technique ? L'utilisez-vous déjà en production ?
Vous avez toujours voulu utiliser des variables, des fonctions, ou encore faire de l'héritage avec le langage CSS ? C'est devenu possible grâce au langage LESS, aux frameworks Sass et xCSS. Mon article concernera uniquement le langage LESS et le compilateur LessPHP.
Pour convertir une syntaxe LESS (format .less) à un format CSS valide, il faudra utiliser un compilateur comme LessCSS ou LessPHP. LessCSS permet une compilation de votre fichier .less avec Javascript, tandis qu'avec LessPHP la compilation se fera côté serveur avec PHP. L'avantage de ce dernier est au niveau de la compatibilité (vous aurez par exemple aucun problème si un intenaute désactive Javascript).
Vous devez obligatoirement travailler dans un environnement PHP.
1. Téléchargez le fichier lessc.inc.php sur le site officiel de LessPHP
2. Insérez ce code PHP dans votre fichier HTML :
require 'lessc.inc.php';
try {
lessc::ccompile('input.less', 'out.css');
} catch (exception $ex) {
exit('lessc fatal error:
'.$ex->getMessage());
}
3. Indiquez le chemin du fichier lessc.inc.php, celui du fichier sur lequel vous allez travailler (input.less) et celui du fichier CSS qui sera généré par PHP (out.css).
4. Faites un lien vers le fichier CSS avec la balise link :
Vous pouvez maintenant commencer à travailler sur le fichier input.less, PHP fera le reste.
Stocker des variables est très pratique pour réutiliser une même valeur plusieurs fois et éviter les répétitions.
@val : 15px;
margin-left: @val;
Vous pouvez faire des opérations (additions, soustractions, divisions et multiplications).
.block_content {
margin: 50px + 20;
margin: 20px – 15;
margin: 20px / 2;
margin: 5px * 10;
}
@val1 : 20px;
@val2 : 20px;
.block_content_2 {
margin: @val1 + @val2;
}
Vous pouvez aussi cibler la classe ou l'id qui contient la variable que vous voulez utiliser :
.maClasse {
@val : 15px;
}
.maClasse_2 {
margin: .maClasse[@val];
}
Les mixins sont comme des variables mais ils peuvent contenir plusieurs propriétés/valeurs.
.styles_box {
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
}
.block_content {
.styles_box;
...
}
.block_content_2 {
.styles_box;
...
}
Vous pouvez cibler la classe ou l'id qui contient le mixin que vous voulez utiliser :
#monID {
.maClasse {
margin: none;
}
}
.maClasse_2 {
#monID > .maClasse;
}
Vous pouvez aussi ajouter un ou plusieurs arguments pour en faire des fonctions :
.styles_box (@radius) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
.block_content {
.styles_box(10px);
...
}
.block_content_2 {
.styles_box(5px);
...
}
Un autre exemple :
.styles_box (@marginLeft, @marginRight) {
margin-left: @marginLeft;
margin-right: @marginRight;
}
.block_content {
.styles_box(10px; 10px);
...
}
.block_content_2 {
.styles_box(; 5px); // On n'entre que @marginRight
...
}
Cette technique permet d'avoir un code moins répétitif et plus joli.
Exemple d'un code CSS sans LessPHP :
#content1 #block_1 a, #content1 #block_2 a, #content1 #block_3 a, #content1 #block_4 a {
color: #000;
text-decoration: none;
}
#content1 #block_1 span, #content1 #block_2 span, #content1 #block_3 span, #content1 #block_4 span {
color: #fff
text-decoration: none;
}
Grâce à l'héritage, on pourra écrire ce code de la manière suivante :
#content1 {
#block_1, #block_2, #block_3, #block_4 {
a {
color: #000;
text-decoration: none;
}
span {
color: #fff;
}
}
}
Voici comment procéder pour utiliser une pseudo-classe CSS :
a {
color: #000;
text-decoration: none;
:hover {
color: #fff;
}
}
.monBlock {
...
:active {
border: 1px solid #000;
}
}
Contrairement à la compilation sous LessCSS, il ne faut pas ajouter le signe &.
Vous pouvez utiliser la directive @import
sur des fichiers .less
@import "fichier.less";
@import url("fichier.less");
Très pratique, surtout que tous ces fichiers seront compilés pour former un seul fichier CSS, donc vous n'aurez pas le problème de peformance lié à cette règle CSS.
L'instruction //
permet de faire un commentaire sur une seule ligne.
.maClasse { // Commentaire
...
}
Pour finir, souvenez-vous que Corinne Schillinger avait proposé un atelier très intéressant durant la Kiwiparty, nommé "LESS : moins de CSS, plus de fun". Son intervention est disponible en diaporamas sur Slideshare mais également en vidéo sur Dailymotion.
Pour faire une histoire courte, j'ai toujours voulu utiliser SCSS et SASS pour mes projets web. J'ai acheté et installé Compass.app, super sympathique comme application. Mais j'ai souvent à travailler sur des projets distants. Je voulais donc pouvoir utiliser SCSS sans avoir à télécharger le CSS généré à chaque modification.
J'ai trouvé un moyen de travailler sur un serveur distant, sur un SCSS, enregistrer mes modifications et que je puisse ensuite, tout de suite, rafraîchir ma page et que cette dernière marche avec le CSS généré.
Voici:
Enfin, vous créez un fichier .php avec ceci à l'intérieur:
'compressed'));
$css = $sass->toCss('style.scss');
echo $css;
?>?
Changez le style.scss par le nom de votre fichier .scss.
Dans votre projet vous mettez dans le header:
?
Vous pourrez ainsi travailler, sauvegarder et ainsi avoir toujours vos dernières modifications dans le projet.
-prefix-free est un petit fichier JavaScript (2 Ko) développé par Lea Verou, développeur Web passionnée par les standards Open Source, CSS3 et JavaScript. Le rôle de ce script est d'ajouter automatiquement des préfixes propriétaires nécessaires à la reconnaissance de certaines propriétés de la spécification CSS3 par les différents navigateurs modernes.
Les propriétés CSS3 avancées sont intégrées dans les différents navigateurs de manière non concertée et selon le bon vouloir des développeurs de ces butineurs ! Pour ne pas entraver la prise en compte de ces propriétés non validées par le W3C on a autorisé une syntaxe personnalisée afin de permettre leur intégration progressive. Le choix a été fait d'utiliser un préfixe propriétaire pour identifier les propriétés CSS3 prises en compte par chaque type de navigateur (selon leur moteur de rendu). Les préfixes principaux :
Les développeurs Web souhaitant d'ores et déjà utiliser ces propriétés CSS sont donc contraints à écrire plusieurs lignes pour que la prise en compte de leur feuille de style se fasse le plus largement possible. Un exemple pour illustrer cela. Ci-dessous la fonction de zoom d'élément (ici doublement de la taille de l'élément ayant pour id zoom
) si on ne tient compte que de la spécification officielle :
#zoom {
transform: scale(2);
}
Pour être certain que cette transformation s'opère dans un maximum de navigateurs, il va falloir ajouter plusieurs lignes supplémentaires :
#zoom {
-moz-transform: scale(2);
-webkit-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
}
-prefix-free est un petit fichier JavaScript qui ajoute à la volée le bon préfixe propriétaire selon le navigateur affichant la page. Plus besoin, donc, d'ajouter dans la feuille de style les différentes propriétés propriétaires ! -prefix-free adapte la propriété CSS3 au navigateur. Un exemple, voici la propriété définissant un fond en dégradé :
#degrade {
background: linear-gradient(#96C7CC, #FFF);
}
Cette ligne de la feuille de style sera remplacée de la manière suivante pour les utilisateurs de Firefox :
#degrade {
background: -moz-linear-gradient(#96C7CC, #FFF);
}
Et ainsi pour les utilisateurs d'Opera :
#degrade {
background: -o-linear-gradient(#96C7CC, #FFF);
}
Les avantages de cette technique :
La procédure d'installation de -prefix-free est relativement simple. Placer le fichier à un endroit de votre hébergement, puis insérer la ligne suivante dans la partie de vos pages HTML.
Pour minimiser l'effet FOUC - c'est un phénomène décrit par bluerobot.com qui se traduit par l'affichage de la page brute avant celui de la page stylée - il est recommandé de placer la ligne d'appel du fichier JS juste après la déclaration de la CSS.
Comme tout script "patchant", l'utilisation de ce genre d'outil est soumise à certaines conditions…
link
ou contenus dans une balise style
, mais également ceux des attributs style
à l'intérieur des balises.link
et style
et les modifications des attributs style
(nécessite un plugin).@import
style
) pour Internet Explorer et Firefox < 3.6.Pour terminer ce petit tutoriel, une page de démonstration de -prefix-free