Mozilla Jetpack : des plugins Firefox en HTML/CSS/Javascript

mozilla-jetpack

Encore des plugins Firefox ? Oui, mais là, c’est différent :

In short, Jetpack is an API for allowing you to write Firefox add-ons using the web technologies you already know.

En gros, pour faire des plugins Jetpack, il suffit de s’y connaître en HTML/CSS mais surtout en Javascript. Tiens, « plugins »… « Javascript »… Ca rappelle exactement le plugin (XPI lui) Greasemonkey. Et dans un sens, ça rappelle aussi les bookmarklets.
Lire la suite

Introduction au HTML 5

Si vous le souhaitez, allez lire le tutoriel complet sur le HTML 5 et le CSS 3 que j’ai écrit.

Le HTML 5 est la prochaine version importante du HTML. Bien qu’étant en compétition avec le XHTML 2, le HTML 5 fait davantage parler de lui parce qu’étant plus facilement implémentable et plus pragmatique dans l’utilisation des nouvelles balises qu’il introduit.

Quoi de neuf chez les balises ?

J’avais déjà parlé du HTML 5 l’an dernier, en parlant notamment des balises visant à structurer le contenu. Mais l’intérêt du HTML 5 se trouve surtout dans ces balises qui vont grandement faciliter la création d’applications web.

  • <canvas>
    Une balise dans laquelle on peut dessiner avec du JS. A priori on peut faire beaucoup plus avec.
    Exemples : dessiner, labyrinthe ou encore mieux : Bespin par Mozilla, un éditeur de code utilisant canvas et JS
  • <video>
    La vidéo est aujourd’hui implémentée sur le web grâce à différents plugins (Silverlight, Quicktime, WMP et surtout Flash). Pourquoi ne pas utiliser une simple balise <video> ?
    Exemples : YouTube et Dailymotion font déjà des tests avec cette balise <video>, et Mozilla en parle.
  • Geolocation
    La géolocalisation grâce à l’API de l’HTML 5.
    Exemple : Where Am I géolocalise en utilisant Google Maps (il faut Firefox Beta).
  • App Cache
    Ca permet de sauvegarder des informations en local, pour travailler offline notamment.
    Exemple : des Post-It accessibles offline (il faut Safari Beta).
  • Workers
    Un outil qui permet de mieux gérer la surcharge de JavaScript. En gros, plus de problème de ralentissement à cause d’un JS trop gourmand.
    Exemple : 2 scripts qui calculent le plus grand nombre premier. Le premier fait crasher le navigateur (j’ai testé…), alors que l’autre y arrive très bien.

Tous les exemples proviennent de la Google Keynote.
Lire la suite

Créer des CSS dynamiques avec LESS : un compilateur de CSS en Ruby

less-compilateur-de-css

Ca peut paraître bizarre comme outil, un « compilateur de CSS », mais LESS est avant tout un outil pour écrire plus efficacement une CSS. Ca rend les CSS dynamiques. C’est un outil écrit en Ruby. J’en parle aussi d’ailleurs sur 29minparjour.

LESS = extension de CSS

LESS se veut être une extension de CSS parce que la syntaxe utilisée pour les fichiers .less (les fichiers source) est très proche de la syntaxe CSS. L’efficacité de cet outil consiste en 4 éléments :

  1. Variables en CSS
  2. Mixins : des includes CSS
  3. Nested Rules : une autre façon de définir des sélecteurs d’arborescence
  4. Operations : addition, soustraction, multiplication, division

Variables CSS

En utilisant des variables, on peut regrouper une valeur à un seul endroit pour pouvoir la mettre à jour facilement par la suite.

@maCouleurPrincipale: #0072bc;
a{ color:@maCouleurPrincipale;}
h1{ color:@maCouleurPrincipale;}

Mixins : des includes CSS

Dans une classe, je peux définir plusieurs propriétés puis inclure cette classe dans d’autres éléments. Ca peut s’avérer très pratique pour les propriétés CSS 3 qui ont une syntaxe différente par navigateur.

