Auto_css V1.3: MAJ

logo autocss

Après avoir jeté un oeil intéressé sur les préprocesseurs css (genre compass par exemple) j'ai trouvé l'idée bien foutue...
raccourcir le temps passé en modifications des css lors de l'intégration (ou la réalisation) d'une maquette, je plussoie vigoureusement.

Un bémol, ces outils s'appuient souvent sur des langages supplémentaires (ruby), pas forcément activés ou client-side (javascript) et requièrent un apprentissage minimal.
Sans compter d'autres problèmes: poids des scripts ajoutés, temps d'exécution pour le client etc (voir http://jeremie.patonnier.net/ )

J'ai donc eu envie de m'en bricoler un vite fait, en mode Itch'n'scratch..

Nouveautés de la  v 1.3: 

  • On peut maintenant modifier certains éléments de la configuration d'auto_css directement depuis le master (et non plus uniquement dans le fichier auto_css.php) via la commande config(clé,"valeur"): ça peut permettre d'adapter le comportement d'auto_css depuis chaque master css et faciliter la mise à jour (par exemple config(minifie,"true").
  • J'ai supprimé certaines fonctions obsolètes (bshadow/bgradient) avantageusement remplacées par les commandes auto_css
  • J'ai supprimé la possibilité d'utiliser les variables fixées dans le master comme des regexes (c'était beaucoup de complication pour peu d'intérêt et ça alourdissait le moteur inutilement)
  • J'ai ajouté la commande txtj pour justifier, le blur pour les objets, les commandes sepia, desaturate, negative (des fonctions trrrès expérimentales et uniquement sous chrome) ainsi que des raccourcis de pseudo classes: fot, lot, oot, fch, lch, och, even, odd
  • On peut désormais utiliser l'argument !important avec les commandes et raccourcis auto_css.
  • J'ai corrigé quelques bugs et désormais, auto_css n'interprète plus les commandes se situant dans un nom de fichier (genre url(chemin/txtc.png) )
  • On peut également spécifier le media dans la configuration d'auto_css.

 



 

1- Le concept, le but, les avantages

J'ai démarré par le cahier des charges:

  1. pas besoin d'installer de langage,
  2. utiliser une techno toujours activée et sans plugin,
  3. sans surcharge pour le client,
  4. un apprentissage inexistant ou très simple pour le dev.,
  5. une installation à la portée de tout un chacun, même moi ,
  6. une intégration possible dans n'importe quel projet,
  7. une grande facilité d'évolution et d'adaptation.

 

1- Le concept

Auto_css se présente sous la forme d'un seul fichier php à inclure dans son projet, en général à la place de l'appel à la feuille de style:

<?php include("chemin/vers/les/css/auto_css.php");?>

On précise ensuite le nom du fichier css qui servira de master (voir la partie configuration);  lors de l'appel, auto_css va charger et traiter le master pour produire le fichier css final.
Il ajoutera ensuite lui-même le <link > vers cette nouvelle feuille de style.

 

2- Le but

Auto_css va se comporter un peu comme les préprocesseurs css que j'ai cités plus haut et interpréter des variables, snippets et commandes présents dans le master.

En effet auto_css permet:

  • d'utiliser une liste de commandes natives qui agissent comme des raccourcis simplifiés pour les tâches répétitives (coins arrondis crossbrowsers, ombrages préfixés etc)
  • de remplacer des portions précises du master par des chaines de caractères définies par l'utilisateur (couleur_de_fond, couleur_survol, vitesse_de_transition, bouton_normal, bouton_hover  par exemple...); ce peut être une valeur ou carrément une suite de commandes.
  • de générer automatiquement ou d'adapter du contenu (préfixer une commande non prévue, éclaircir ou assombrir une couleur...)

 

3- Les avantages
  • des commandes raccourcies,
  • pas de soucis de préfixage,
  • des modifications facilitées grâce aux variables définies par l'utilisateur,
  • la possibilité de traiter plusieurs fichiers à la fois (pour cloisonner et classer ses css)
  • la possibilité de merger tous les fichiers masters traités en un seul fichier final (pour limiter le nombre de requêtes)
  • l'ajout automatique d'une reset css (facultative)
  • la minification du code final (facultative)
  • tout étant géré par php, pas besoin de javascript ou ruby et pas de surcharge du client (scripts supplémentaires ou exécution par le navigateur)
  • si aucune modification n'a été effectuée ni sur les masters, ni dans la configuration d'auto_css, le fichier css n'est pas régénéré... 

 

2- La configuration

Un array de configuration au début du fichier php va définir le comportement d'auto_css. Il faudra y préciser:

  • le chemin vers les masters css; dans un cms, on pourra faire appel aux classes définies. Par exemple, pour pluxml:
    $auto_css['path_to_css_file']=$plxShow->plxMotor->aConf['racine_themes'].$plxShow->plxMotor->style.'/'; 
    ou plus souvent:
    $auto_css['path_to_css_file']="design/css/";
    
  • le ou les noms des masters:
     

        $css_files=array(
          'style.css',       
        );

    Pour les autres paramètres de configuration, voyez la documentation

 

3- Le fonctionnement

 

 

Dans le master.css, l'utilisateur va utiliser les commandes raccourcies, par exemple:

a:hover{
    color:hover_color!important;
    txtshadow
    underoff
    }

Et définir des variables en les insérant simplement dans des commentaires (ces variables peuvent contenir des suites de commandes):

/* auto_css initialisation
toutes les lignes ne contenant pas de '=' seront ignorées: commentez !
les noms de variables ne doivent pas contenir d'espace, de '=' ou de '"'... choisissez des noms de variables ne parasitant pas les classes, commandes etc...
        link_color="#5d2600"        
        visited_color="#3b0400"
        hover_color="#ce5200"
        text_color="#526068"
        bordure="border:1px dashed #7d6d5e; roundc 5 boxshadow 1 2"   
  */  
    

De plus, Certaines fonctions permettent de modifier des couleurs ou récupérer les dimensions d'une image:

/* 
Couleur_de_fond="#F00" 
couleur_plus_sombre=darken(Couleur_de_fond,50) 
(mais aussi couleur_plus_sombre=darken(#F00,50))  
couleur_plus_claire=lighten(Couleur_de_fond,50) (mais aussi couleur_plus_claire=lighten(#F00,50))  
couleur_plus_claire=reverse(Couleur_de_fond) (mais aussi couleur_plus_claire=reverse(#F00))   

Logo automatique
chemin_logo="img/logo" dimensions_logo=dimensions(chemin_logo)
dans le css lui-même: div.logo{background-image:url(chemin_logo);dimensions_logo} Ainsi, on peut changer le nom de fichier et le css s'adapte automatiquement.
Si on change l'image en conservant le nom, les dimensions s'adapteront tout de même en régénérant le fichier css */

 

4- Conclusion et téléchargement

Vu que j'utilise très régulièrement auto_css dans les projets auxquels je contribue ou que je réalise totalement, je maintiens le code régulièrement et corrige assez vite les bugs. Si toutefois vous en trouvez, si vous avez des idées d'améliorations  ou si simplement vous voulez  critiquer , les commentaires sont ouverts en dessous .
Pour télécharger le fichier et la démo avec la doc : auto_css.zip
 
 

5- En savoir plus

Si ça vous intéresse, vous pouvez jeter un oeil sur la démo  et la doc complète sans télécharger le tout. Vous aurez ainsi l'occasion de voir les effets possibles et le contenu d'un master.
Cette version 1.1 apporte une modification importante: les variables sont désormais intégrées dans le fichier css servant de master.
  • lh pour line-height
  • des commandes pour certainnes  pseudo classes
  • l'ajout de !important pour les commandes auto_css
  • des commandes expérimentales (filter) pour l'instant uniquement fonctionnelles sous chrome (c'est pas ma faute, tapez pas )

