bem。フロントエンド開発のほとんどすべてのテクノロジーと同様に、BEM形式でCSSを作成すると偏光を引き起こす可能性があります。しかし、私のTwitterのソーシャルサークルでは、少なくとも人気のあるCSSメソッドの1つです。
私は個人的にBemは良いと思います、そしてあなたはそれを使うべきだと思います。しかし、私はあなたがそれを使用しない理由も理解することができます。
BEMの意見が何であれ、それはいくつかの利点を提供します。最大の利点は、CSSカスケードでの特定の紛争を回避するのに役立つことです。これは、適切に使用すると、BEM形式で記述されたセレクターが同じ特異性スコア(0,1,0)を持つ必要があるためです。長年にわたり、私は多くの大規模なWebサイト(政府、大学、銀行を考えてください)にCSSを設計しました。これらの大きなプロジェクトは、Bemが本当に輝く場所を発見しました。 CSSを書くことは、あなたが書いたり編集しているスタイルがウェブサイトの他の部分に影響しないことを確信している場合、より楽しいです。
実際、場合によっては、特異性を追加することは完全に受け入れられると見なされます。たとえば、:hover
および::before
など、特異性スコアは0,1,1です。ただし、この記事の残りの部分では、他の特定の広がりを期待していないと仮定しましょう。 ?::after
、:is()
、:has()
など)と組み合わせてどのように使用するかについてお話したいと思います。 :where()
CSSセレクターレベル4仕様は、要素を選択するための強力で比較的新しい方法を提供します。私のお気に入りには、すべての最新のブラウザでサポートされており、ほとんどすべてのプロジェクトで安全に使用できるようになっている
、:is()
、:where()
が含まれます。 :not()
および:is()
は基本的に同じですが、特異性に異なる効果があることを除いて。具体的には、:where()
の特異性スコアは常に0,0,0です。はい、:where()
さえ具体的ではありません。同時に、:where(button#widget.some-class)
の特異性は、パラメーターリストの最も特定の要素の特異性です。したがって、使用できる2つの最新のセレクター間のカスケード仕上げに既に違いがあります。 :is()
リレーショナル擬似クラスもブラウザのサポートをすぐに獲得しています(私の意見では、これはグリッド以来のCSSの最大の新機能です)。ただし、執筆時点では、:has()
のブラウザサポートは、生産環境で使用するのに十分ではありません。 :has()
<code>/* ❌ 特异性分数:0,2,0 */ .something:not(.something--special) { /* 所有 something 的样式,除了特殊的 something */ }</code>
ああ、いや!その特定のスコアを見たことがありますか? BEMを使用すると、セレクターが0,1,0の特定のスコアを持つことを理想的に期待しています。なぜ0,2,0が良くないのですか?同様の拡張例を考えてみましょう:
<code>.something:not(a) { color: red; } .something--special { color: blue; }</code>2番目のセレクターがソースコードシーケンスに最終的に表示された場合でも、最初のセレクターのより高い特異性(0,1,1)が勝ち、
要素の色は赤に設定されます。つまり、BEMが正しく記述され、選択された要素がHTMLの.something--special
ベースクラスと.something
モディファイアクラスの両方を適用していると仮定します。 .something--special
ああ。では、今何をすべきか?
私が今言ったことを覚えています
そしてその特異性はゼロですか?これを活用できます::where()
<code>/* ✅ 特异性分数:0,1,0 */ .something:where(:not(.something--special)) { /* 等 */ }</code>)は、通常の特異性スコア0,1,0を取得します。しかし、
- およびそのすべての特異性は0であり、セレクターの特異性をさらに高めることはありません。 .something
:where()
:ここで、()により
私と同じように特異性についてあまり気にしない人(そして、おそらく多くの人が公平であるため)は、営巣にうまくやっています。いくつかのランダムなキーボードタイピングを使用すると、このようなCSSを取得する可能性があります(SASSを使用してシンプルさを使用していることに注意してください):
この例では、この例では
コンポーネントがあります。 (<code>.card { ... } .card--featured { /* 等 */ .card__title { ... } .card__title { ... } } .card__title { ... } .card__img { ... }</code>クラスを使用)「注目」カードの場合、カードのタイトルと画像は異なるスタイルである必要があります。ただし、現在ご存知のように、上記のコードによって引き起こされる特異性スコアは、システムの残りの部分と矛盾しています。
.card
頑固な特定の狂信者はこれを行うかもしれません:.card--featured
悪くないよね?率直に言って、これはかなりのCSSです。
modifierクラスを3つの要素(
、<code>.card { ... } .card--featured { ... } .card__title { ... } .card__title--featured { ... } .card__img { ... } .card__img--featured { ... }</code>、および
)に条件付きで追加する必要がありますが、実際の例では、より多くの要素を追加する必要があります。声明がたくさんあります。
--featured
セレクターは、特異性レベルを上げることなく、より少ないテンプレートロジックとBEMクラスの少ない書き込みを作成するのに役立ちます。 .card
.card__title
.card__img
以下はSASSのコンテンツと同じです(トレーリング対トレーニングに注意してください):
:where()
モディファイアクラスをさまざまな子要素に適用する代わりにこの方法を選択する必要があるかどうかは、個人の好みに依存します。しかし、少なくとも
<code>.card { ... } .card--featured { ... } .card__title { ... } :where(.card--featured) .card__title { ... } .card__img { ... } :where(.card--featured) .card__img { ... }</code>
bem htmlをお持ちでない場合はどうすればよいですか?
私たちは不完全な世界に住んでいます。時には、あなたのコントロールを超えたHTMLに対処する必要があります。たとえば、HTMLをスタイリングする必要があるサードパーティスクリプトを挿入します。これらのタグは通常、BEMクラス名を使用して書かれていません。場合によっては、これらのスタイルはクラスをまったく使用しませんが、IDです!
同様に、:where()
この問題を解決するのにも役立ちます。このソリューションは、存在することがわかっているDOMツリーのクラスを参照する必要があるため、少し不器用です。
<code>/* ❌ 特异性分数:0,2,0 */ .something:not(.something--special) { /* 所有 something 的样式,除了特殊的 something */ }</code>
を引用して、親要素は少し危険で制限的だと感じます。親クラスが変更された場合、または何らかの理由で存在しない場合はどうなりますか?より良い(しかしおそらく同様に不器用な)ソリューションは、代わりに:is()
を使用することです。 :is()
の特異性は、そのセレクターリストの中で最も特定のセレクターに等しいことに注意してください。
を使用するのではなく、:is()
を使用して、存在する(または希望!)存在するクラスを参照することができます。 :where()
<code>.something:not(a) { color: red; } .something--special { color: blue; }</code>常に存在する
は、body
要素を選択するのに役立ち、同じ#widget
クラスの存在は:is()
セレクターをクラスと同じ特異性スコア(0,1,0)にします。 .dummy-class
body
それだけです! :where()
これは、CSSをBEM形式で作成する際に得られた
がサポートされると、その特異性を元に戻すためにと組み合わせることができます。 :is()
:where()
あなたがBEMと完全に命名しているかどうかにかかわらず、セレクターの特異性が良いことであることに同意できることを願っています! :has()
と組み合わせることができます。 :is()
:where()
あなたがBEMと完全に命名しているかどうかにかかわらず、セレクターの特異性が良いことであることに同意できることを願っています! :has()
以上がCascadeをBEMと最新のCSSセレクターで飼育しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

