Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第七回ネットワーク講座

 第七回ネットワーク講座

Transcript

  1. 第七回ネットワーク チーム講座資料 CSSのプロパティ4

  2. 概要 • floatプロパティ • z-indexプロパティ

  3. float 要素の回り込みを指定する 値は以下の4つ。 • left : 要素を左に寄せ、右余白部に下のブロックを回り込ませる • right :

    要素を右に寄せ、左余白部に下のブロックを回り込ませる • none : 回り込みをしない(初期値) • inherit : 親のfloatプロパティの値を引き継ぐ
  4. clear floatプロパティによる回り込みを解除する。 値に設定できるのは以下の3つ。 • left : 「float: left;」による回り込みを解除する • right

    : 「float: right;」による回り込みを解除する • both : 全てのfloatプロパティの回り込みを解除する
  5. floatプロパティの注意点 1. floatプロパティを指定する要素には必ずwidth/heightを指定する 2. floatプロパティを指定した要素の後にはclearプロパティを指定する

  6. 書いてみよう 1. 新たなHTMLファイル/CSSファイルを作成し、次の通り記述

  7. 書いてみよう

  8. 結果

  9. 戻しておく

  10. 書き足してみよう p.leftとp.rightの間に新たにp.leftを追加する

  11. 書き足してみよう ついでに、見やすくするためにcssの.leftセレクタに↓の通り追加

  12. 結果

  13. 書き足してみよう 更に、marginを追加してみる

  14. 結果

  15. 解説 各マージンはこの通り。 このように、floatプロパティ で左右に並ぶ場合はマージン の相殺は起きない。 50px 各20px 40px 20px divの

    左端
  16. 書き足してみよう この状態で.clearセレクタにmargin-topを指定すると、

  17. 結果 この通り、変わらない。マージンの相殺は起こっていない。

  18. 解説 clearプロパティとmargin/margin-topプロパティを一つの要素に併用 した場合、その要素の上方向へのマージンは無効となる。

  19. ただし .clearセレクタに対してさらに「float: left;」を追加すると、

  20. 結果 さっきより間隔が広くなる。

  21. 解説 floatプロパティが適用された要素同士 である場合、上下に隣接していても マージンの相殺は起こらない。 つまり、.leftの下マージン50pxと .clearの上マージン80pxの合計値、 130pxが要素同士の間隔となる。 130px 50px 80px

  22. floatとmargin まとめ 1. floatプロパティで左右どちらかに寄っている要素が複数ある場合、 それらの左右マージンは相殺されない 2. floatプロパティを適用されている要素同士が上下に隣接している 場合、それらの上下マージンは相殺されない 3. clearプロパティとmargin/margin-topプロパティを同時に同じ要

    素に対して適用した場合、その要素の上マージンは適用されない ※マージンが相殺されない=それぞれの要素のマージンの合計値になるということ
  23. 書き足してみよう 今更だが、親要素であるdivの境目が分かりにくいのでborderを設定

  24. 結果 ボーダーがつぶれて表示されてしまう。

  25. 解説 floatプロパティを適用した要素は”float”という名前通り「浮かんだ」 状態になる。そのため、親要素が高さを認識できなくなり、高さが 0として扱われてしまうため。 対策として、 • floatプロパティを適用している要素の後に適用していない要素を 入れる(要するに.clear) • 親要素に対して「overflow:

    hidden;」と指定する
  26. 解決策 つまりは、このどちらかを実行すればよい 1. divセレクタに↓のとおり追加 2. .clearセレクタから↓を削除 ※ただし、上マージンは適用されない

  27. 結果

  28. z-index 要素の重なりの順序を指定する。 positionプロパティでstatic以外が指定されている要素に適用される。 • 値は整数値で指定し、0を基準(背景)にして、値が大きいものほ ど要素が重なった時に上に表示される • 値には負の数も指定できる。

  29. z-index の値の指標 “The Interactive Advertising Bureau”によれば、 • 0 - 4999:

    主なコンテンツ、標準的な広告 • 5000 - 4999999: 種々の広告・ポップアップなど • 5000000 - 5999999: ドロップダウンUI、サイト内ナビゲーションUI、固 定ヘッダや固定フッタなど (Expanding Site Navigation Elements) • 6000000 - 6999999: 画面全体を覆う要素 (Full-page Overlays) ※広告業界における指標なので、これに必ず従わなければいけないというものではない
  30. 書いてみよう 1. 「z-index.html」を作成し、↓の通り記述して展開 ※”$”は連番を表す。要素を繰り返したとき、その回数分の数字に置き換わる 2. head内に→の通り記述して展開 3. cssフォルダ内に「z-index.css」を作成し次のスライドの通り記述

  31. 書いてみよう

  32. 結果 z-indexの値が大きい順に、上に表示される

  33. 書き換えてみよう .No1セレクタのz-indexの値を60に変更すると、このように表示され る。

  34. 書き換えてみよう .No5セレクタのz-indexの値を25に変更すると、このように表示され る。

  35. 書き足してみよう 1. z-index.htmlのp.No5の後に↓の文を記述して展開 2. z-index.htmlに次のスライドの通り追加

  36. 書き足してみよう

  37. 結果 z-indexの値が大きい方が前に表示される ので、大体こんな感じで表示される (各要素の黒字はz-indexの値)

  38. 結果 ・・・はずなのだが、実際にはこのように表示される

  39. スタックコンテキスト Z軸方向(要素同士が重なる方向)の階層構造を形成するグループの こと。 スタックコンテキストを生成するのは、以下の二つ。 1. ルート要素(html要素) 2. z-index と position(static以外)を指定した要素

    スタックコンテキストの内部に新たなスタックコンテキストを含む ことも出来る。
  40. スタックコンテキスト 重要なのは、z-indexで指定した値(=スタックレベル)は、同一ス タックコンテキスト内でしか効果が無いということ。 つまるところ、スタックコンテキストを生成する親要素内の子要素 にz-indexを指定しても、親要素のスタックコンテキスト内でしかz- indexの比較はされない。

  41. スタックコンテキスト イメージ html p.No1 p.No2 p.No3 p.No4 p.No5 div.No6 p.No6-2

    p.No6-1 スタックレベルを無視した場合、このように図示できる。
  42. スタックコンテキスト イメージ スタックレベルを比較できるのは同一スタックコンテキスト内の要 素同士だけ、つまりこの例においては同じ色の要素同士だけである。 p.No1 (60) p.No2 (20) p.No3 (30)

    p.No4 (40) p.No5 (25) div.No6 (35)
  43. つまり、htmlの作ったスタックコンテキスト内でこのように積み上 げられることになる。 p.No2 (20) p.No5 (25) p.No3 (30) div.No6 (35)

    p.No4 (40) スタックコンテキスト イメージ p.No1 (60)
  44. そのあとで、div.No6の生成したスタックコンテキスト内のスタック レベルが比較される。 p.No2 (20) p.No5 (25) p.No3 (30) div.No6 (35)

    p.No4 (40) スタックコンテキスト イメージ p.No1 (60) p.No6-1(15) p.No6-2 (55)
  45. このように、親要素がスタックコンテキストを持っている場合、親 要素のスタックレベルが絶対であり、子要素にどんなスタックレベ ルを設定しても上の階層のスタックレベルとの比較はできない。 p.No2 (20)p.No5 (25) p.No3 (30) div.No6 (35)

    スタックコンテキスト イメージ p.No6-1(15) p.No6-2 (55) p.No4 (40) p.No1 (60)
  46. 疑問 では、右に示した通りに表示するためには どうしたらよいのか?

  47. 答え それは、親要素(div.No6)がスタックコンテキストを生成しないよ うにすればよい。 div.No6に対して、以下のようにスタイルを指定すればスタックコン テキストを生成しない。 1. z-index: auto; と指定する 2.

    position: static; と指定する
  48. 書き換えてみよう

  49. 結果

  50. おしまい 次回はJavaScriptです