index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>CSSの練習</title> <link rel="stylesheet" href="styles.css"> <style> h2 { color: red; } </style> </head> <body> <h1>CSSの練習</h1> <p>こんにちは。 こんにちは。 こんにちは。 こんにちは。 こんにちは。 こんにちは。 こんにちは。 こんにちは。 </p> </body> </html>
styles.css
h1 { color: red; }
color, font-size はカスケードされるが、borderはカスケードされない。
body { color: skyblue; font-size: 12px; border: 1px solid pink; }
color mdn
で継承の有無を調べる
継承がないkeyも inherit をつけると継承される
borderは小要素への継承がないkeyだが、小要素のvalue
にinherit
をつけると
親要素のborder
の値が継承される。
body { color: skyblue; font-size: 12px; border: 1px solid pink; } h1 { border: inherit; }
ctrl + shift + i
h1 { color: red; font-size: 48px; text-align: center; font-weight: normal; text-decoration: line-through; } p { font-weight: bold; text-decoration: underline; } a { text-decoration: none; }
charset
は日本語指定した場合に必要なブラウザーがあるので指定しておく
@charset "utf-8"; h1 { font-family: Verdana, Geneva,'Arial Black', メイリオ, sans-serif; }
p { font-size: 16px; /* line-height: 48px; */ /* line-height: 3em; */ line-height: 3; background-color: pink; }
line-height
の倍数指定は、単位をつけた場合とつけない場合で、影響がかわってくるので注意
<body> <h1>CSSの練習</h1> <p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> <main> こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。 <section> こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは こんばんは </section> </main> </body>
main { font-size: 32px; /* line-height: 2em; */ line-height: 2; } section { font-size: 16px; }
イメージの位置調整
<body> <h1>CSSの練習</h1> <p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> <p>Tokyo <img src="img/japan.png" alt="">japan</p> </main> </body>
p { line-height: 5; background-color: pink; } img { vertical-align: bottom; }
RGBA
HSLA
opacity
<body> <h1>CSSの練習</h1> <p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> <ul> <li>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</li> <li>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</li> <li>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</li> </ul> <ol> <li>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</li> <li>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</li> <li>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</li> </ol> </body>
ul { list-style-type: circle; list-style-position: inside; list-style-image: url(img/icon.png); } ol { /* list-style-type: lower-alpha; */ list-style-type: none; }
初期値で上書きされることに注意
初期値は mdn で確認
一括指定のあとに、個別指定をすれば反映される
ul { /* list-style-type: circle; list-style-position: inside; list-style-image: url(../img/icon.png); */ list-style: circle inside url(img/icon.png); } ol { list-style-type: lower-alpha; list-style: inside; /* list-style-type: none; */ }
<body> <h1>CSSの練習</h1> <p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> <p class="info">こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> <p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> <p>こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</p> </body>
.info { color: skyblue; }
デベロッパーツール computed で確認
<body> <div class="box1">Box 1</div> <div class="box2">Box 2</div> <div class="box3">Box 3</div> </body>
.box1 { background-color: orange; } .box2 { background-color: skyblue; } .box3 { background-color: tomato; }
<body> <div class="box1"> <!-- Box 1 --> <div class="box2">Box 2 こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。</div> </div> <div class="box3">Box 3</div> </body>
.box1 { background-color: orange; width: 200px; height: 200px; } .box2 { background-color: skyblue; width: 50%; height: 50%; /* overflow: hidden; */ overflow: scroll; } .box3 { background-color: tomato; }
<body> <div class="box1"> <!-- Box 1 --> <div class="box2">Box 2</div> </div> <div class="box3">Box 3</div> </body>
.box1 { background-color: orange; width: 200px; height: 200px; } .box2 { background-color: skyblue; width: 50%; height: 50%; /* border-width: 2px; border-style: solid; border-color: blue; */ /* border: 2px solid blue; */ /* border: 2px dashed blue; */ /* border-top: 2px solid blue; border-bottom: 2px solid blue; */ border: 2px solid blue; /* border-bottom: none; */ border-radius: 10px; } .box3 { background-color: tomato; }
padding
はborder
内側の要素に加算されるので内側が膨れる
.box1 { background-color: orange; width: 200px; height: 200px; } .box2 { background-color: skyblue; width: 50%; height: 50%; border: 2px solid blue; padding-top: 20px; padding-left: 40px; } .box3 { background-color: tomato; }
border
の外側の余白設定
auto
は中央寄せでよく使われる。
.box1 { background-color: orange; width: 200px; height: 200px; /* margin-bottom: 20px; */ margin: 0 0 20px; margin-left: auto; margin-right: auto; } .box2 { background-color: skyblue; width: 50%; height: 50%; } .box3 { background-color: tomato; }
垂直方向のmargin
は、相殺されることに注意する
box3
のmargin-top
は、効いていいないことに注意。
.box1 { background-color: orange; width: 200px; height: 200px; margin-bottom: 20px; } .box2 { background-color: skyblue; width: 50%; height: 50%; } .box3 { background-color: tomato; margin-top: 10px; }
block
, inline-block
はサイズ指定が有効
inline
はサイズ指定が無効なので注意
<body> <div class="box1"> <!-- Box 1 --> <div class="box2">Box 2</div> </div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> </body>
.box1 { background-color: orange; width: 200px; height: 200px; } .box2 { background-color: skyblue; width: 50%; height: 50%; } .box3 { background-color: tomato; width: 100px; height: 40px; /* display: inline; */ display: inline-block; /* display: none; */ }
static
default
relative
static
の位置からずらす。 次の要素に影響しない
fixed
左上からの位置指定。 次の要素に影響する もとの要素がないと判断される
スクロールしても、配置は変わらないのが特徴的。
<body> <div class="box1">Box 1</div> <div class="box2">Box 2</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> </body>
.box1 { background-color: orange; width: 100px; height: 100px; } .box2 { background-color: skyblue; width: 100px; height: 100px; /* position: static; */ /* position: relative; */ position: fixed; top: 30px; left: 30px; .box3 { background-color: tomato; width: 100px; height: 100px; }
親要素がstatic
かそれ以外かで、子要素の挙動が変わる
親要素がstatic
の場合、fixed
と同じように、左上から配置される
fixed
の違いはスクロールで流れること
親要素がrelative
などにしておくと、親要素基準になる。 よく使われる
<body> <div class="box1">Box 1</div> <div class="box2"> <!-- Box 2 --> <div class="rect"></div> </div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> <div class="box3">Box 3</div> </body>
.box1 { background-color: orange; width: 100px; height: 100px; } .box2 { background-color: skyblue; width: 100px; height: 100px; /* position: static; */ position: relative; } .box3 { background-color: tomato; width: 100px; height: 100px; } .rect { width: 50px; height: 20px; background-color: lime; position: absolute; /* top: 30px; left: 10px; */ top: -5px; right: -5px; }
absolute
は親要素がstatic
なので左上基準
z-index
で逆順の並びになっている
.box1 { background-color: orange; width: 100px; height: 100px; position: absolute; top: 0; left: 0; z-index: 3; } .box2 { background-color: skyblue; width: 100px; height: 100px; position: absolute; top: 30px; left: 30px; z-index: 2; } .box3 { background-color: tomato; width: 100px; height: 100px; position: absolute; top: 60px; left: 60px; z-index: 1; }
<body> <div class="box1">Box 1</div> <div class="box2">Box 2</div> <div class="box3">Box 3</div> </body>
通常border
は、高さや幅指定の外に配置される。
border-box
指定にするとborder
もwidth
, height
の指定に含まれる
border
の幅分レイアウトがずれるのを防ぐ場合につかわれる
.box1 { background-color: orange; width: 100px; height: 100px; } .box2 { box-sizing: border-box; background-color: skyblue; width: 100px; height: 100px; border: 10px solid blue; } .box3 { background-color: tomato; width: 100px; height: 100px; }
一定の割合で指定したい場合に使われる
単位がバラバラでも計算してくれる
.box1 { background-color: orange; /* width: 100px; */ width: calc((100% - 40px) / 3); height: 100px; } .box2 { box-sizing: border-box; background-color: skyblue; /* width: 100px; */ width: calc((100% - 40px) / 3); height: 100px; border: 10px solid blue; margin: 0 auto; } .box3 { background-color: tomato; /* width: 100px; */ width: calc((100% - 40px) / 3); height: 100px; margin-left: auto; }
.box1 { background-color: orange; width: 100px; height: 100px; box-shadow: 10px 5px rgba(0, 0, 0, 0.3); text-shadow: 10px 5px rgba(0, 0, 0, 0.3); margin-bottom: 20px; } .box2 { background-color: skyblue; width: 100px; height: 100px; box-shadow: 10px 5px 3px rgba(0, 0, 0, 0.3); text-shadow: 10px 5px 3px rgba(0, 0, 0, 0.3); margin-bottom: 20px; } .box3 { background-color: tomato; width: 100px; height: 100px; box-shadow: 10px 5px 3px 10px rgba(0, 0, 0, 0.3); margin-bottom: 20px; }
header画像の挿入
<body> <header></header> </body>
header { height: 80px; /* background-color: pink; */ background-image: url(img/header.png); background-size: cover; background-position: center; }
<body> <h1>見出し</h1> <p><img src="img/logo.png" width="100" height="100">こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!</p> <h2>見出し</h2> <p>こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!</p> </body>
img { float: right; } h2 { clear: right; clear: both; }