CSS詳細 勉強

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だが、小要素のvalueinherit をつけると
親要素の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 内側余白

paddingborder内側の要素に加算されるので内側が膨れる

.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は、相殺されることに注意する
box3margin-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 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;
}

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 指定にするとborderwidth, 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;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です