ここで使用されている用語についての質問については、Wikipedia のカスケード スタイル シートの記事の構文セクションを参照してください。
非推奨
css.selector, .selector.secondary, .selector[type=text] { padding:15px; margin:0px 0px 15px; background-color:rgba(0, 0, 0, 0.5); box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF}
推奨
css.selector,.selector.secondary,.selector[type="text"] { padding: 15px; margin-bottom: 15px; background-color: rgba(0,0,0,.5); box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;}
関連するプロパティの宣言は、グループ化して次の順序で並べる必要があります:
他のプロパティはコンポーネントの内部にのみ影響を与えるか、プロパティの最初の 2 つのグループに影響を与えないため、後ろにランクされます。
属性の完全なリストとその順序については、「Recess」を参照してください。
@import は使用しないでください
タグと比較して、@import コマンドは追加のリクエストの数が増えるだけでなく、予期しない問題を引き起こします。代替案は次のとおりです:複数の 要素を使用する
非推奨
css.declaration.order { /* Positioning */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* Box-model */ display: block; float: right; width: 100px; height: 100px; /* Typography */ font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; color: #333; text-align: center; /* Visual */ background-color: #f5f5f5; border: 1px solid #e5e5e5; border-radius: 3px; /* Misc */ opacity: 1;}
html<!-- @imports --><style> @import url("more.css");</style>
html<!-- 使用 link 元素 --><link rel="stylesheet" href="core.css">
特定のメーカーの接頭辞付き属性を使用する場合、各属性の値はインデントによって垂直方向に整列され、複数行の編集が容易になります。
Textmate で、[テキスト] → [選択範囲内の各行を編集] (??A) を使用します。 Sublime Text 2 では、選択 → 前の行を追加 (??↑) および選択 → 次の行を追加 (??↓) を使用します。
推奨
css.element { ... }.element.avatar { ... }.element.selected { ... }@media (min-width: 480px) { .element { ...} .element.avatar { ... } .element.selected { ... }}
css.selector { -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15); box-shadow: 0 1px 2px rgba(0,0,0,.15);}
短縮されたプロパティ宣言の使用は、すべての値を明示的に設定する必要がある状況に限定する必要があります。省略された属性宣言の一般的な悪用は次のとおりです:
MDN(Mozilla Developer Network)上一片非常好的关于shorthand properties 的文章,对于不太熟悉简写属性声明及其行为的用户很有用。
不推荐
css.element { margin: 0 0 10px; background: red; background: url("image.jpg"); border-radius: 3px 3px 0 0;}
推荐
css.element { margin-bottom: 10px; background-color: red; background-image: url("image.jpg"); border-top-left-radius: 3px; border-top-right-radius: 3px;}
避免非必要的嵌套。这是因为虽然你可以使用嵌套,但是并不意味着应该使用嵌套。只有在必须将样式限制在父元素内(也就是后代选择器),并且存在多个需要嵌套的元素时才使用嵌套。
无嵌套
css.table > thead > tr > th { … }.table > thead > tr > td { … }
嵌套
css.table > thead > tr { > th { … } > td { … }}
代码是由人编写并维护的。请确保你的代码能够自描述、注释良好并且易于他人理解。好的代码注释能够传达上下文关系和代码目的。不要简单地重申组件或 class 名称。
对于较长的注释,务必书写完整的句子;对于一般性注解,可以书写简洁的短语。
不推荐
css/* Modal header */.modal.header { ...}
推荐
css/* 包裹 .modal-title 与 .modal-close 的外围容器 */.modal.header { ...}
class 名称中只能出现小写字符和破折号(dashe)(不是下划线,也不是驼峰命名法)。同时,破折号只有在多个单词必须连着同时存在才具有真实意义时使用,用于区分两个不同的单词,例如,.button 与 .danger.button ,但是不允许使用 .danger-button 或者 .button.danger。
不允许使用简写。但 class 名称应当尽可能短,并且意义明确。使用有意义的名称。使用有组织的或目的明确的名称,不要使用表现形式(presentational)的名称。
使用 .js-* class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。
在为 Sass 和 Less 变量命名是也可以参考上面列出的各项规范。
不推荐
css.t { ... }.red { ... }.header { ... }
推荐
css.tweet { ... }.important { ... }.tweet.header { ... }
对于通用元素使用 class ,这样利于渲染性能的优化。对于经常出现的组件,避免使用属性选择器(例如,[class^="..."])。浏览器的性能会受到这些因素的影响。
选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3 。
只有在必要的时候才将 class 限制在最近的父元素内(也就是后代选择器)(例如,不使用带前缀的 class 时 -- 前缀类似于命名空间)。
不推荐
cssspan { ... }.page-container #stream .stream-item .tweet .tweet-header .username { ... }.avatar { ... }
推荐
css.avatar { ... }.tweet-header .username { ... }.tweet .avatar { ... }
css/* * 组件 */.element { ... }/* * 组件 * * 有的时候也可能一个组件是很复杂的 */.element { ... }/* 组件的子组件 */.element-heading { ... }