.coinsArrondis{ border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;}
#global{ .arrondis;}

Nested Rules

Cet outil est le moins intéressant des 4. Il permet de gagner un peu en lignes de code mais je ne le trouve pas très lisible.

#header{
background:#fff;
position:relative;
	.logo{
	position:absolute;
	right:0px;
	}
}

Au lieu d’écrire #header puis #header .logo, je mets directement .logo dans #header.

Opérations

Ca permet d’utilisation des opérations arithmétiques traditionnelles : addition, soustraction, multiplication, division. Ca peut-être pratique si on veut que les marges verticales soient le double des marges horizontales.

@marges:5px;
#global{ margin:@marges*2 @marges;}

Exemple complet

J’ai fait un exemple complet utilisant plusieurs fonctionnalités de LESS. Voici mon fichier source bbxdesign.less :

@color01:#0072bc;
@radius:10px;
.radius{ border-radius:@radius; -moz-border-radius:@radius; -webkit-border-radius:@radius;}
@margin:5px;
body{ color:#333; font-family:Georgia,serif;}
a{ color:@color01; text-decoration:none;}
#global{ background:#fff; .radius; margin:@margin @margin*2;}

Et voici le fichier généré bbxdesign.css :

.radius { -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; }
a { text-decoration: none; color: #0072bc; }
body { font-family: Georgia,serif; color: #333; }
#global { -webkit-border-radius: 10px; margin: 5px 10px; background: #fff; -moz-border-radius: 10px; border-radius: 10px; }

Installation

Tout se fait en lignes de commande. Il faut avoir Ruby installé sur son ordinateur et installer la gem suivante :

gem install less

Ensuite, en navigant dans le dossier où se trouve le fichier .less, on fait :

lessc monfichier.less

Et le fichier .css est automatiquement généré avec le même nom.

Nom de fichier différent

On peut aussi choisir un autre nom pour le fichier généré :

lessc monfichier.less monautrefichier.css

Automatisation

Parce qu’un fichier CSS est souvent modifier, on peut automatiser la création du fichier .css à chaque modification du fichier .less :

lessc monfichier.less --watch

D’ailleurs, si une erreur existe dans le code, le fichier .css ne serait pas généré. Bien pratique.

Conclusion

Il existe plusieurs méthodes pour avoir des CSS dynamiques. J’en ai déjà vues en PHP ou JSP. Mais ces outils génèrent souvent les CSS à la volée, et il faut donc avoir un serveur derrière qui tourne. Ici, le fichier est « compilé » une bonne fois pour toutes.

Autre avantage : la syntaxe de LESS est très proche de la syntaxe CSS. Il est très facile de prendre une CSS existante et la transformer en fichier LESS. Ca m’a pris 2min d’ailleurs.

Après, est-ce que je vais l’utiliser au quotidien ? Ecoutez, je vais essayer.

Futurebox = Lightbox sans JavaScript

futurebox

J’aimais pas trop les lightbox au début, un peu trop « fancy » à mon goût. Certains la critiquaient même exagérément. Bref, que l’on aime ou pas, ça utilise techniquement toujours du JavaScript.

Mais un ninja a réussi à le réaliser sans JavaScript, juste en CSS. Ca utilise la pseudo-classe :target. Et il appelle ça Futurebox.

Ok, ça marche pas sous IE (6,7,8) mais qu’est-ce qu’on s’en fout. Tiens d’ailleurs, gros f*ck à Microsoft pour son discours de merde (IE8 = le meilleur navigateur du monde entier de l’univers) et ses décisions de merde (Outlook 2010 utilisera le moteur de Word pour afficher le HTML).

Une CSS universelle pour IE6

Que faire face à IE6 ?

  • s’embêter avec des hacks CSS ?
  • faire 2 versions du site ?
  • laisser les bugs partout ?
  • utiliser une CSS alternative ?
  • utiliser du JavaScript pour améliorer la compatibilité ?

IE6, c’est vieux, c’est lourd, c’est moche, c’est chiant. Ca prend du temps, pour pas grand chose, et pour de moins en moins de monde (20% grande moyenne à l’échelle mondiale).

Et puis le web, c’est pour le contenu avant tout. Au lieu d’avoir un site buggé de partout sur IE6, pourquoi ne pas offrir une CSS propre et claire ? C’est l’idée derrière Universal Internet Explorer 6 CSS.

css-universelle-ie6

Tableaux de support des standards sous IE6, IE7, Firefox et Opera

Pour savoir ce que l’on peut utiliser sans craindre une incompatibilité entre navigateurs, on peut se fier à ces tableaux des propriétés HTML, CSS, DOM et ECMAScript. Il manque juste Webkit dans le lot.
tableau-support-proprietes-css
Il y a par ailleurs un tableau résumant tout.

Les mauvais conseils de Google en CSS

google-code

L’objectif de Google, avant tout, c’est la performance. Ils publient d’ailleurs des conseils pour optimiser l’affichage du navigateur.
A la trappe les standards, la beauté, la clarté du code. Extraits choisis.

Prefer class and ID selectors over tag selectors

Mettre uniquement des .class et des #id et pas de a{ color:#0072c;} ou de input{ font-family:Arial,sans-serif;}. Mouais. Faut mettre une classe sur tous ses liens alors ? Génial.

Remove class selectors qualified by tag selectors (when a class is only used for one tag, which is a good design practice anyway)

En gros, pas de a.maClasse et de p.maClasse. Créer plutôt 2 classes : .maClassePourUnLien et .maClassePourUnParagraphe, même si les deux classes partagent les mêmes propriétés, à une près (sinon quel intérêt de les différencier). Mouais, bof. Si je veux que .maClasse soit d’un style particulier mais que les liens ayant .maClasse aient une propriété différente, je vais pas m’amuser à créer une autre classe juste pour ça.

Use class selectors instead of descendant selectors

Je reprends le mauvais exemple de Google :

/* Ne pas mettre */
ul li {color: blue;}
ol li {color: red;}
/* Mais mettre */
.unordered-list-item {color: blue;}
.ordered-list-item {color: red;}

Bien sûr. Je vais mettre une classe sur tous mes <li>…

Avoid the :hover pseudo-selector for non-anchor elements

Pas de :hover en CSS mais des onmouseover en JS. Et si le gars a pas de JS ?

Bref, pour optimiser votre code, mettez des classes sur tous vos éléments! Merci Google!

Le XHTML 2 c’est fini. Le HTML 5 s’en trouve renforcé.

w3c_main

Vous êtes sans doute au courant que le groupe travaillant sur le XHTML 2 va s’arrêter à la fin de l’année, pour notamment rejoindre le groupe du HTML 5. C’est moins laisser tomber quelque chose que se concentrer sur un seul standard.

Différence XHTML / HTML

La différence principale entre le XHTML et le HTML est la rigueur du code. Un document XHTML nécessite de n’inclure aucune erreur de syntaxe pour être bien rendu, alors qu’un document HTML peut se permettre de contenir certaines erreurs. Ca vient du moteur de rendu du navigateur qui gère les deux documents différemment. Ca ne veut pas dire qu’il faut être négligeant dans l’écriture du code pour autant. Mais c’est plus propre d’avoir à se tenir à une syntaxe rigoureuse.

Le HTML a l’avantage d’être davantage rétro-compatible. Les navigateurs plus anciens arrivent à mieux lire un document HTML récent qu’un document XHTML récent. Ca vient sans doute du côté « léger » de sa rigueur.

Concrètement, ça change quoi cette fin du XHTML 2 ?

A vrai dire, pas grand chose car c’est dans la logique des choses. Depuis quelques mois, le HTML 5 n’arrête pas de faire parler de lui. Les navigateurs commencent à bien l’implémenter (Safari 4, Opera et le tout récent Firefox 3.5). Et il a un gros potentiel. Pour en savoir plus, vous pouvez lire ma petite introduction au HTML 5.

Etant un adepte du XHTML 1.0 (pour des raisons de rigueur de code et pour éviter le Quirks Mode), je n’aurais pas à choisir entre le HTML 5 et le XHTML 2. Il n’y en aura plus qu’un. Et puis le HTML 5 aura aussi sa « version XML« . Donc je pourrais toujours imposer au document d’être totalement propre.

Je pense que cette fin du XHTML 2 est une bonne chose (même si ce n’est pas la fin du XHTML). Pas de casse-tête avec plusieurs standards à suivre, et un renforcement du HTML 5, ce qui va amener les navigateurs à être encore plus plongé dans le HTML 5 et va faciliter cette tâche.

Une BD expérimentale en CSS

Je dis BD mais c’est avant tout une expérimentation très poussée de la pseudo-classe :hover, sans image, une sorte de labyrinthe typographique.

Amusez-vous.

bd-css

CMS.txt : un CMS ultra-léger qui pèse 6kb

Vous êtes designer et vous voulez monter un site, mais vous êtes une quiche en programmation, alors vous vous tournez vers un CMS (Content Management System pour les novices) pour gérer votre contenu. Vous hésitez entre Drupal, WordPress, Joomla (mauvais), Expression Engine, Movable Type, Spip

Mais vous trouvez ça trop lourd. Vous voulez pas d’usine à gaz. Vous voulez un truc super basique. Il y a Pluxml qui est sympa, un CMS tout léger motorisé à l’XML. Mais CMS.txt c’est radical : 6kb pour un CMS.

cms.txt

Pour gérer le site, ça donne ça :

/* -------- Website -------- */

name: My Website Title
theme: awesome-blue
missing: 404.html
foo: bar

Si quelqu’un le teste, j’apprécierais un feedback dessus!

Modernizr : un JavaScript pour utiliser du HTML 5 et du CSS 3 dès maintenant

modernizr

Si vous en avez marre d’attendre que le grand public mette à jour ses navigateurs pour pouvoir utiliser du HTML 5 et du CSS 3, vous pouvez utiliser Modernizr :

Modernizr is a small and simple JavaScript library that helps you take advantage of emerging web technologies (CSS3, HTML 5) while still maintaining a fine level of control over older browsers that may not yet support these new technologies.

Je testerai sans doute à la prochaine refonte du site, c’est à dire prochainement (?).

Mais arrêtez avec IE6!

Je le dis et je le répète : il faut arrêter de s’acharner à faire fonctionner parfaitement son site sous IE6. Chaque semaine, il y a un nouvel article qui prône cette idée, et c’est très bien.

stop-ie6

Est-ce qu’un site doit apparaître exactement pareil sous chaque navigateur ?

Pour ceux qui ne le sauraient pas encore : la réponse est non.

Notez l’adverbe « exactement ». Parce que d’un côté, il faut que l’utilisateur puisse reconnaître un site, quel que soit le navigateur utilisé. Mais des différences (plus ou moins) légères dans le graphisme sont non seulement tolérées mais parfaitement admises. Ne pas avoir de coins arrondis (par CSS ou PNG), de dégradés complexes (par PNG), des ombres portées… sous IE6 n’est pas un problème.

C’est surtout qu’un utilisateur d’IE6 ne verra aucune dégradation dans sa version vu qu’il ne verra pas la « bonne version »!

Et puis d’abord, tout le monde n’a pas toutes les polices utilisées sur un site (Arial inexistant sous Linux ?), donc il y a déjà obligatoirement des différences, et des grosses différences : la typographie c’est au moins la moitié du design.
Lire la suite

Drag and drop en HTML 5

Même si le HTML 5 est encore un joli bordel, des développeurs s’en donnent à coeur joie pour trouver des fonctionnalités très intéressantes, comme ce Drag & Drop en HTML 5 et JS.

5 balises HTML peu utilisées

Davantage pour leur sémantique que pour leur pouvoir en SEO, il est intéressant et pratique d’utiliser les balises HTML suivantes. Elles permettent de donner du sens au contenu d’un site, ou plutôt à son code.
Lire la suite

Un JavaScript pour générer du HTML

James Padolsey a réalisé un plugin jQuery pour aisément générer du code HTML : Satisfy that selector. Pratique lorsqu’on veut réaliser un template HTML rapidement. C’est surtout très pratique pour le modifier très rapidement.

Imaginons que je vais créer une liste avec 10 éléments et des liens dedans, je fais :

jQuery('ul li:5 a[innerHTML="link"]').satisfy();

Puis je me dis que je veux 20 éléments et avec un span dans les liens. Au lieu de faire du copier-coller ou du search & replace, j’ai juste à faire :

jQuery('ul li:20 a span[innerHTML="link"]').satisfy();

Un plugin qu’il est pratique! Je vous conseille de vous abonner à son blog car il est très bon.

Le comments-popup.php de WordPress

A force de faire des thèmes WordPress, je commence UN PEU à comprendre comment ça marche. Et là, y a une énigme que j’ai enfin résolue (enfin, j’ai lu la solution chez quelqu’un d’autre).

Dans le thème Kubrick (le thème par défaut de WP, qui se fait un peu vieux d’ailleurs), y a ce fichier : comments-popup.php. Mais que fait-il ? A priori, c’est une popup… des commentaires. Ok. Mais ça apparaît quand ? Comment ? Où est-ce qu’on l’active ?

Comment l’activer ?

J’ai lu la solution chez Playworkplay : le comments popup s’active par un script à mettre dans le <head>. Il est présent dans le thème « classic » d’ailleurs.

<?php //comments_popup_script(); // off by default ?>

Par défaut, il est désactivé. Faut juste virer les deux slash (//) du début.

Il fait quoi au juste ?

Maintenant, en cliquant sur un lien du style « 1 commentaire », au lieu d’aller à l’ancre des commentaires dans la page du post, ça ouvre une popup avec les commentaires.

Je clique sur le lien…

lien-popup-commentaire

… et ça affiche la popup

popup-commentaire

C’est bien ou pas ?

Je dirais NON. D’abord, c’est pas beau. Puis c’est pas du tout pratique pour l’utilisateur. Puis ça sort les commentaires du contexte de l’article. Puis c’est une popup au départ donc déjà…

Pas étonnant que le thème Kubrick ne l’utilise pas et qu’aucun blog WordPress ne l’utilise (si vous en trouvez un, dites-le moi, j’irai pas voir).

Bref, ce post est juste là pour clarifier les choses.

Le HTML 5 en 1998

« It’s not the language you use ; it’s what you do with it. »

Le HTML 5 se popularise. Ok. Mais même avec un code propre et valide dans un langage novateur, tout le monde est libre d’y appliquer le design qu’il veut.
html5-1998

bbxwall : mon 7ème thème WordPress


Avant d’arriver à mon 5e thème, bbxwall, et quelques semaines après avoir jeté aux oubliettes le thème bbxjulie (du nom d’un morceau de Brian Eno), je suis passé par pas mal de thèmes depuis 2 ans et demi.
Lire la suite

Empêcher la redimension des textarea dans Google Chrome

Si vous êtes vous aussi ennuyé de temps à autre par la possibilité dans Google Chrome de redimensionner les textarea à la guise de l’utilisateur (ce qui, en soit, est très bénéfique pour l’utilisateur parce qu’il a la main sur un élément de l’interface, mais qui, du point de vue du designer, peut amener à des aberrations graphiques), alors voici une astuce en CSS.

Avant

Textarea avec flèche

Après

Textarea sans la flèche

Code CSS

textarea{ resize:none;}

Refonte et thème tumblr pour Waker

Waker, c’est un site de bêtises trop fréquentes et trop futiles pour être postées ici.

Au départ, c’était un WordPress avec un thème pas trop travaillé, mais j’aimais bien la palette de couleurs. Et puis je me suis rendu compte que poster avec WordPress était trop contraignant, car trop long. Même avec le bookmarklet Press This, poster un simple lien ou une photo prenait trop de temps.

Résultat : je prends un tumblr tout simplement. Le bookmarklet est très efficace : il récupère facilement les photos ou la vidéo de la page où l’on est, et l’upload est direct. Au début, j’ai pris mon thème bbxtumblr, mais il manquait d’identité pour Waker.

Donc, j’en ai fait un autre.

Thème Tumblr Waker

Navigation au clavier

La grande particularité est d’avoir intégré grâce à une lib JavaScript, la navigation au clavier comme pour Google Reader ou FFFFOUND, c’est à dire la touche « J » pour suivant et « K » pour précédent, sachant qu’elle gère aussi la pagination dès que vous arrivez en haut ou en bas de la page.

Et si vous voulez savoir pourquoi ça s’appelle « Waker », et bien voilà pourquoi.

Ambilight en HTML 5

Vous connaissez la technologie Ambilight de Philips ? Bon. Imaginez ça dans votre navigateur.

Ambilight en HTML 5

Si vous avez aimé le Sublime Video, vous aimerez l’Ambilight en HTML5 (qui reprend d’ailleurs la même vidéo).
Par contre, j’ai pas trop compris les explications en russe

(via Beautiful Pixels)

CSS3 Please : un générateur de CSS3

Si vous voulez déjà utiliser des propriétés CSS3, vous devez savoir qu’elles sont implémentées sur plusieurs navigateurs mais avec des dénominations différentes.
Par exemple border-radius (pour obtenir des coins arrondis)  :

  • -moz-border-radius sous Firefox
  • -webkit-border-radius sous Chrome et Safari
  • border-radius sous Opera et le prochain IE9

Etant donné qu’il est assez laborieux de trouver chacune des dénominations pour une seule et même propriété, CSS3 Please vous sera d’une grande aide. Il vous permet d’éditer les valeurs pour chaque propriété CSS3 puis de les copier et les utiliser sur (quasiment) tous les navigateurs, que ce soit :

  • les ombres
  • les dégradés
  • les fonds semi transparents en RGBA
  • la rotation
  • les arrondis
  • @font-face (pour inclure la police qu’on veut)

Quelques-unes de ces propriétés marchent même sous IE6 et IE7!

Dessiner en HTML 5, c’est gagner

Harmony est un outil simple et sympa, qui permet de dessiner dans son browser. Rien de bien méchant apparemment. C’est juste qu’il est en HTML 5 couplé avec des algorithmes en JS. L’auteur s’est beaucoup inspiré de Scribbler, l’équivalent en Flash.

Perso, je suis nul en dessin, mais Pulupulu sait y faire.

Il existe même une fan page Facebook avec pleins d’autres jolis dessins.

Tutoriel : formulaire 100% CSS3 sans image et sans JavaScript

Je vous invite à aller lire le tutoriel complet sur le CSS que j’ai écrit.

Après avoir expliqué comment réaliser un bon formulaire HTML, pourquoi ne pas en réaliser un uniquement en CSS3 ?

Screenshot formulaire CSS3
Lire la suite

CSS Naked Day!

Aujourd’hui c’est le CSS Naked Day! Virez votre CSS et montrez nous votre code HTML pour voir si il est beau! Bon, j’ai raté les éditions précédentes. Mais avec mon nouveau thème, je voulais tenter le coup!

CSS Naked Day ? Kesako ?

The idea behind this event is to promote Web Standards. Plain and simple. This includes proper use of (x)html, semantic markup, a good hierarchy structure, and of course, a good ‘ol play on words. It’s time to show off your .

On April 9th, simply remove all CSS from your website, stripping it entirely of its design.

Le site sera sans CSS pendant 48 heures. En effet, c’est le 9 avril international, c’est à dire, à n’importe quelle endroit sur terre, pour n’importe quel fuseau horaire.