Carnet Wiki

Version 7 — il y a 1 semaine Mist. GraphX

Réflexions sur un sytème de colonnes pour les contenus éditoriaux.
Proposer au rédacteur-trice, une solution de mise en forme à l’intérieur, du bloc texte d’un objet éditorial.

-  une syntaxe simple
-  pouvoir intégrer n’importe quel contenu dedans : modèles, médias
-  responsive et mobile first : si le redacteur-rice veut changer en mode tablet/medium
-  pouvoir ajuster les proportions des colonnes

Définir le système de grille sur lequel se base les colonnes

Faut il synchroniser, utiliser le système de grille du thème avec nos colonnes ?

  • breakpoints :
  • gouttière * : inside : padd external : margin
  • nombre de colonnes * : dependant du contexte/breakpoint
  • largeur de colonne : seulement utile dans le cas de grille statique

On ne sait pas prévoir tout les contextes ou va être inséré notre contenu. Exemple insertion dans une newsletter, la on est bon pour transformer nos colonnes en tableau via un filtre si on veut conserver la mise en forme.

On n’a pas forcément de grille ni de framework.

On est certainement dans un contexte imbriqué (wrapper/container).

A t’on nécessité de pouvoir spécifier des tailles de colonnes différentes suivant les breakpoints, et quel type d’utilisateur saura le gérer ?

CSS et markup

Utilisation/création d’un micro grid framework [1]

La solution proposée dans l’article en note, date et un peut limitée, on peut depuis utiliser flexbox et si besoin prévoir un fallback de ce type tout de même (si on en à besoin).

Rapid pour la démo, on crée donc un micro grid framework :
https://codepen.io/mistergraphx/pen/NzmZvO?editors=1000

Micro grid test :

  1. .row,
  2. .col {
  3.   box-sizing: border-box;
  4. }
  5.  
  6.  
  7. .row {
  8.   display: flex;
  9.   flex-wrap: wrap;
  10.   @include media('>phone'){
  11.     flex-wrap: nowrap;
  12.     flex-direction: row;
  13.     flex-shrink: 1 ;
  14.   }
  15. }
  16. .col {
  17.   @include media('>phone'){
  18.     flex: 1;
  19.     padding-right: $small-spacing;
  20.     margin-right: $small-spacing;
  21.     &:last-of-type {
  22.       padding-right: ;
  23.       margin-right: ;
  24.     }
  25.   }
  26. }
  27. // Utilities
  28. .col.double{
  29.   flex: 2;
  30. }
  31. .row.bordered .col {
  32.   @include media('>phone'){
  33.     border-right: 1px solid black;
  34.     &:last-of-type {
  35.       border-right: 0px transparent;
  36.     }
  37.   }
  38. }

Télécharger

Le markup attendu

  1. <div class="typeset" itemprop="text">
  2.      <div class="row bordered">
  3.               <div class="col">
  4.               </div>
  5.               <div class="col double">
  6.               </div>
  7.       </div>
  8.             <hr>
  9.        <div class="row">
  10.               <div class="col">
  11.               </div>
  12.               <div class="col">
  13.               </div>
  14.               <div class="col">
  15.               </div>
  16.         </div>
  17.             <hr>
  18. </div>

Télécharger

Proposer un modèle ou une wheel ?

L’utilisation d’un modèle comme dans le plugin utilisant bootstrap, oblige a passer par un modèle ouvrant et un fermant pour les container et colonnes.
C’est relativement similaire avec une wheel, mais sans avoir a numéroter les modèles et de manière plus clair.

Exemple de syntaxe

  1. <ROW>
  2.   <COL></COL>
  3.   <COL></COL>
  4. </ROW>

Télécharger

Sources et solutions disponibes

Spip :

Disposition avec Bootstrap : https://contrib.spip.net/Disposition-avec-Bootstrap