J'ai également corrigé certains bugs et oublis (les commandes se trouvant dans un nom de fichier ou un nom de classe ou d'ID ne sont plus interprétées etc)

 

 
 
 

❝ 22 commentaires ❞

1  Bronco le

J'ai refait l'article complètement, du coup les commentaires sur les versions précédentes sont ... aux oubliettes
Mais vous pouvez repartir à fond

 
2  le hollandais volant le

En gros, auto_css, c’est le PHP de l’intérieur du navigateur : quand on dit par exemple à Firefox que les titres sont en 14pt serif et que le texte est en 12pts sans-serif, auto_css fait la même chose, mais en beaucoup plus complet ?

 
3  Bronco le

En fait, auto_css traite une page css un peu à la façon de Sass ou less: tu crées ta feuille de style normalement mais en utilisant des raccourcis ou des variables et lors de l'appel à auto_css, il va changer tes variables et tes commandes en css valide et sauver la feuille de style complète.
Par exemple:
roudc 5 renverra -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;
noselect renverra -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;
etc.
En plus, tu peux utiliser un array pour fixer des variables qui seront remplacées par leur valeur dans le css final:
$values=array(
'couleur_de_base'=>'#f00',
'couleur_de_fond'=>'#444',
'cadre_arrondi'=>'roundtop 5 background-color:couleur_de_fond; color:couleur_de_base; boxemboss boxshadow 1 2'
);
Tu utilises ces valeurs dans ta feuille de style et auto_css les remplacera tout seul.
Tu peux même créer des couleurs à partir de la principale:
$values['sombre']=darken($value['couleur_de_base'],30); // 30% plus sombre


