
L'action flexbox permet des créer des colonnes côte à côte sur une grand écran et empilées sur un mobile.
Cela permet, par exemple, d'insérer facilement une image à coté d'un texte ou une synthèse avec son développé à côté.
Cliquer pour lire la documentation
{up flexbox=x1-x2}contenu avec plusieurs blocs enfants{/up flexbox}syntaxe 2 :
{up flexbox=x1-x2}contenu bloc-1 {====} contenu bloc-2{/up flexbox}x1-x2 sont les largeurs relatives des colonnes
exemple : flexbox=4-8 ou flexbox=33-66 pour 2 colonnes (équivalent: span4 et span8)
Note : les options class-1 à class-6 et style-1 à style-6 sont à saisir directement dans le shortcode
- flexbox: nombre de colonnes ou prefset sous la forme x-x-x-x
- tablet: nombre de colonnes sur moyen écran sous la forme x-x-x-x
- mobile: nombre de colonnes sur petit écran sous la forme x-x-x-x
- mobile-l: nombre de colonnes sur petit écran en mode payage sous la forme x-x-x-x
- large: nombre de colonnes sur écran large sous la forme x-x-x-x
- xlarge: nombre de colonnes sur écran xlarge sous la forme x-x-x-x
- xxlarge: nombre de colonnes sur écran xxlarge sous la forme x-x-x-x
- alternate: valeur du breapoint pour inverser l'ordre des colonnes sur les lignes paires. option sans argument ou 1=480
Style bloc principal
- id: identifiant du bloc principal
- class: class ou style pour le bloc principal
- style: class ou style pour le bloc principal
Style des blocs secondaires
- bloc-tag = 1: ajoute un bloc DIV autour des contenus enyre {===}
- class-*: class pour tous les blocs colonnes. sinon voir class-1 à class-6
- style-*: style inline pour tous les blocs colonnes. sinon voir style-1 à style-6
- bloc-style: style et class2style ajoutés au bloc enfant
Nom des classes identificatrices
- class-col = up-col-: nom des classes pour les colonnes
- class-row = up-row-: nom des classes pour les lignes
Style ajouté dans le head de la page
- css-head (base-css): style ajouté dans le HEAD de la page
Divers
- no-content-html = en=no content;fr=aucun contenu: message si aucun contenu
- Version 5.1
- reprise complète du script pour uniformisation des méthodes avec flexauto
- ajout option bloc-tag
- Version 5.1.2
- ajout des options class-col et class-row pour définir le début du nom des classes pour identiifier les cellules
Attention : la valeur par défaut passe de col- / row- à up-col- / up-row-
- ajout des options class-col et class-row pour définir le début du nom des classes pour identiifier les cellules
- Version 5.2
- ajout option alternate
- prise en charge class2style
Syntaxe wysiwyg
Pour suivre le grand principe de UP de ne pas avoir à passer en mode code, le contenu des colonnes est séparé par le shortcode {===}, avec au minimum 3 signes égal.

Explications:
{up flexbox=3-9 | tablet=6 | mobile=12-0
| class=fg-gap bg-jauneClair
| class-1=bd-rouge
| class-2=bd-vert
| style-*=text-align:center
}
1
<img src="/images/admin/joomla-logo-32.png" alt=""/>
{=====}
2
{==========}
3
{=====}
4
{==========}
5
{=====}
6
{/up flexbox}
L'intégralité du code pour voir la méthode de saisie. Le contenu de chaque cellule est séparé par au minimum 3 signes égal entre accolades.
Les paramètres du shortcode définissent
- flexbox=3-9
- Le paramétre principal contient la largeur des colonnes sur grand écran, soit 3/12 et 9/12.
On considère donc qu'il s'agit d'un tableau sur 2 colonnes. - tablet=6-6
- sur moyen écran, on aura 2 colonnes égales.
Si l'on indique pas de valeurs, elles seront identiques à celles pour le grand écran. - mobile=12-0
- sur mobile, une seule colonne de la largeur de l'écran. La 2ème est masquée (0)
Si l'on indique pas de valeurs, les cellules occuperont toutes la largeur. - class
- fg-gap ajoute une marge entre les cellules et bg-jauneClair un fond jaune paille. Les classes indiquées sont ajoutées à la balise conteneur (fg-row)
- class-1 & class-2
- bd-rouge & bd-vert ajoute une bordure colorée respectivement à la colonne 1 et la colonne 2
- style-*
- le style inline text-align:center est ajouté à toutes les cellules
Syntaxe sans séparateur
L'exemple précedent avec ce code
{up flexbox=3-9 | tablet=6-6 | mobile=12-0 | class=fg-gap bg-jauneClair | class-1=bd-rouge | class-2=bd-vert | style-*=text-align:center}
<div> 1 <br><img src="/images/admin/joomla-logo-32.png" alt=""/> </div>
<div> 2 </div>
<div> 3 </div>
<div> 4 </div>
<div> 5 </div>
<div> 6 </div>
{/up flexbox}

