这是如何构造bem?
is this how to structure bem?
我有一个加载 overlay/page,这就是我通过 BEM 构建它的方式。我对它应该如何嵌套有点困惑:
<div id="js-load-page" class="load">
<div class="wrapper">
<div class="u-full-height u-center-inner">
<div id="js-welcome" class="welcome">
<p id="js-welcome-text-set-1" class="welcome__sub-heading type-color--green">
text text text
</p>
<h1 id="js-welcome-text-set-2" class="welcome__heading">
Where text text
</h1>
<h1 id="js-welcome-text-set-3" class="welcome__heading">
Let our expertise be your success.
</h1>
<a href="#" id="js-welcome-cta" class="cta">
discover
<div></div>
</a>
</div>
</div>
</div>
</div>
这是我的着陆页:
<div class="land">
<nav class="nav">
<div class="wrapper">
<a href="" class="nav__logo">
<img src="images/CB-Logo-2.png" alt="">
</a>
<ul class="nav__list">
<li class="nav__item">
<span class="hamburger">
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="hamburger__components" stroke="#FFFFFF" stroke-width="1" fill="none">
<path d="M9,17 L27,17" id="middle-bun"></path>
<path d="M9,22 L27,22" id="bottom-bun"></path>
<path d="M9,12 L27,12" id="top-bun"></path>
<ellipse id="border" cx="18" cy="18" rx="16" ry="16"></ellipse>
</g>
</svg>
</span>
</li>
<li class="nav__item">
<a href="">About</a>
</li>
<li class="nav__item">
<a href="">Team</a>
</li>
<li class="nav__item">
<a href="">News & Media</a>
</li>
<li class="nav__item">
<a href="">Contact us</a>
</li>
</ul>
</div>
</nav>
<main class="base">
<div class="base__image base__image--land"></div>
<div class="base__texture">
<div class="texture"></div>
</div>
<div class="base__grid">
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
</div>
</main>
<div class="wrapper">
<div class="u-full-height u-center-inner">
<div class="intro">
<h1 class="intro__heading">
A text text
<span class="type-color--green">
text text
</span>
</h1>
<p class="intro__description">
text text text
</p>
</div>
</div>
</div>
</div>
这是 BEM 的正确方法吗?还是看起来很混乱?如何改进?如果某些东西在它自己的块中,只有那部分是 BEM?在 DRY 的意义上它是如何工作的?示例 .intro 将在网站的每个部分中使用..
谢谢。
我觉得还行。
您刚刚将 BEM 与其他 class 语法混合使用 (class="u-full-height u-center-inner")。在我看来,您也会在许多项目中发现这一点。
你关于 DRY 方法的问题更难回答。
您通常会使用一些模板引擎,您可以在其中将介绍部分作为组件编写,并且只将其包含到主模板中。最后,您总是会在 HTML 中有重复的代码,我认为这很好,因为您肯定希望网站上有可重用的元素。
我有一个加载 overlay/page,这就是我通过 BEM 构建它的方式。我对它应该如何嵌套有点困惑:
<div id="js-load-page" class="load">
<div class="wrapper">
<div class="u-full-height u-center-inner">
<div id="js-welcome" class="welcome">
<p id="js-welcome-text-set-1" class="welcome__sub-heading type-color--green">
text text text
</p>
<h1 id="js-welcome-text-set-2" class="welcome__heading">
Where text text
</h1>
<h1 id="js-welcome-text-set-3" class="welcome__heading">
Let our expertise be your success.
</h1>
<a href="#" id="js-welcome-cta" class="cta">
discover
<div></div>
</a>
</div>
</div>
</div>
</div>
这是我的着陆页:
<div class="land">
<nav class="nav">
<div class="wrapper">
<a href="" class="nav__logo">
<img src="images/CB-Logo-2.png" alt="">
</a>
<ul class="nav__list">
<li class="nav__item">
<span class="hamburger">
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="hamburger__components" stroke="#FFFFFF" stroke-width="1" fill="none">
<path d="M9,17 L27,17" id="middle-bun"></path>
<path d="M9,22 L27,22" id="bottom-bun"></path>
<path d="M9,12 L27,12" id="top-bun"></path>
<ellipse id="border" cx="18" cy="18" rx="16" ry="16"></ellipse>
</g>
</svg>
</span>
</li>
<li class="nav__item">
<a href="">About</a>
</li>
<li class="nav__item">
<a href="">Team</a>
</li>
<li class="nav__item">
<a href="">News & Media</a>
</li>
<li class="nav__item">
<a href="">Contact us</a>
</li>
</ul>
</div>
</nav>
<main class="base">
<div class="base__image base__image--land"></div>
<div class="base__texture">
<div class="texture"></div>
</div>
<div class="base__grid">
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
<div class="grid-line"></div>
</div>
</main>
<div class="wrapper">
<div class="u-full-height u-center-inner">
<div class="intro">
<h1 class="intro__heading">
A text text
<span class="type-color--green">
text text
</span>
</h1>
<p class="intro__description">
text text text
</p>
</div>
</div>
</div>
</div>
这是 BEM 的正确方法吗?还是看起来很混乱?如何改进?如果某些东西在它自己的块中,只有那部分是 BEM?在 DRY 的意义上它是如何工作的?示例 .intro 将在网站的每个部分中使用..
谢谢。
我觉得还行。
您刚刚将 BEM 与其他 class 语法混合使用 (class="u-full-height u-center-inner")。在我看来,您也会在许多项目中发现这一点。
你关于 DRY 方法的问题更难回答。 您通常会使用一些模板引擎,您可以在其中将介绍部分作为组件编写,并且只将其包含到主模板中。最后,您总是会在 HTML 中有重复的代码,我认为这很好,因为您肯定希望网站上有可重用的元素。