Avantage, si ton client te dit:
-"je voudrais plutôt du vert qu lieu du rouge"
tu changes 'couleur_de_base'=>'#0f0', et c'est tout... partout où cette 'variable' a été utilisée, le changement s'appliquera, y compris avec les couleurs déclinées.

 
4  Bronco le

C'est un truc que j'ai fait que pour moi au départ, préférant utiliser un code que je comprenais bien et qui faisait exactement ce que je voulais (cf la discussion sur ton site )
Au final, à chaque début de projet, je commence par intégrer auto_css dès le début...
L'avantage, c'est qu'on peut facilement supprimer les commandes qu'on trouve inutiles et en ajouter d'autres nouvelles, y compris à base de regex.

 
5  JeromeJ le

Va falloir que je me mette la version que j'utilise à jour :D


En espérant que ça va pas tout péter chez moi


(Car j'avais du faire un fork pour que tout fonctionne exactement comme je voulais)


Je n'hésiterais pas à te refaire mes ptits commentaires dessus


Ces bons bouts de codes amificateurs :D Ahaha :)

 
6  Bronco le

hinhinhin, ok !
La vache, une de mes productions est l'objet d'un fork... super fier

 
7  JerryWham le

Bonsoir,


Ça m'a l'air intéressant tout ça mais le lien de téléchargement du zip ne fonctionne pas (erreur 404). C'est normal ?

 
8  JeromeJ le

@JerryWham Ben quoi, tu l'aimes pas son erreur 404 ? :D Moi je la trouve génial ! J'aime bien celle avec le pendule de newton #fail


C'est bizarre pour le lien mort par contre … :/
Aucune idée de ce qu'il s'est passé et/ou d'où est le bon lien Y a plus qu'à attendre que Bronco passe par ici :p :)

 
9  JerryWham le

@JeromeJ : Si j'adore les joies du code... :D

 
10  Bronco le

@JerryWham: J'ai corrigé le problème, le fichier zip est à nouveau en ligne
Dsl ;)

 
11  JerryWham le

Yes ! Merci ;-)

 
12  JeromeJ le

Bon, je crois que je vais remettre les mains dans le code et abandonner ma 'vieille' version personnalisée :p (elle était mieux (lol))


Si je fais comme je dis (si je ne procrastine pas encore), tu peux sûrement t'attendre à quelques longs commentaires de ma part :)
Si tu n'en reçois pas, tu sauras que j'ai procrastiné


captcha: yrbutft

 
13  JeromeJ le

Tiens, au fait, est-ce normal que l'URL ne corresponde pas au titre de l'article ? (Dans l'URL, c'est marqué V1.0 une version stable)


captcha npazy

 
14  JeromeJ le

Argh.



Bon je me sens obligé de repasser ça http://www.kodcu.com/wp/wp-content/uploads/2011/05/wtf-code-quality.jpg

 
15  JeromeJ le

(Mmmh, je me demande comment t'as implémenter le truc pour que ça affiche l'image tout seul :| mmmh (j'veux dire, c'est sécurisé ? ))

 
16  Bronco le

hinhinhin please define "sécurisé" ?!

 
17  JeromeJ le

Pas de risques d'injection ? :D Plutôt que d'essayer à l'aveugle, je préférerais voir le code, au moins t'es tout de suite fixé (en privé s'tu veux :))


(L'amis, faut qu'on parle !!! :p ça commence à faire longtemps dis !)

 
18  Bronco le

en effet !

 
19  Yosko le

Je vais enfin essayer ça.


Au fait, pourquoi le code n'est-il pas sur ton GitHub ? :)

 
20  Bronco le

Haha ! parce que j'ai fait auto_css AVANT d'avoir un dépôt...
Puis, j'ai encore quelques améliorations en tête...
;)

 
21  Yosko le

Eh bien moi aussi, j'en ai. Je te fais un ptit mails ;)

 
22  Bronco le

Je prends !

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le troisième caractère du mot vcu8wi ?