Mise en forme version 5.1
Elles permettent une présentation plus souple et plus agréable que les tableaux avec le grand avantage d'être responsive.
J'ai revu complétement ces 2 actions pour la version 5.1 de UP, en uniformisant leurs options concernant la mise en forme.
Quoi de mieux que d'utiliser ces nouvelles fonctionnalités pour vous les montrer et démontrer.
Les options concernées sont listées dans le tableau ci-dessous.
Pour rappel, une option se terminant par -, permet de donner une règle qui concerne tous les éléments. Si on remplace l'étoile par un nombre de 1 à 12, on cible un groupe d'éléments. Dans notre cas, il s'agit des colonnes. Il aurait été préférable que je les nomme col-class-* et col-style-*. Mais il est trop tard, la compatibilité ascendante l'interdit
L'exemple utilise flexbox, mais flexauto fonctionnne exactement de la même façon.
class
style
classe(s) ou style(s) ajouté en inline dans la balise DIV du bloc principal
bloc-style
style UNIQUEMENT ajoutés à tous les blocs enfants par une règle CSS dans le head. #id>*[style]
style-*
style-* est identique à bloc-style
style-X ajoute une règle CSS dans le head. #id .col-X[style]
Nouvelle option 5.1 pour flexauto
class-*
class-* est ajouté à la balise de tous les blocs
class-X ajoute la règle dans la balise de tous les blocs enfants
Nouvelle option 5.1 pour flexauto
bloc-tag
par défaut, un bloc DIV encadre les contenus séparés par {===}
bloc-tag=0 n'ajoute pas de bloc, les attributs sont ajoutés à la balise enfant
Nouvelle option 5.1 pour flexauto et flexbox
class-col & class-row
le nom des classes pour les colonnes et les lignes.
Par défaut, ils sont définis à up-col- et up-row-
Les explications
{up flexbox=2-10 | mobile=12
| class=fg-gap m-child-raz-1 bd-gris
| style=font-size:1rem
| bloc-style=border:1px grey solid; padding:10px
| class-*=ombreMax
| class-1=bg-rouge t-blanc
| class-2=bd-rouge
| css-head=#id .up-col-1.up-row-odd[background:var(--bleuClair) !important]
#id .up-col-2.up-row-odd[border:2px solid var(--bleuClair) !important]
}flexbox : pas de changement, c'est la largeur des 2 colonnes. 12 pour toute la largeur sur mobile.
class : les classes s'appliquent au bloc parent qui entoure tous les blocs enfants avec une bordure grise (bd-gris). le classes fg-gap et m-child-raz-1 agissent sur les marges. Voir la feuille de style de UP.
style : pour la démo, je précise la taille des caractères
bloc-style : par défaut, tous les blocs enfants ont une bordure rouge et un padding
class-*: j'ajoute une ombre à tous les blocs enfants (toutes les colonnes)
class-1 : la première colonne aura un texte blanc sur fond rouge
class-2 : la deuxième colonne est entourée de rouge
css-head : cette option universelle va nous permettre de styler en toute liberté !
Un peu de technique pour comprendre les règles de l'option css-head
Il aurait été possible de faire plus simple, amis on perdait le charme de la démo !
Tous les blocs enfants ont 3 classes pour permettre de les styler :
up-col-X: le numéro de sa colonne de 1 à Nup-row-X: le numéro de sa ligne de 1 à Nup-row-evenourow-oddselon que la ligne est paire ou impair
Ces classes nous permettent de cibler :
- une colonne par
#id .up-col-X - une ligne par
#id .up-row-X - un bloc par ses coordonnées
#id .up-row-X.up-col-XNotez bien l'absence d'espace entre les 2 classes pour indiquer qu'elles sont dans la même balise. L'espace avec #id indique qu'elles sont ses enfants. C'est beau le CSS ! - un bloc d'une colonne sur une ligne paire ou impaire. C'est le cas dans notre exemple avec
#id .up-col-1.row-oddpour les blocs de la colonne 1 qui sont sur une ligne paire.
Attention à la priorité des sélecteurs CSS
Par définition, pour simplifier, une règle CSS dans une balise HTML a un poids (ou priorité) plus important qu'une règle dans un fichier CSS ou dans le head de la page.
C'est pour cela que l'on ajoute l'attribut !important afin de le rendre prioritaire
En résumé, toutes les options sont dans le head de la page pour toutes les options (bloc-style, style- et css-head). class-* est obligatoirement dans la balise des blocs enfants.
Je ne parle pas des options class et style qui ne rentre pas en conflit avec leurs enfants
Si la facilité d'utilisation des classes n'était pas si grande, l'idéal serait de ne pas utiliser l'option class-* pour éviter les bagarres entre enfants.
L'option bloc-tag
Cette option fait son apparition dans la version 5.1 de UP.
Sa fonction est utile lorsque le contenu des blocs enfants provient d'autres actions UP situées entre des shortcodes séparateurs pour plus de lisibilité.
Les shortcodes séparateur encadrent leur contenu par une balise DIV qui peut gêner l'application de certaines règles CSS flexbox ou grid.
Je ne vais pas rentrer plus dans les explications, si vous êtes confronté à un souci CSS, pensez à ajouter une option bloc-tag=0 pour ne pas ajouter ce bloc superflu !
Une autre solution est de ne pas utiliser de shortcodes séparateurs, mais je trouve cela moins clair. A vous de choisir.
Dans les 2 cas, les classes class-* seront ajoutées à la balise des enfants directs.
{up flexbox=2-10
| class=fg-gap m-child-raz-1 bd-gris
| style=font-size:1rem
| bloc-style=border:1px grey solid; padding:10px
| class-*=ombreMax
| class-1=bg-rouge t-blanc
| class-2=bd-rouge
| css-head=#id .col-1.row-odd[background:var(--bleuClair) !important]
#id .col-2.row-odd[border:2px solid var(--bleuClair) !important]
}
Alterner les lignes version 5.2
Beaucoup de descriptions sont composées d'une image et d'un texte. Pour animer la présentation, il est courant de mettre une fois l'image à gauche et une fois à droite.
Il suffit de créer une nouvelle flexbox à chaque ligne, mais cela présente plusieurs inconvénients :
- en cas de modification de l'ordre des descriptions, il faut modifier plusieurs flexbox
- sur smartphone, l'image est une fois devant, une fois après. Pas très facile pour la compréhension.
Une nouvelle option alternate propose une solution élégante
{up flexbox=4-8-gris | alternate
| class-1=bg-jaune | bloc-style=tc;p1;border:2px red solid}
UN
{======= 2}
DEUX
{======= 3}
TROIS
{======= 4}
QUATRE
{/up flexbox}Ci-dessus, un exemple avec son shortcode à droite. Ce que l'on peut remarquer :
- la saisie du contenu est dans un ordre logique : UN DEUX TROIS QUATRE
- l'affichage sur grand écran inverse le contenu d'une ligne sur deux
- sur mobile ou en réduisant la largeur votre navigateur, l'ordre "normal" est retrouvé
- le style des colonnes est respecté. le fond jaune pour la colonne 1 (class-1) suit le contenu
- hors sujet, mais l'option bloc-style qui ajoute des règles css dans le head accepte les classes simples (class2style) parmi les styles classiques
upactionslist (1) readmore (1) csv2def (1) div (1) flexbox (3) span (2) jcontent-in_content (1) flexauto (1) jcontent-info (1) tabslide (1) toc (1)
