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;
}
CSSの仕様 継承、inherit
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;
}
font-family
charset
は日本語指定した場合に必要なブラウザーがあるので指定しておく
@charset "utf-8";
h1 {
font-family: Verdana, Geneva,'Arial Black', メイリオ, sans-serif;
}
行の高さを設定 line-height
p {
font-size: 16px;
/* line-height: 48px; */
/* line-height: 3em; */
line-height: 3;
background-color: pink;
}
line-height の 倍数指定について
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;
}
vertical-align
イメージの位置調整
<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;
}
width, height
<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;
}
border
<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 内側余白
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;
}
margin 外側余白
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の相殺
垂直方向の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;
}
display
block
, inline-block
はサイズ指定が有効inline
はサイズ指定が無効なので注意
- 代表的なもの aタグなど
<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; */
}
position 要素の位置
static
defaultrelative
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;
}
absolute 絶対配置
親要素が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;
}
z-index 重なり順序指定
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>
box-sizing
通常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;
}
calc
一定の割合で指定したい場合に使われる
単位がバラバラでも計算してくれる
.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;
}
要素に影をつける shadow
.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;
}
float, clear
<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;
}