2016-09-23 1 views
0

J'essaie d'écrire un blog très minimaliste comme un moyen de ré-apprendre html et CSS. J'essaie de comprendre ce que je devrais utiliser pour sélectionner les éléments de ma page entre les balises simples, id ou classe.Bourbon Soignée et sémantique HTML5, qu'en est-il de BEM?

Pour c'est ce exemple une de ma page Coud ressemblent:

<body> 
    <header> 
     <h1><a href="/">My fabulous blog</a></h1> 
     <nav> 
     <ul> 
     <li><a href="#">Page one</a></li> 
     <li><a href="#">Page two</a></li> 
     </ul> 
     </nav> 
    </header> 

    <section> 
     <h1>Latest articles</h1> 
     <article> 
      <h1>Title</h1> 
      <p>I like turtles</p> 
     </article> 

     <article> 
      <h1>Title</h1> 
      <p>I like potatoes too</p> 
     </article> 

     <a href="#">Browse the archive.</a> 
    </section> 

    <aside> 
     <h2>Social</h2> 
     <ul> 
     <li>Twitter</li> 
     <li>Facebook</li> 
     <li>Github</li> 
     </ul> 
     </aside> 

    <footer>© 1546-2032</footer> 
    </body> 

donc quelque chose de très simple, et comme vous pouvez le voir, je ne pas utiliser de classe ni id.

Et le css ressemblerait à ceci:

body { 
     @include outer-container; 
    } 

    header { 
     @include span-columns(12); 
    } 

    section 
    { 
     @include span-columns(9); 
    } 
    aside 
    { 
    @include span-columns(3); 
    } 

    footer{ 
     @include span-columns(12); 
    } 

    header, aside, footer 
    { 
     @include omega; 
    } 

Je ne sais pas si je ne me trompe pas, mais, comme il est un ensemble de règles très non spécifique css, il est tout à fait une bonne pratique. Et si je dois styliser l'une de ces balises dans un autre contexte, une balise <header> à l'intérieur d'un <article> par exemple, l'utilisation d'une classe devrait écraser le sélecteur de type sans problème.

.article-header { 
    background-color: #eee; 
    @include span-columns(12); 
    } 

Par exemple

Mais, je ne suis pas sûr que c'est la bonne et j'ai entendu parler de la méthode EBM et je pensais que je pouvais utiliser à la fois comme en même temps, pour obtenir une belle base de évolutive .

Mais combien BEMed devrait être mon css?

Dois-je d'abord utiliser le sélecteur de balises pour ma mise en page principale, puis les classes de style BEM pour le style? Ou juste aller complètement dans BEM et utiliser des classes partout?

<header class="main-header"> 
    <h1 class="main-header__title"><a href="/">My fabulous blog</a></h1> 
    <nav class="main-header__nav"> 
     <ul class="main-header__links"> 
     <li class="main-header__item"><a href="#">Page one</a></li> 
     <li class="main-header__item"><a href="#">Page two</a></li> 
     </ul> 
    </nav> 
    </header> 

SCSS:

main-header { 
     &__title { 
     ... 
     } 
     &__nav { 
     ... 
     } 
     &__links { 
     ... 
     } 
     &__items { 
     ... 
     } 

    } 

Mais aussi

<body class="body"> 
    [...] 
    <header class="header"> 
    [...] 
    </header> 
    <section class="last-articles"> 
     <h1 class="last-articles__title">Latest articles</h1> 
     <article class="article"> 
      <h1 class="article__title">Title</h1> 
      <p class="article__p">I like turtles</p> 
      <p class="article__p">But I also liek potatoes.</p> 
      <p class="article__p">But I don't like them both in the same dish.</p> 
      <p class="article__p">Except in soup.</p> 

     </article> 

et (SCRT)

.body{ 
    @include outer-container; 
    } 
    .header 
    { 
    @include span-columns(12); 
    } 
    .last-articles 
    { 
     @include span-columns(9); 
     &__title { 

     } 
    } 
    .article 
    { 
     &__title{ 

     } 
     &__p{ 

     } 
    } 

ou tout simplement:

Mais aussi

<body> 
    [...] 
    <header> 
    [...] 
    </header> 
    <section class="last-articles"> 
     <h1 class="last-articles__title">Latest articles</h1> 
     <article class="article"> 
      <h1 class="article__title">Title</h1> 
      <p class="article__p">I like turtles</p> 
      <p class="article__p">But I also liek potatoes.</p> 
      <p class="article__p">But I don't like them both in the same dish.</p> 
      <p class="article__p">Except in soup.</p> 

     </article> 

et (SCRT)

body{ 
    @include outer-container; 
    } 
    header 
    { 
    @include span-columns(12); 
    } 
    .last-articles 
    { 
     @include span-columns(9); 
     &__title { 

     } 
    } 
    .article 
    { 
     &__title{ 

     } 
     &__p{ 

     } 
    } 

Je sais que cela ressemble à une question et je base notamment sur l'opinion sera probablement descendre voté pour cela, mais je pense qu'il est plus de comprendre comment Bourbon/Neat et BEM fonctionnent et comment lisible, réutilisable et performant le code pourrait être optimisé.

Répondre

0

Utilisez seulement des sélecteurs de classe, cela rendra votre code beaucoup plus lisible.

0

Je recommande également d'utiliser des cours pour la plupart de vos besoins de style. Cela crée un terrain de jeu égal en termes de spécificité et augmente la réutilisabilité et la portabilité de vos styles. Bourbon et Neat sont juste des bibliothèques pour vous aider à écrire Sass un peu plus efficacement; ils ne devraient pas vous forcer sur un certain chemin architectural. BEM est un bon moyen d'organiser les cours et d'améliorer la clarté pour les autres développeurs.HTML sémantique est tout sur la sémantique du contenu , mais ne laissez pas cela entraver la clarté du code. Je suggère de baliser correctement le contenu pour le représenter de manière lisible par machine (titres de balisage avec éléments de titre, listes avec éléments de liste, en-têtes header, etc.) et en utilisant des classes pour injecter du style sur ce contenu. Mais les deux n'ont pas nécessairement besoin d'informer l'autre.