2012-05-08 3 views
3

Twitter's Bootstrap libraryを使用してプライマリボタンを作成するには、class="btn btn-primary"のような2つのCSSクラスを使用する必要があります。Twitter Bootstrapはボタンに複数のクラスを必要とするのはなぜですか?

なぜこのようにAPIを設計したのですか?btn-primaryには、btnに含まれるすべてのCSSが含まれていましたか?純粋にコードの重複とファイルサイズを節約するのか、それとももっと複雑な理由がありますか?

答えて

5

これはOOCSSの原則によるものです。要素から特定のスタイルを切り離すことで、コードとスタイルの再利用が向上し、CSS内のオブジェクトをすばやく簡単に変更できるようになります。たとえば、.btnクラスではボタンにデフォルトの灰色のスタイルを設定しているため、.btnクラスのすべてのボタンは同じスタイルになりますが、あらかじめ定義されたスタイルで、同じボタンクラスを拡張して、デフォルトの.btnプロパティを何度も繰り返し書く必要があります。 .btn-warningと他のすべてのボタンステートクラスのCSSを見ると、ボタンの色とスタイルを定義するだけで、ボタンクラスをもう一度書き直す必要はありません。

.btn-warning:hover, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { 
    background-color: #F89406; 
} 

これにより、読みやすく、短く、よりクリーンなスタイルシートが可能になります。

+0

これはおもしろい点ですが、TwitterがLESSでコンパイルされていることを考慮すると、開発者としてこれらのDRYの利点をすべて得ることができ、結果だけが繰り返しです。 – Steve

+0

@Steveコンパイルされたlessは、OOCSSと同じ利点をもたらすはずです。今後登場するブートストラップコンポーネントのバージョンは、この原則[roadmap](http://blog.getbootstrap.com/2012/03/coming-up-in-bootstrap/)に基づいて構築されています。 –

6

btn-primaryはデフォルトのボタンではないためです。 btn-successが緑色に変わるような青色に変わるCSSです。

デフォルトのボタンは灰色です。

+0

右。そしてスティーブ、それはコードの繰り返しを節約することです。 '.btn'はボタンのルック・アンド・フィールの主要な構造をすべて持っていますが、追加のクラスは色の変更を非常に簡単にします。私はTwitter Bootstrapを使っていませんが、個人的にも仕事でも、私の多くのプロジェクトでは、一般的なボタンクラスを持っていて、他のクラスを色付けできるという同じ方法を行っています。 –

関連する問題