CSS に関する質問
Front-end Job Interview Questions - CSS Questions の回答集です。提案や訂正のプルリクエストは大歓迎です!
- CSS セレクターの詳細度とは何ですか?それはどのようにはたらきますか?
- "リセット" と "ノーマライズ" CSS の違いは何ですか?あなたはどちらを使いますか?そしてそれはなぜですか?
floatとは何ですか?どのようにはたらきますか?z-indexとは何かと、スタックコンテキスト(スタック文脈)がどのように作られるのかを教えてください。- ブロック整形文脈(Block Formatting Context: BFC)とその仕組みを教えてください。
- clear を行う手法にはどのようなものがあり、それぞれどのような状況に適していますか?
- CSS スプライトとは何ですか?ページやサイトに実装する方法も合わせて説明してください。
- ブラウザ固有のスタイリングに関する問題を解決するにはどうすればいいですか?
- 機能の少ないブラウザに対しては、どのようにページを提供しますか?どのようなテクニック/プロセスを使用しますか?
- コンテンツを視覚的に隠す(スクリーンリーダーのみ利用可能にする)方法にはどのようなものがありますか?いくつか教えてください。
- グリッドシステムを使用したことがありますか?使ったことがあるなら、あなたはどのグリッドシステムが好きですか?
- メディアクエリやモバイル固有のレイアウト/CSS を使用したり実装したことはありますか?
- SVG のスタイリングについては詳しいですか?
screen以外の @media プロパティの例を挙げられますか?- 効率的な CSS を書くにために避けるべき "落とし穴" にはどんなものがありますか?
- CSS プリプロセッサを使用するメリットとデメリットには何がありますか?
- 使用したことのある CSS プリプロセッサについて好きなものと嫌いなものを教えてください。
- 非標準フォントを使用する Web サイトを実装するにはどのようにしますか?
- CSS セレクタにマッチする要素がどれなのか、ブラウザがどのように決定しているかを説明してください。
- 疑似要素について説明し、それらがなんのために使われているかを詳しく話してください。
- ボックスモデルがなんであるかのあなたの理解と、異なるボックスモデ ルでレイアウトをレンダリングするために CSS でブラウザに指示する方法を説明してください。
* { box-sizing: border-box; }によって何が起きますか?その利点は何ですか?- CSS の
displayプロパティとは何ですか?その使い方の例をいくつか挙げることができますか? inlineとinline-blockの違いは何ですか?positionがrelative、fixed、absolute、staticの要素の違いは何ですか?- ローカルや本番環境で、どの既存の CSS フレームワークを使用していますか?また、どのように変更/改善していますか?
- CSS の Flexbox や Grid の仕様で遊んだことはありますか?
- ウェブサイトをレスポンシブでコーディングすることとモバイルファーストでコーディングすることの違いを説明できますか?
- レスポンシブデザインはアダ プティブデザインと何が違いますか?
- Retina 対応を行ったことはありますか?もしあるなら、いつどのようなテクニックを使いましたか?
position: absoluteの代わりにtranslate()を使用するべき場合はありますか?その逆の場合もありますか?理由も合わせて教えてください。- 他の方の回答集
CSS セレクターの詳細度とは何ですか?それはどのようにはたらきますか?
ブラウザは CSS ルールの詳細度に応じて要素に表示するスタイルを決定します。ブラウザは特定の要素に一致するルールをすでに決定していると仮定します。マッチングルールの中で、詳細度は以下に基づいてルールごとに 4 つのカンマ区切り値 a, b, c, d が計算されます。
aは、インラインスタイルが使用されているかどうかです。プロパティの宣言が要素のインラインスタイルの場合、aは 1、そうでない場合は 0 になります。bは ID セレクタの数です。cはクラス、属性、擬似クラスセレクタの数です。dはタグおよび擬似要素セレクタの数です。
得られる詳細度はスコアではなく、列ごとに値を比較できる行列です。セレクターを比較して詳細度が最も高いものを判断するときは、左から右に向かって見て、各列の最高値を比較してください。したがって、b 列の値は、c 列と d 列の値を上書きします。従って、0, 1, 0, 0 の詳細度は、0, 0, 10, 10 より上です。
等しい詳細度の場合:最後に与えられたルールが適用されます。(内部または外部に関係なく)スタイルシートに同じルールを 2 回書いた場合、スタイルシートのより下部に書かれたルールがより詳細度が高いとみなされ適用されます。
私は低詳細度の CSS ルールを作成して、必要に応じて簡単に上書きできるようにしています。CSS の UI コンポーネントライブラリのコードを記述する際には、詳細度が低いことが重要です。詳細度を上げるためだけに複雑すぎる CSS ルールを使用したり、!important を利用させることは避けるべきなのです。
参考
- https://www.smashingmagazine.com/2007/07/css-specificity-things-you-should-know/
- https://www.sitepoint.com/web-foundations/specificity/
"リセット" と "ノーマライズ" CSS の違いは何ですか?あなたはどちらを使いますか?そしてそれはなぜですか?
- リセット - リセットとは、要素のすべてのデフォルトブラウザスタイルを削除することを意味します。例えば、
margin、padding、font-sizeは全て同じ要素にリセットされます。一般的なタイポグラフィー要素のためにスタイリングを再宣言しなければなりません。 - ノーマライズ - ノーマライズでは、すべてのスタイルを削除するのではなく、有用なデフォルトスタイルは保持します。合わせて、一般的なブラウザの依存関係のバグを修正します。
私は非常にカスタマイズされた、または一般的ではないデザインのサイトを作成する際にはリセットを選択します。これらの場合、自分のスタイリングをたくさん行う必要があり、デフォルトのスタイリングを保存する必要がないためです。
参考
float とは何ですか?どのようにはたらきますか?
Float は CSS の位置決めプロパティです。フロート要素はページの流れの一部として残り、ページのフローから削除される position: absolute 要素とは異なり、他の要素(たとえば、フロート要素の周りを流れるテキスト)の配置に影響します。
CSS の clear プロパティは、left/right/both フロート要素の下に配置するために使用できます。
親要素にフロート要素だけが含まれている場合、その高さは何も折りたたまれません。これは、フロートの後のフロートをコンテナの中で、コンテナが閉じる前にクリアすることで修正できます。
.clearfix ハックは、巧妙な CSS 疑似セレクタ(:after)を使ってフロートをクリアします。親にオーバーフローを設定するのではなく、クラス clearfix を追加します。次に、こ の CSS を適用します:
.clearfix:after {
content: ' ';
visibility: hidden;
display: block;
height: 0;
clear: both;
}
あるいは、親要素に overflow: auto または overflow: hidden プロパティを与えると、子要素の中に新しいブロック書式設定コンテキストが確立され、子要素を含むように展開されます。