Projet

Général

Profil

Development #64893

header: variables scss pour taille du logo et affichage du titre du site

Ajouté par Thomas Jund (congés, retour le 29/04) il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Version cible:
-
Début:
05 mai 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

La gestion de la taille du logo du header ainsi que de l'affichage éventuel du titre du site se fait à partir de custom CSS.
Essayer de proposer une variable pour manager la taille du logo et un booléen ou afficher ou non le titre du site.


Fichiers

0001-scss-introduce-header-logo-size-show-site-title.patch (3,09 ko) 0001-scss-introduce-header-logo-size-show-site-title.patch Thomas Jund (congés, retour le 29/04), 05 mai 2022 16:25
columns-center.png (14,3 ko) columns-center.png Thomas Jund (congés, retour le 29/04), 05 mai 2022 16:25
direction-columns.png (14,1 ko) direction-columns.png Thomas Jund (congés, retour le 29/04), 05 mai 2022 16:25
logo-size-default.png (11,4 ko) logo-size-default.png Thomas Jund (congés, retour le 29/04), 05 mai 2022 16:25
vertically-center.png (14,1 ko) vertically-center.png Thomas Jund (congés, retour le 29/04), 05 mai 2022 16:25
last-baseline.png (29,1 ko) last-baseline.png Corentin Séchet, 09 mai 2022 14:53

Historique

#1

Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 2 ans

Proposition :

$header-logo-size : Taille du logo de l'entête. 2 valeurs sont attendues : largeur et hauteur

$header-logo-size: 150px 75px;

$show-site-title: Bool. Afficher le titre du site. Le titre est masqué par défaut lorsqu’un logo est défini.

  • J'ai placé le logo dans un pseudo-element, pour plus facilement le positionner par rapport au titre lorsque les 2 sont visibles et migrer plus simplement le code si le logo évolue un jour vers un markup <img>
  • Le logo et le titre sont alignés sur `last baseline` par défaut.
  • J'ai isolé au max avec le code existant. Seul impact sur l'existant est le passage de `#logo a` en `display: inline-block` pour faire fonctionner $show-site-title mais en cas de ressource logo non déclarée.
  • Et ne pas oublier que le logo est toujours en background-image, il ne devrait pas, il devrait être contenu et non pas décoration. Seul le titre du site supporte le contenu, il doit donc être explicite en reprenant le nom de la collectivité.

Avec ce patch, quelques lignes de CSS sont maintenant suffisants pour organiser le logo et le titre.

Quelque exemples

logo-size-default.png

$header-logo-size: 143px 95px;
$show-site-title: true;
#top {
    padding-top: 25px;
    padding-bottom: 25px;
}

h1#logo {
    &.has-logo a {
        font-size: 25px;
    }
}

vertically-center.png

J'ai réduit la font-size pour bien montrer que c'est centré verticallement

h1#logo {
    &.has-logo a {
        font-size: 15px;
        align-items: center;
    }
}

direction-columns.png

h1#logo {
&.has-logo a {
flex-direction: column;
align-items: start;
}
}

columns-center.png

En 5 lignes de code. Il faut passer de inline-flex à flex pour passer le bloc sur toute la largeur. Et background-position: center est là par prudence, car la var $logo-size définie une aire dans laquelle le logo va proportionnellement se ranger (background-size: contain)

h1#logo {
    &.has-logo a {
        display: flex;
        flex-direction: column;
        align-items: center;
        text-align: center;
        background-position: center;
    }
}
#2

Mis à jour par Corentin Séchet il y a presque 2 ans

Si on met une grande hauteur de logo et qu'on active show-site-tile, align-items: last-baseline décalle le logo vers le haut en dehors de l'écran. Je ne sais pas si c'est une solution convenable de mettre les width et height sur le a plutôt que le a::before.

Et pourquoi faire

    $no-logo-site-title: if($show-site-title == false, false, true);
    @include display-site-title($no-logo-site-title);

    ...

    $has-logo-site-title: if($show-site-title, true, false);
    @include display-site-title($has-logo-site-title);
    @if $has-logo-site-title {

    ...

plutôt que

    @include display-site-title($show-site-title);

    ...

    @include display-site-title($show-site-title);
    @if $show-site-title {

    ...

J'ai fait un tour des intégrations graphiques, je n'ai rien vu de cassé.

#3

Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 2 ans

Si on met une grande hauteur de logo et qu'on active show-site-tile, align-items: last-baseline décalle le logo vers le haut en dehors de l'écran

Je ne reproduis pas. le titre est dans le flux, donc plus haut est le logo, plus haut est le header.
Tu pourrais proposer un code à tester ?
est-tu sûr de ne pas avoir de code dans ton _custom.scss qui produirait ce comportement ?

Et pourquoi faire … plutôt que

Dans le core aujourd'hui, le titre du site est affiché si aucune ressource logo n'est définie, mais masqué si une ressource est chargée (le text-indent est activé si la class .has-logo est présente).
J'ai respecté ce comportement en créant 2 var SCSS et ainsi pouvoir faire fonctionner $show-title dans les 2 cas.

#4

Mis à jour par Corentin Séchet il y a presque 2 ans

  • Statut changé de Solution proposée à Solution validée

Effectivement, je testais avec clapotis-les-canards qui définit une taille pour le logo dans le _custom.css, ça fonctionne si on la retire. Et j'avais mal lu, c'est effectivement clair si $show-site-title est à null.

#5

Mis à jour par Thomas Jund (congés, retour le 29/04) il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit bcb84f2263a61f80f7c101f1dd349b6ad6d27649
Author: Thomas JUND <tjund@entrouvert.com>
Date:   Wed May 4 18:01:25 2022 +0200

    scss: introduce $header-logo-size & $show-site-title
#6

Mis à jour par Frédéric Péters il y a presque 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

(référence de ticket absente)

#7

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF