J'avais parlé dans une précédente news, que je souhaite réaliser mes CCP2 et 3 de la formation Concepteur Développeur d'Application, afin de compléter le titre. J'avais donc pour l'occasion, parlé de YTChanel, un projet de site internet de gestion d'une chaîne Youtube (projet qui sera réalisé en PHP).
Pour l'occasion, je souhaite m'affranchir de certains éléments que j'utilise habituellement. Ici, je vais vous parler CSS. Depuis quelques temps déjà, j'utilise beaucoup Bootstrap (depuis la version 3). Bootstrap est très puissant et permet beaucoup de choses, merci d'ailleurs aux développeurs qui y font un sacré boulot.
En revanche, il devient d'une part une véritable usine à gaz, d'autre part il est lourd au niveau du code HTML. Sa lourdeur provient de l'usage de la grille.
Pour YTChanel, je vais utiliser mon propre framework CSS que j'ai baptisé "AskaCSS". Son développement a déjà démarré, mais il n'en est qu'au tout début. Dans ce framework, et c'est un peu la nouveauté par rapport à Bootstrap, je souhaite m'affranchir du système de grilles et reposer sur le système de flexbox pour le positionnement. Ainsi, pas de "12 colonnes" ou autres, on utilise nos div comme habituellement et les éléments se placent tout seuls sur la ligne à intervalle régulier.
Le but ici, est de décharger le travail du framework. En effet, Bootstrap a cet avantage de presque tout faire pour nous, on utilise le système et grille et on fait presque pas de CSS. L'idée est intéressante, mais pour l'avoir vécu avec le projet sur lequel nous avons bossé à l'AFPA pendant la formation Développeur PYTHON/JAVA, dès qu'on va vouloir gérer les résolutions inférieurs (smartphone, tablettes, TV...), c'est vite le boxon intégral, on se retrouve avec des fois 4 voir 5 classes CSS.
De plus, le résultat n'est pas parfait, et si on veut gérer d'autres résolutions, par exemple du 1080p et au-delà, on doit créer des media-query intermédiaire ou supplémentaire pour un résultat qui n'est parfait dans tout les cas, que dans le cas où on est sur la résolution indiquée ; dès que la fenêtre est entre deux media-query, les positionnements sont loin d'être idéaux.
La philosophie derrière AskaCSS est bien différente. Le but est que les éléments se positionnent tout seuls et ce quelque la taille du navigateur ou de l'écran. Si maintenant le développeur souhaite restreindre la taille du conteneur et donc que la disposition soit un peu différente, il doit pouvoir le faire très simplement en CSS sans devoir rajouter des classes CSS à foisons dans son code HTML ou écrire beaucoup de CSS pour le faire.
Je prends l'exemple de la barre de navigation. Si on ne donne aucune restriction, les éléments qui sont des listes au sein de la navbar, vont prendre toute la largeur. S'il y a beaucoup d'éléments OK, sinon l'espacement sera très grands et pas agréable. Le développeur, peut très bien souhaité que les éléments se regroupent tous à droite par exemple. En surchargeant la classe il peut modifier le justify-centent de space-around à flex-end par exemple. S'il trouve que les éléments sont trop collé, rien ne l'empêche ensuite de surcharger l'élément de liste enfant de cette classe CSS, en ajoutant un margin à l'intérieur.
Dans cet exemple, on peut donc en juste deux lignes de CSS, modifier le comportement et l'adapter, sans devoir rajouter de nouvelles classes HTML ou taper des dizaines de lignes de CSS pour un peu tout modifier. Ainsi, le développeur est parfaitement libre de ses choix, il n'a presque aucune contrainte alors que Bootstrap en impose de par son fonctionnement, dû fait que les développeurs du framework, ont souhaités permettre d'établir un visuel en quelques minutes sans rien faire et modifier le visuel facilement.
Avec AskaCSS, je souhaite disposer d'un comportement similaire mais en laissant plus de champ libre aux développeurs et un HTML plus simple à lire et a comprendre. Alors que Bootstrap mise tout sur l'HTML, je prends de mon côté le parti pris, d'imposer un peu de CSS si on souhaite personnaliser un peu les comportements, sans toutefois apporter de la lourdeur au code CSS qui doit être écrit.
Bootstrap repose aussi sur la multitude de classes CSS, AskACSS reposera sur les sélecteurs CSS. Ainsi, AskaCSS peut réaliser en automatique certains comportements, par exemple si on est en présence du premier élément, du dernier, un élément sur deux etc. et ce de manière complètement automatique, sans classes CSS supplémentaire et sans travail supplémentaire de la part du développeur.
Je m'arrête là, car j'ai en tête pleins de choses pour se projet. Au niveau des noms des classes CSS, j'ai décidé de reprendre autant que possible, les noms de classes de Bootstrap (pas le code), afin de limiter l'apprentissage pour quelqu'un ayant déjà travaillé avec ce dernier.
Le développement du projet a déjà démarré, mais j'avoue ne pas avoir eu le temps de travailler dessus depuis une bonne semaine. En parallèle, je travaille sur le site présentant le framework et fournissant (comme le fait Bootstrap) une documentation complète. Ainsi, au fur et à mesure que je crée les briques de AskaCSS, je répercute cela sur le site qui va alors se construire tout doucement avec le framework.
Mais je vais pas parler du site ici, je vous donne RDV donc dans la news qui y est consacrée, juste après cette dernière.