Welche Informationen möchten Sie erhalten, wenn Sie eine Klasse sehen?
An diesem Punkt möchten Sie, dass diese Klasse alle oben genannten Probleme auf einen Blick löst, und BEM lohnt sich. Was ist BEM BEM (Block, Element, Modifier) ist eine Front-End-Benennungsmethode für die komponentenbasierte Webentwicklung, hauptsächlich für CSS. Die Idee dahinter besteht darin, die Benutzeroberfläche in unabhängige Teile aufzuteilen. Dies macht die Schnittstellenentwicklung selbst bei komplexen Benutzeroberflächen einfach und schnell und ermöglicht die Wiederverwendung vorhandenen Codes ohne Kopieren und Einfügen. Vorteile
So verwenden Sie BEM Block Eine funktional unabhängige Seitenkomponente, die wiederverwendet werden kann Blöcke sollten ihre Umgebung nicht beeinflussen, das heißt, Sie sollten weder die äußere Geometrie (Ränder) noch die Position des Blocks festlegen. <!-- Gut --> <div Klasse = "Header" > </div > <!-- schlecht roter Text soll das Aussehen beschreiben --> <div Klasse = "roter Text" > </div> Element Zusammengesetzter Teil eines Blocks, kann nicht allein verwendet werden Die Struktur des vollständigen Namens des Elements lautet Blockname__Elementname <!-- Block `Suchformular` --> <form class="Suchformular"> <!-- `Eingabeschaltfläche`-Element im `Suchformular`-Block --> <input class="Suchformular__input"> <button class="search-form__button">Suchen</button> </form> Ein Element ist immer Teil eines Blocks und nicht eines anderen Elements. Elementnamen können daher nicht als Hierarchie von block__elem1__elem2 definiert werden. <!-- Gut Folgen Sie `block-name__element-name` --> <form class="Suchformular"> <div Klasse="Suchformular__Inhalt"> <input class="Suchformular__input"> <button class="search-form__button">Suchen</button> </div> </form> <!-- schlecht „search-form__content__button“ folgt nicht „block-name__element-name“ --> <form class="Suchformular"> <div Klasse="Suchformular__Inhalt"> <input class="Suchformular__Inhalt__Input"> <button class="search-form__content__button">Suchen</button> </div> </form> Das Element ist immer Teil eines Blocks und Sie sollten es nicht getrennt vom Block verwenden. <form class="Suchformular"> <!-- Gut Das Element befindet sich innerhalb des Blocksuchformulars --> <input class="Suchformular__input"> <button class="search-form__button">Suchen</button> </form> <form class="search-form"></form> <!-- schlecht Das Element befindet sich nicht im Blocksuchformular --> <input class="Suchformular__input"> <button class="search-form__button">Suchen</button> Modifikator Eine Entität, die das Aussehen, den Zustand oder das Verhalten eines Blocks oder Elements definiert Zwei Arten von Modifikatoren Boolescher Wert Der Aufbau des vollständigen Namens eines Modifikators folgt folgendem Muster:
<form class="Suchformular Suchformular_fokussiert"> <input class="Suchformular__input"> <!-- 'deaktiviert' ist ein Element von 'Schaltfläche' --> <button class="search-form__button search-form__button_disabled">Suchen</button> </form> Schlüsselwert Der Aufbau des vollständigen Namens eines Modifikators folgt folgendem Muster:
<form class="Suchformular Suchformular_Thema_Inseln"> <input class="Suchformular__input"> <!-- Gut Der Wert des Modifikators `size` von `button` ist `m` --> <button class="search-form__button search-form__button_size_m">Suchen</button> </form> <form class="Suchformular Suchformular_Themeninseln Suchformular_Thema_Lite"> <input class="Suchformular__input"> <!-- schlecht Sie können nicht zwei verschiedene Werte desselben Modifikators gleichzeitig verwenden --> <button class="Suchformular__button Suchformular__Schaltflächengröße_s Suchformular__Schaltflächengröße_m"> </button> </form> Ein Modifikator kann nicht isoliert von dem Block oder Element verwendet werden, das er modifiziert. Modifikatoren sollten das Aussehen, das Verhalten oder den Zustand einer Entität ändern, nicht ersetzen. <!-- Gut --> <form class="Suchformular Suchformular_Thema_Inseln"> <input class="Suchformular__input"> <button class="search-form__button">Suchen</button> </form> <!-- schlecht Blockname „Suchformular“ fehlt --> <form class="search-form_theme_islands"> <input class="Suchformular__input"> <button class="search-form__button">Suchen</button> </form> Vorteile des Hinzufügens von Blocknamen zu Modifikatoren und Elementnamen
Wann sollten Sie BEM einsetzen?
.verstecken { Anzeige: keine !wichtig; } Namenskonventionen Doppelter Unterstreichungsstil
CamelCase-Stil
React-Benennungsparadigma
Keine Namespace-Stile
Allgemeine CSS-Benennung Beispiel Vant-Komponenten-CSS-Benennung Der verwendete Benennungsstil ist der doppelte Unterstrich: Blockname__Elementname-Modifikatorname <div Klasse="van-doc"> <div Klasse="van-doc-header"> <div Klasse="von-doc-row"> <div Klasse="van-doc-header__top"> <a class="van-doc-header__logo">Suche</a> <ul Klasse="van-doc-header__top-nav"> <li Klasse="van-doc-header__top-nav-item"> <a class="van-doc-header__logo-link"> </li> </ul> </div> </div> </div> <div Klasse="van-doc-container van-doc-row van-doc-container--mit-Simulator"> ...... </div> </div> Weui-Komponenten-CSS-Benennung Die verwendete Benennung ist der React-Benennungsstil: block-name__element-name_modifier-name <div Klasse="Seitenschaltfläche js_show"> <div Klasse="page__hd"> <h1 class="page__title">Schaltfläche</h1> <p class="page__desc">Schaltfläche</p> </div> <div Klasse="page__bd"> <div Klasse="button-sp-area"> <a class="weui-btn weui-btn_primary">Hauptbedienung der Seite</a> <a class="weui-btn weui-btn_loading">Hauptvorgang der Seite</a> <a class="weui-btn weui-btn_disabled>Hauptbedienung der Seite</a> <a class="weui-btn weui-btn_default">Sekundäre Seitenoperationen</a> <a class="weui-btn weui-btn_warn">Warnvorgänge</a> </div> .... <div Klasse="button-sp-area Zelle"> BEM Spezifikationsvalidierungstool Stylelint-Selektor-BEM-Muster Dies ist das Ende dieses Artikels über die Verwendung von BEM-Namensstandards in CSS. Weitere relevante CSS-BEM-Namensstandards finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! |
<<: Linux-Installation Apache-Server-Konfigurationsprozess
>>: Details zum MySQL-Index-Pushdown
Vorwort NFS (Network File System) bedeutet Netzwe...
Die einfachste Store-Anwendung in Vue ist die glo...
1. Einleitung Ich möchte Selenium verwenden, um D...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort: Verwenden Sie die Debugleiste, um den Dok...
*******************Einführung in die HTML-Sprache ...
Modulares Cocos Creator-Skript Mit Cocos Creator ...
Inhaltsverzeichnis 1 Einführung in den neuen Oper...
Ersetzen Sie ihn durch den optimalen Datenbankver...
Docker Compose Docker Compose unterteilt die verw...
Physisch gesehen besteht eine InnoDB-Tabelle aus ...
Die vertikal benachbarten Kanten zweier oder mehr...
SQLyog stellt eine Verbindung zu MySQL her, Fehle...
Experimentelle Umgebung: MySQL 5.7.22 Binäres Log...
In diesem Artikelbeispiel wird der spezifische Co...