ホームページ >ウェブフロントエンド >CSSチュートリアル >「CSSハック」の定義は何ですか?
少なくとも数年間CSSを書いている場合、CSSハックを使用しています。しかし、CSSを比較的新しい場合は、この用語を聞いたことがありますが、それが何を意味するのか正確にはわかりません。 この投稿では、CSSハックという用語が何を意味し、CSSハックがどのように使用されるかを正確に説明します。しかし、最初に、この投稿が必要だと感じた理由を説明する背景。
キーテイクアウト
IE10 - 61%
IE11 - 57%
エッジ - 45%IE8 - 35%
それから私は彼らが質問を完全に誤解しているに違いないことに気づきました。彼らは、「ブラウザX用のCSSハッキングを書く」は「ブラウザXのサポート」と同じだと考えています。特に、ハッキングを必要としない他のブラウザの高い割合を考慮した場合、他の論理的な説明はありません。
それでは、この用語に混乱する可能性のある人のために、ハックが何であるかを正確に定義しましょう。CSSハックとは?
CSSファイルの何かが「ハック」と見なされるためには、他のすべてのブラウザがそれを無視している間、ターゲットを絞られているブラウザにのみスタイルを適用する必要があります。上記の例のCSS(「Star-HTMLハック」と呼ばれることが多い)のCSSは、
のみのインターネットエクスプローラーバージョン6以下のみをターゲットにします。 IE6をサポートするほとんどの開発者は、IE6以前に何も気にしないため、これは通常IE6のみのハックとして機能します。「ハック」である部分は、「HTML」が続くアスタリスクです。これは、ユニバーサルセレクターと要素タイプセレクターの組み合わせです。ある時点で、誰かがこれら2つのセレクターが一緒になって別のセレクターが特定のバージョンのIEでのみ動作し、他のブラウザでは効果がないことを発見しました。これは、上記のコード例で定義されている.sidebar要素の左マージンがIE6以前にのみ適用されることを意味します。この場合、CSSは実際に有効であるため、エラーや警告が表示されません(詳細については後で詳しく説明します)。
BrowserHacksのWebサイトから取得した別の例を次に示します。今回はIE11:<span>* html <span>.sidebar</span> { </span> <span>margin-left: 5px; </span><span>}</span>
これがハッキングである理由の詳細には入りません(部分的には理解していないからです)が、上記のCSSはインターネットエクスプローラーバージョン11にのみ適用されます。 「IE11以降」なので、MicrosoftのEdgeブラウザーでも機能することを意味すると思いますが、それを確認していません。 ここでの重要なポイントは、どのブラウザがターゲットにされているかではなく、CSSハックとは何かを理解するために同じページにいることです。
CSSハッキングはCSSですか?StyleSheetにハッキングがある場合、W3CのCSSバリデーターを実行するとCSSが警告やエラーを作成する可能性があります。しかし、それは保証ではなく、何かがハックであるかどうかを認識する方法でもありません。
CSSにハッキングを含んで、警告やエラーがない可能性があります。たとえば、使用するCSSハッキングのみがStar-HTMLハックを使用してIE6をターゲットにしている場合、スタイルシートはハッキングに関連するエラーや警告なしで正常に検証します。 また、
いくつかのハック(上記で説明したIE11ハックなど)は、ベンダー固有のコード(例:-ms-fullscreen)を使用しています。そのような場合、バリデーターのデフォルト設定は、「パス」グリーン画面メッセージでCSSを表示できます。
しかし、バリデーター画面をスクロールすると、次のような警告が表示されます。
この場合、次のように警告しています。この種のCSSを警告の代わりにエラーとしてより快適に見ると、検証型の入力領域の下の「その他のオプション」セクションを使用して、バリデーターの設定を調整できます。
上記のCSSはIE8以下をターゲットにします。 「ハック」は、バックスラッシュとナイン(9)の組み合わせです。 9部分がラインを無効にするため、ほとんどのブラウザはフルラインを無視します。しかし、何らかの理由で、インターネットエクスプローラーバージョン8以下は引き続き有効であると見なされ、マージン設定を適用します。
ただし、この場合、BALIBARTARにどんな設定を選択しても、エラーメッセージが表示され、StyleSheetは検証に合格しません。
ハッキングではないテクニックは何ですか?
<span>* html <span>.sidebar</span> { </span> <span>margin-left: 5px; </span><span>}</span>次の方法と手法は、必ずしもCSSハッキングとして分類されるべきではありません。
条件付きコメントは、少し灰色の領域です。特定の方法で書かれている場合、それらは有効なHTMLですが、「ハッキー」です。
2008年に、ポールアイルランドは「条件付きクラス」と呼ばれるものを普及させました。これらは条件付きコメントを使用して、StyleSheetで使用できるクラスを作成して、有効なCSSを使用してIEの特定のバージョンをターゲットにしています。それでは、条件付きコメントの使用は「CSSハック」ですか?より慣習的なCSSハックを使用するときに意図されたものとまったく同じことを達成したからといって、私はイエスと言うでしょう。
CSSハッキングを使用する必要がありますか?多くのWeb開発トピックの場合と同様に、ここでの答えは、単に
はいではありません。正解はですです。ほとんどの純粋主義者は、それらを使用しないと言うでしょう。しかし、それはしばしばそれほど単純ではありません。ハッキングに関しては、私のアドバイスはこれです: 何かを除外したり、エラーを犯した場合は、コメントでお気軽にお知らせください。必要な修正を行います。
CSSハッキングに関するよくある質問(FAQ)
a CSSハックは1つ以上の特定のブラウザバージョンにCSSを適用し、同じCSSは他のブラウザによって無視されます。
これは、CSSハックの単純な定義です。したがって、CSSでMicrosoft Edgeをサポートしているからといって、Hacks for Edgeを書くという意味ではありません。サポートはまったく別のトピックです。
この投稿には、誰もが同意しているわけではないことがいくつかあるかもしれませんが、ハッキングが何であるかを理解しているほとんどの開発者は、上記の結論の概要に同意すると思います。
一般的なCSSハッキングには「ボックスモデルハック」が含まれます。これは、ブラウザが要素の幅と高さを計算する方法の違いによって引き起こされるレイアウトの問題を修正するために使用されます。 「スターハック」は、インターネットエクスプローラー7以下をターゲットにするために使用されます。もう1つの一般的なCSSハックは、「アンダースコアハック」です。これは、インターネットエクスプローラー6以下をターゲットにするために使用されます。 CSSハッキングを使用することは、すべての主要なブラウザと互換性のある方法でウェブサイトを設計することです。これには、CSSリセットを使用して、スタイルが異なるブラウザに一貫して適用されるようにし、広くサポートされていないCSS機能の使用を回避することが含まれます。さらに、さまざまなCSS機能のブラウザ互換性を確認するために使用できますか? Modernizrなどの検出ライブラリは、特定のCSS機能がユーザーのブラウザによってサポートされているかどうかを検出します。その後、この情報を使用して、ブラウザの機能に応じてさまざまなスタイルまたはレイアウトを適用できます。もう1つの選択肢は、SASS以下のようなCSSプリプロセッサを使用することです。これにより、より強力で保守可能なCSSコードを書くことができます。 CSSハッキングの詳細については、オンラインです。 CSS-TricksやSmashing MagazineなどのWebサイトは、CSSハックやその他の高度なCSSテクニックに関する記事を公開することがよくあります。さらに、CodePenやJSFiddleなどのWebサイトでCSSハッキングの多くのチュートリアルと例を見つけることができます。最新のブラウザの標準コンプライアンスが改善されているため、今日はあまり関連性がありません。ただし、古いブラウザをサポートしたり、ブラウザのバグを回避したりする必要がある場合など、CSSハックが必要になる可能性がある状況がまだあります。したがって、CSSハッキングがどのように機能しているかを理解することは依然として有用です。それらが過度に使用されている場合。これは、ブラウザが解析するためにCSSコードをより複雑で難しくすることができるためです。さらに、一部のCSSハッキングには、パフォーマンスに最適化されていないCSSプロパティまたはセレクターを使用することが含まれます。ブラウザ開発者ツールを使用して、要素に適用されるスタイルを検査します。 BrowserStackなどのオンラインツールを使用して、さまざまなブラウザでWebサイトの外観と動作をテストすることもできます。さらに、Seleniumなどの自動テストツールを使用して、さまざまなブラウザーやデバイスでWebサイトが正しく機能するようにすることができます。
以上が「CSSハック」の定義は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。