Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSS imbriqués non conformes #144

Open
Bbahri opened this issue Nov 6, 2020 · 7 comments
Open

CSS imbriqués non conformes #144

Bbahri opened this issue Nov 6, 2020 · 7 comments

Comments

@Bbahri
Copy link

Bbahri commented Nov 6, 2020

Le fichier main.css contient des styles indentés... ce qui n'est pas interprétable par un navigateur, et pas conforme.

Il s'agirait d'utiliser un fichier .scss par exemple en lieux et place de celui-ci, afin de rendre des styles comme : .cookies {} interpretables.

@maximebochon
Copy link

Hormis quelques exceptions comme le Python, le Haskell ou le YAML, la plupart des langages et dialectes en informatique sont insensibles à l'indentation. En particulier pour le CSS, l'indentation ne pose aucun problème.

Peut-être voulez-vous parler d'autre chose ? d'imbrication ? ou de fonctionnalités CSS propriétaires ou trop récentes ?

Il y en a en effet, comme on peut le constater après analyse du CSS de production par Jigsaw, mais à vue de nez pas plus que sur la plupart des sites.

C'est commun d'avoir recours à des fonctionnalités propriétaires en CSS, souvent de manière cumulative avec le standard, pour des raisons de compatibilité avec d'anciens navigateurs, ou au contraire de faire appel à des fonctionnalités légèrement en avance de phase par rapport au standard, mais portant souvent sur des détails, comme par exemple text-decoration-skip-ink.

Quant à l'extension du nom de fichier qui pourrait être différente, je crois qu'ici c'est PostCSS qui est utilisé via Parcel, lequel accepte, au niveau des fichiers sources, les extensions .css, .pcss et .postcss.

@Bbahri
Copy link
Author

Bbahri commented Nov 18, 2020

Bonjour et merci @maximebochon pour le réponse. Je me suis mal exprimé et j'aurais dû être plus précis.
Je voulais dire imbriqués pour indentés.

En effet il y a des styles imbriqués dans le fichier ./src/css/main.css

Les voici:

.confidentialite {
  .cookies {
    border-collapse: collapse;

    td,
    th {
      border: 1px solid #000191;
      padding: 8px;
    }

    @media (prefers-color-scheme: dark) {
        td, th {
            border-color: #A3A3FF;
            color: white;
        }
    }

    .header-row {
      font-weight: bold;
      color: #ffffff;
      background-color: #000191;
      text-transform: uppercase;
      text-align: center;
    }

    .name-col {
      font-weight: bold;
      padding: 8px 16px;
      color: #000191;
    }

    @media (prefers-color-scheme: dark) {
      .name-col {
        color: #A3A3FF;
      }
    }
  }

  .btn-wrapper {
    display: flex;
    justify-content: center;

    .btn-generateur {
      padding: 0.8em;
      font-size: 1.2em;
      font-weight: bold;
      color: #ffffff;
      background-color: #000191;
      border-radius: 0.5em;
      text-decoration: none;
      color: #ffffff;
    }

  }
  em {
    font-size: .8rem;
  }
}

Un fichier CSS ne devrait pas contenir de styles imbriqués.

  • Soit ces styles doivent être modifiés, ex:
.confidentialite .cookies {
    border-collapse: collapse;
...
}
  • Soit ce fichier devrait être un fichier .scss à transpiler avec un Bundler type Parcel, Webpack ou autre.

Bien à vous ;)

@Bbahri
Copy link
Author

Bbahri commented Nov 18, 2020

J'ai voulu pousser un correctif à l'instant mais je ne suis pas autorisé à ouvrir une PR / pousser une branche.
Faut-il forker le projet pour ouvrir une PR ?

@maximebochon
Copy link

@Bbahri Concernant la procédure pour la pull request, je ne sais pas, il faut voir avec l'équipe du projet.

Concernant le sujet du fichier CSS, je cite ma première réponse :

Quant à l'extension du nom de fichier qui pourrait être différente, je crois qu'ici c'est PostCSS qui est utilisé via Parcel, lequel accepte, au niveau des fichiers sources, les extensions .css, .pcss et .postcss.

La doc' qui en parle est ici : https://parceljs.org/css.html

Et si on vérifie le CSS de production, on voit bien que la transformation a eu lieu :

https://media.interieur.gouv.fr/deplacement-covid-19/main.fc057723.css

.confidentialite .cookies {
  border-collapse: collapse
}

.confidentialite .cookies td, .confidentialite .cookies th {
  border: 1px solid #000191;
  padding: 8px
}

@media (prefers-color-scheme: dark) {
  .confidentialite .cookies td, .confidentialite .cookies th {
    border-color: #a3a3ff;
    color: #fff
  }
}

.confidentialite .cookies .header-row {
  font-weight: 700;
  color: #fff;
  background-color: #000191;
  text-transform: uppercase;
  text-align: center
}

.confidentialite .cookies .name-col {
  font-weight: 700;
  padding: 8px 16px;
  color: #000191
}

(l'extrait a été formaté pour faciliter la lecture)

@Bbahri
Copy link
Author

Bbahri commented Nov 19, 2020

@maximebochon Ok merci.

PostCSS accepte comme d'autres bundlers / minificateurs / transpileurs CSS de "processer" des fichiers CSS bien entendu.
Mais toujours est-il qu'un fichier CSS ne devrait pas avoir de styles imbriqués.
Et ce même si PostCSS est permissif sur ce point.
Et ce, ne serait-ce que parce-que nombreux IDE afficheront des erreurs dans le code à ces endroits (comme le fait VSCode).
De même que le ferait un linter sur ce projet sur cette partie du code.
Ou comme le fait la validateur du W3C https://jigsaw.w3.org/css-validator/validator sur ce code.

Il s'agit là simplement de bonnes pratiques à mon sens.

Même si le plus important reste qu'un projet fonctionne il est vrai...

Beaucoup d'échanges pour quelques lignes de CSS cela dit ^^

Bonne journée
Cordialement

@Bbahri Bbahri changed the title CSS indentés non conformes CSS imbriqués non conformes Nov 19, 2020
@maximebochon
Copy link

Je n'ai pas vraiment d'opinion à ce sujet, mais je suppose que le développeur d'origine du générateur d'attestations (@nesk) a mis en place PostCSS et Parcel de manière standard.

Peut-être que l'extension .pcss éviterait ce problème et obligerait le développeur à recourir au module pour IDE prévu par PostCSS: https://github.com/postcss/postcss#editors--ide-integration

@nesk
Copy link

nesk commented Nov 19, 2020

Pour ma part tout était codé à la main sans étapes de build, du CSS et JS pur, bien old-school. Je ne suis pas à l'origine de ce code là. 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants