英語原文: Principles of writing constant, idiomatic CSS (原文版) 翻訳者: tslmy 原文アドレス: https://github.com/necolas/idiomatic-css/blob/master/translations/zh-CN/ README. md
次のドキュメントは、合理的な CSS 開発スタイル ガイドの概要を示しています。このガイダンス文書は、開発者が既存の共通の相乗効果のある記述スタイルを使用することを強く推奨しています。独自のスタイル ガイドを作成するには、コンテンツを選択的に組み込む必要があります。
このドキュメントは継続的に更新され、新しいアイデアは歓迎されます。もっと貢献してください。
ありがとうございます
プロジェクトの成功 コミュニティのメンバーとして、自分のためだけにコードを書くのは悪い行為であることを認識することが重要です。コードを何千人もの人が使用する場合は、自分のためではなく、できるだけ明示的なコードを書く必要があります。 IQ を示すには好みの設定を使用してください。」 - Idan Gazit
ヒント: 空白の形式を決定したら、EditorConfig ファイル (または同等のもの) を使用して、コード ベース間でこの基本的な空白の規則を維持できます。
3. コメント
コメントのスタイルは、コードベース全体で簡潔かつ一貫している必要があります。
CSS の例:
/* ========================================================================== 区块代码注释 ========================================================================== *//* 次级区块代码注释 ========================================================================== *//** * “Doxygen式注释格式”的简短介绍 * * 较长的说明文本从这里开始,这是这段文字的第一句话,而且这句话还 * 没结束,过了好一会儿,我了个去终于结束了,烦不烦啊。 * * 当需要进行更细致的解释说明、提供文档文本时,较长的说明文本就很 * 有用了。这种长长的说明文本,可以包括示例HTML啦、链接啦等等其 * 他你认为重要或者有用的东西。 * * @tag 这是一个叫做“tag”的标签。 * * TODO: 这个“‘需做’陈述”描述了一个接下来要去做的小工作。这种文本, * 如果超长了的话,应该在80个半角字符(如英文)或40个全角字符( * 如中文)后便换行,并(在“ * ”的基础上)再在后面缩进两个空格。 *//* 一般的注释 */
.selector-1,.selector-2,.selector-3[type="text"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; display: block; font-family: helvetica, arial, sans-serif; color: #333; background: #fff; background: linear-gradient(#fff, rgba(0, 0, 0, 0.8));}.selector-a,.selector-b { padding: 10px;}
小規模な開発チームでは、関連するプロパティ宣言 (位置決めやボックス モデルなど) をまとめることもできます。
.selector { /* Positioning */ position: absolute; z-index: 10; top: 0; right: 0; bottom: 0; left: 0; /* Display & Box Model */ display: inline-block; overflow: hidden; box-sizing: border-box; width: 100px; height: 100px; padding: 10px; border: 10px solid #333; margin: 10px; /* Other */ background: #000; color: #fff; font-family: sans-serif; font-size: 16px; text-align: right;}
例外とわずかなオフセットの原則
.selector-1 { width: 10%; }.selector-2 { width: 20%; }.selector-3 { width: 30%; }
对于以逗号分隔并且非常长的属性值——例如一堆渐变或者阴影的声明——可以放在多行中,这有助于提高可读性,并易于生成有效的diff。这种情况下有多种格式可以选择,以下展示了一种格式。
.selector { box-shadow: 1px 1px 1px #000, 2px 2px 1px 1px #ccc inset; background-image: linear-gradient(#fff, #ccc), linear-gradient(#f3c, #4ec);}
不同的CSS预处理有着不同的特性、功能以及语法。编码习惯应当根据使用的预处理程序进行扩展,以适应其特有的功能。推荐在使用SCSS时遵守以下指导。
.selector-1 { @extend .other-rule; @include clearfix(); @include box-sizing(border-box); width: x-grid-unit(1); // other declarations}
不要试着把自己当作编译器或者预处理器,因此命名的时候尽量采用清晰的、有意义的名字。另外,对于html文件和css文件中的代码,尽量采用一致的命名规则。
/* 没有意义的命名 */.s-scr { overflow: auto;}.cb { background: #000;}/* 比较有意义的命名方式 */.is-scrollable { overflow: auto;}.column-body { background: #000;}
下面是含有上述约定的示例代码:
/* ========================================================================== Grid layout ========================================================================== *//** * Column layout with horizontal scroll. * * This creates a single row of full-height, non-wrapping columns that can * be browsed horizontally within their parent. * * Example HTML: * * <div class="grid"> * <div class="cell cell-3"></div> * <div class="cell cell-3"></div> * <div class="cell cell-3"></div> * </div> *//** * Grid container * * Must only contain `.cell` children. * * 1. Remove inter-cell whitespace * 2. Prevent inline-block cells wrapping */.grid { height: 100%; font-size: 0; /* 1 */ white-space: nowrap; /* 2 */}/** * Grid cells * * No explicit width by default. Extend with `.cell-n` classes. * * 1. Set the inter-cell spacing * 2. Reset white-space inherited from `.grid` * 3. Reset font-size inherited from `.grid` */.cell { position: relative; display: inline-block; overflow: hidden; box-sizing: border-box; height: 100%; padding: 0 10px; /* 1 */ border: 2px solid #333; vertical-align: top; white-space: normal; /* 2 */ font-size: 16px; /* 3 */}/* Cell states */.cell.is-animating { background-color: #fffdec;}/* Cell dimensions ========================================================================== */.cell-1 { width: 10%; }.cell-2 { width: 20%; }.cell-3 { width: 30%; }.cell-4 { width: 40%; }.cell-5 { width: 50%; }/* Cell modifiers ========================================================================== */.cell--detail,.cell--important { border-width: 4px;}
对于css代码库来说,如何组织代码文件是很重要的,尤其对于那些很大的代码库显得更加重要。这里介绍几个组织代码的建议:
任何一个项目,都应该有一个build的过程,在这个阶段我们可以通过工具对代码进行检测,测试,压缩等等,还可以为生产环境准备好带有版本号的代码。在这里我推荐一下grunt这个工具,我感觉它很不错。
感谢所有对idiomatic.js作出贡献的网友。