私はかなり大規模なプロジェクトを開始しており、CSS の前処理に LESS を使用するオプションを検討しています。
LESS の便利な点は、たとえば以下を含む mixin を定義できることです。
.border-radius(@radius) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
-o-border-radius: @radius;
-ms-border-radius: @radius;
border-radius: @radius;
}
そして、それをクラス宣言で次のように使用します
.rounded-div {
.border-radius(10px);
}
出力CSSを次のように取得します。
.rounded-div {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-o-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
これは、ブラウザのプレフィックスの場合に非常に役立ちます。ただし、これと同じ概念を使用して、一般的に使用される css をカプセル化できます。たとえば、次のようになります。
.column-container {
overflow: hidden;
display: block;
width: 100%;
}
.column(@width) {
float: left;
width: @width;
}
そして、デザインで列が必要なときはいつでもこの mixin を使用します。
.my-column-outer {
.column-container();
background: red;
}
.my-column-inner {
.column(50%);
font-color: yellow;
}
(もちろん、プリプロセッサを使用すると、これを簡単に拡張してさらに便利にすることができます。たとえば、列の数とコンテナーの幅を変数として渡し、列の数とコンテナーの幅に応じて LESS が各列の幅を決定するようにします! )
これに関する問題は、コンパイルすると、最終的な css ファイルに 100 個のそのような宣言があり、コピーして貼り付けると、ファイルが巨大で肥大化して繰り返しになることです。これに代わる方法は、列レイアウト オプションごとに事前定義されたクラスを持つグリッド システムを使用することです。 c-25 を使用して、2 列、3 列、4 列のレイアウトに対応し、これらのクラスを私の dom に使用します。
私は余分なクラスのアイデアが本当に嫌いです.経験から、それはDOMの肥大化につながります(グリッドクラスをアタッチするためだけに余分なdivを作成します)。また、html/css の最も基本的なチュートリアルでは、DOM をスタイリングから分離する必要があることがわかります。グリッド クラスはスタイリングに関連しています。私にとっては、上記の .rounded-div の例に「border-radius-10」クラスを追加するのと同じです!
一方で、コードの繰り返しによって css ファイルが大きくなることも欠点です。
私の質問は、どれをお勧めし、どちらを使用していますか?
また、最適化に最適なソリューションはどれですか? ファイルサイズが大きいことは別として、ブラウザが複数のクラスを大きなcssファイルよりも高速にレンダリングするかどうか、またはその逆かどうかについての研究はありますか?
ご意見をお待ちしております。