@keyframesandcsstransitionsdifferincomplexity:@keyframesallowsfordeTailedAnimationのシーケンス、whilecsstransitionshandlesimplestatechanges.usecsstransitionsは、ButtonColorChanges、および@keyframesforintricateanimationslikerotatingingspinnnersを使用します。

私は知っています、私は知っています:たくさんのコンテンツ管理システムオプションが利用可能であり、私はいくつかテストしましたが、実際にはY&#039;知っているものはありませんでしたか?奇妙な価格設定モデル、困難なカスタマイズ、一部は全体になることさえあります&

CSSファイルをHTMLにリンクすることは、HTMLの一部で要素を使用することで実現できます。 1)タグを使用して、ローカルCSSファイルをリンクします。 2)複数のタグを追加することにより、複数のCSSファイルを実装できます。 3)外部CSSファイルは、そのような絶対URLリンクを使用します。 4)ファイルパスとCSSファイルの読み込み順序の正しい使用を確認し、パフォーマンスを最適化すると、CSSプリプロセッサを使用してファイルをマージできます。

FlexBoxまたはグリッドの選択は、レイアウト要件によって異なります。1)FlexBoxは、ナビゲーションバーなどの1次元レイアウトに適しています。 2)グリッドは、雑誌のレイアウトなどの2次元レイアウトに適しています。この2つは、レイアウト効果を改善するためにプロジェクトで使用できます。

CSSファイルを含める最良の方法は、タグを使用してHTMLパーツに外部CSSファイルを導入することです。 1.タグを使用して、外部CSSファイルを導入します。 2。小さな調整のために、インラインCSSを使用できますが、注意して使用する必要があります。 3.大規模プロジェクトでは、@Importを介して他のCSSファイルをインポートするために、SASS以下などのCSSプリプロセッサを使用できます。 4。パフォーマンスのために、CSSファイルをマージし、CDNを使用し、CSSNANOなどのツールを使用して圧縮する必要があります。

はい、Youはrelearnbothlexboxandgrid.1)FlexBoxisidealforone-Dimensional、FlexiblleayoutslikenavigationMenus.2)Gridexcelsintwo-digsignssuchasmagazinelayouts.3)Bothenhanceslaysutibulivedibulisunivedivition、floctonsulururを

独自のコードをリファクタリングするのはどのように見えますか?ジョン・レアは、彼が書いた古いCSSアニメーションを選び、それを最適化するという思考プロセスを歩きます。

cssanimationsArenotintinlentyhardbutrepracticeanderstanding ofcsspropertiesandtimingfunctions.1)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい
