前端培训文档(3.2.1)

前端培训文档(3.2.1)


​​​​​​​CSS规范

<p><strong>每个 Vue 组件的最外层容器采用 组件名+com 的方式命名,如:</strong></p> <pre><code class="language-html">&amp;lt;template&amp;gt; &amp;lt;div class=&amp;quot;paging-table-com&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; &amp;lt;/template&amp;gt;</code></pre> <p>这样做是为了更快速定位一个组件,而不用先通过 vue-devtool 找到组件名,然后再去项目里找。 <strong>其余元素的命名按照下面的规则:</strong> 1、命名规则 按照 B--E-M 的书写格式,详情可见BEM介绍。 B: 代表 Block 每个 Block 都由多个 Element 组成,应尽量保证每个组件只有一个 Block:</p> <pre><code class="language-html">&amp;lt;template&amp;gt; &amp;lt;div class=&amp;quot;paging-root&amp;quot;&amp;gt; &amp;lt;ul class=&amp;quot;paging-list&amp;quot;&amp;gt; &amp;lt;li class=&amp;quot;paging-item&amp;quot;&amp;gt; &amp;lt;a class=&amp;quot;paging-btn&amp;quot;&amp;gt;上一页&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt; ... &amp;lt;li class=&amp;quot;paging-item&amp;quot;&amp;gt; &amp;lt;a class=&amp;quot;paging-link&amp;quot;&amp;gt;5&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt; ... &amp;lt;li class=&amp;quot;paging-item&amp;quot;&amp;gt; &amp;lt;a class=&amp;quot;paging-btn&amp;quot;&amp;gt;下一页&amp;lt;/a&amp;gt; &amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/template&amp;gt;</code></pre> <p>当一个 Block 实在无法满足使用的时候,再将该 Block 按结构划分为多个部分,这几个部分作为其它具体元素的 Block。</p> <pre><code class="language-html">&amp;lt;template&amp;gt; &amp;lt;div class=&amp;quot;article-root&amp;quot;&amp;gt; &amp;lt;div class=&amp;quot;article-header&amp;quot;&amp;gt; &amp;lt;ul class=&amp;quot;header-list&amp;quot;&amp;gt; &amp;lt;li class=&amp;quot;header-item&amp;quot;&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt; ... &amp;lt;div class=&amp;quot;article-main&amp;quot;&amp;gt; &amp;lt;ul class=&amp;quot;main-list&amp;quot;&amp;gt; &amp;lt;li class=&amp;quot;main-item&amp;quot;&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/template&amp;gt;</code></pre> <p>E: 代表 Element 每一个 Element 都应该具有独立性,可以用在 Block 的任何地方,而不需要做额外处理。</p> <pre><code class="language-html">&amp;lt;template&amp;gt; &amp;lt;div class=&amp;quot;comment-root&amp;quot;&amp;gt; ... &amp;lt;div class=&amp;quot;comment-header&amp;quot;&amp;gt; &amp;lt;p class=&amp;quot;comment-txt&amp;quot;&amp;gt;重要的是命名的思想,而不是完全照搬。&amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt; ... &amp;lt;div class=&amp;quot;comment-main&amp;quot;&amp;gt; &amp;lt;p class=&amp;quot;comment-txt&amp;quot;&amp;gt;赞同!&amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/template&amp;gt;</code></pre> <p>另外每一个 Element 都可能存在不同的状态,比如选中状态,激活状态,以及大小颜色等。</p> <pre><code class="language-html">&amp;lt;template&amp;gt; &amp;lt;div class=&amp;quot;login-root&amp;quot;&amp;gt; ... &amp;lt;input class=&amp;quot;login-input&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt; &amp;lt;input class=&amp;quot;login-input login-input-error&amp;quot; type=&amp;quot;text&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt; &amp;lt;/template&amp;gt;</code></pre> <p>M: 代表 Modifier Modifier 是 Element 的修饰符,用来区分 Element 可能存在不同的状态。 在一些特殊情况下,通常是 UI 做的不够标准统一时候,单一的 Element 内外边距不能即满足独立可复用性,又满足 UI 样式。这时 Modifier 也可以用来表示元素的容器,比如:</p> <pre><code class="language-html">&amp;lt;template&amp;gt; &amp;lt;div class=&amp;quot;login-root&amp;quot;&amp;gt; ... &amp;lt;div class=&amp;quot;login-form-wrap&amp;quot;&amp;gt; &amp;lt;form class=&amp;quot;login-form&amp;quot;&amp;gt; ... &amp;lt;/form&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/template&amp;gt;</code></pre> <p>2、书写规则 每个组件的 &lt;style&gt; 标签<strong><em>禁止</em></strong>添加 scoped 属性,但是主要最外层需要包含根节点标签类名class:</p> <h6>错误示范</h6> <pre><code class="language-html">&amp;lt;style scoped&amp;gt; ... &amp;lt;/style&amp;gt;</code></pre> <h6>正确示范</h6> <pre><code class="language-html">&amp;lt;style &amp;gt; .demo-com{ .a{ } } &amp;lt;/style&amp;gt;</code></pre> <p>选择器之间禁止嵌套,便于代码阅读和后期维护,以及避免权重所带来的影响:</p> <pre><code class="language-html">&amp;lt;!-- 好的写法 --&amp;gt; &amp;lt;style scoped&amp;gt; .news-list {} .news-item {} .news-txt {} &amp;lt;/style&amp;gt; &amp;lt;!-- 不允许的写法 --&amp;gt; &amp;lt;style scoped&amp;gt; .news-list {} .news-list .news-item {} .news-item .news-txt {} &amp;lt;/style&amp;gt;</code></pre> <p>css样式书写时按照定位、盒模型、样式、功能的顺序,比如:</p> <pre><code class="language-html">&amp;lt;style scoped&amp;gt; .news-list { /* 定位 */ position: absolute; left: 0; z-index: 10; /* 盒模型 */ float: left; display: block; flex: 1; align-items: center; width: 0; height: 0; padding: 0; margin: 0; border: 0; outline: 0; /* 样式 */ background: #fff; color: #fff; font: italic bold 12px/20px arial,sans-serif; /* 功能 */ transition: all 1s; transform: translate(10px, 10px); cursor: pointer; } &amp;lt;/style&amp;gt;</code></pre> <p>3、命名常用词汇 Block 与 Element 之间不需要进行层层嵌套,父级的 Element 也可以作为子级的 Block,这样能避免当元素嵌套较深时,class 需要写很长一串的问题。 常用块(Block) 结构类:header, nav, subnav, menu, submenu, main, aside, footer 内容类:summary, banner, article, login, register, form, news 对于一个简单的组件,优先使用组件名作为 Block,不用把组件名全写出来,选其中一个典型单词就可以,比如:</p> <pre><code class="language-html">&amp;lt;div class=&amp;quot;morning-news-root&amp;quot;&amp;gt; &amp;lt;div class=news-header&amp;gt; &amp;lt;p class=&amp;quot;news-title&amp;quot;&amp;gt;早间新闻&amp;lt;/p&amp;gt; &amp;lt;a class=&amp;quot;news-btn&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;更多&amp;lt;/a&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;ul class=&amp;quot;news-list&amp;quot;&amp;gt; &amp;lt;li class=&amp;quot;news-item&amp;quot;&amp;gt;特普朗退出TTP&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt; &amp;lt;/div&amp;gt;</code></pre> <p>常用元素(Element) 结构类:header, main, content, footer 文本类:txt, link, 表单类:form, input, label 表格类:table, cloumn, row, cell 列表类:list, item, filed 按钮:button 常用修饰符(Modifier) 状态类:primary, success, warning, error, active 形状类:large, big, small 样式类:fl, center, middle, fr 容器类:box, wrap</p>

页面列表

ITEM_HTML