css・HTMLの書き方ノート

cssとHTMLの使い方を整理し、思い出しながら使うことを想定したノートです。
内容は入門レベルです。

cssとは、WEBサイトのデザインを一括して指定できるプログラミング言語です。
文字の装飾や図の配置など個別に指定すると管理が大変です。
cssを使えばその問題を解決できます。

下の灰色のボタンで表示を絞り込むことができます。

    HTML

    基本構造

    htmlタグ: HTMLである事を示す。
    headタグ: 検索エンジン用の説明、CSSへのリンク、ページタイトル。
     ブラウザに表示されない。
    metaタグ: 使用言語、ページの説明。
    titleタグ: ページタイトル。
     ブラウザのタブやブックマークに利用される。
    linkタグ: CSSなどを読み込む。
    bodyタグ: コンテンツ部分。

    グループ

    headerタグ: ロゴ、ページタイトル、メインメニュー
    navタグ: メインメニュー
    mainタグ: メインコンテンツ
    articleタグ: 独立して成立する記事
    sectionタグ: テーマのあるグループ
    divタグ: 上記以外のグループ
    asideタグ: 補足
    footerタグ: ページ下部。コピーライト、リンク

    body内

    ul: リスト(番号なし)
    ol: リスト(番号あり)
    li: リスト内の項目
    strong: 強調
    blockquote: 引用
    audio, video: 音声データ、動画データ

    pictureタグ

    <picture>
     <source media="(min-width: 760px)" srcset="img_1.jpg">
     <source media="(min-width: 380px)" srcset="img_2.jpg">
     <img src="img_3.jpg" alt="ブラウザ幅によって画像を切り替える"">
    </picture>
    pictureタグの中にsourceタグを1つ以上、imgタグを1つ記述する。
    sourceを上から順番に読み、条件に当てはまればsrcsetの画像を表示する。
    sourceに当てはまる条件がなければimgタグの画像を表示する。

    ボタンの画像

    <input type="image" src="画像の場所" name="ボタンの名前" alt="説明テキスト">

    ラジオボタン(ラベルの上も選択可能にする)

    <input type="checkbox" name="名前" value=値 id="ID名">
    <label for="ID名">表示する文字列</label>

    ページ内リンク

    <a href="#ID名">リンク用の文字列</a>
    <div id="ID名"> ←ここに移動する
     コンテンツ
    </div>

    エスケープ文字

    一覧

    < &lt;
    > &gt;
    空白(無視されない) &nbsp;
    空白(半角幅) &ensp;
    空白(全角幅) &emsp;
    & &amp;
    °  &deg;
    ± &plusmn;
    × &times;
    ÷ &divide;
    ¹  &sup1;
    ²  &sup2;
    ½ &frac12;
    ¾ &frac34;
    {  &#123;
    }  &#125;

    CSSの基本

    設計:BEMの命名規則

    ブロック__要素--装飾
    ブロックは大枠、要素は部品。

    優先順(ID(#), クラス(.), 要素, 後書き)

    a#id, #id, a.class, .class, a(詳しく指定した方優先)

    絶対単位(px)

    変えたくない値(要素の間隔や線の幅)に使う

    相対単位(%, em, rem, vw, vh, vmin, vmax)

    親要素基準
     50% 0.5em
    ルート要素基準
     0.5rem
    表示領域基準
     50vw 50vh
     (vはviewport、wはwidth、hはheight)
     10vmin 5vmax
     (幅・高さの短い方/高い方基準の何%か)

    ブレイクポイント

    画面サイズによってスタイルを変更する。
    相対単位の使用を推奨。
    @media(max-width: 600px) { }

    色の指定

    2桁で赤/緑/青を指定
     #0055ff
     #05f(ゾロ目は1桁省略できる)
    RGBで指定(例は白)
     rgb(255, 255, 255)
    透明度も指定(例は黒の半透明)
     rgba(0, 0, 0, .5)
     赤, 緑, 青, 透明度の順
     3色同値は無彩色。#fff: 白、#ddd: 明るいグレー、#333: 暗いグレー

    余白(外側はmargin、内側はpadding)

    px, rem, %などで指定。autoで自動。
    margin: 10px # 4方向全て同値
    margin: 0 auto # 中央配置(上下0, 左右auto)
    margin: 1px 2px 3px 4px # 上,右,下,左
    個別指定
     margin-top: 0
     margin-left: 4%
     margin-right: 4%
     margin-bottom: 10px

    画面サイズの例

    iPad: (768~834, 1024~1112)
    iPhone: (375~414, 667~896)

    文字

    まとめて指定(font)

    font-style, font-variant, font-weight, font-size, line-height, font-familyを指定。

    文字サイズ(font-size)

    文字サイズを正しく反映するための設定。px, rem %など。
     html { font-size: 100%; }
    文字サイズの指定
     font-size: medium;
     小さい順にxx-small, x-small, small, medium, large, x-large, xx-large

    フォント

    font-family: serif, sans-serif, "Yu Goh2ic", "游ゴシック体", "ヒラギノ丸ゴ Pro W4";
    # 左にある方が優先される
    serif: 明朝、sans-serif: ゴシック、cursive: 筆記体、fantasy: 装飾、monospace: 等幅

    文字の色(color)

    白文字の例
     color: #fff;
     color: white;

    文字の太さ(font-weight)

    太字
     font-weight: bold;
    数字(1~1000)で指定
    一段細く lighter、一段太く bolder

    行間(line-height)

    フォントサイズとの比率(無単位), px, em, %など
     line-height: 1.7;

    自動的な折り返しなし

    white-space: nowrap;

    文字の間隔(letter-spacing)

    px, rem, %など

    文字の位置(text-align)

    text-align: justify; # 両端揃え
    text-align: left # 左揃え
    # ほか right, center

    まとめて指定(border)

    border-width, border-style, border-colorを指定。

    線の太さ(border-width)

    border-width: 1px 2px 3px 4px; # 上, 右, 下, 左
    border-width: thin; # 細線
    太線 thick、中間 medium

    線の種類(border-style)

    boder-style: solid; # 一本線
    非表示 none、2本線 double、破線 dashed、点線 dotted
    谷型 groove、山型 ridge、凹 inset、浮き上がり outset

    線の色(border-color)

    border-color: #000;

    下線(border-bottom)

    border-bottom: 2px;

    下線・取消し線(text-decoration)

    text-decoration: none; # 傍線なし
     下線: underline、上線: overline
     打消し線: line-through、点滅: blink

    線の角を丸める(border-radius)

    border-radius: 50%;

    線をまとめて設定(border)

    border: 5px dotted blue;
    border-top等で個別の設定もできる

    tableの境界線を重ねる(border-collapse)

    border-collapse: collapse; # 隣接する境界線を重ね合わせる
    border-collapse: separate: # 境界線を離す

    tableのtd/thの間隔(border-spacing)

    border-spacing: 1px; # 上下左右1px空ける
    border-spacing: 2px 3px; # 左右2px、上下3px空ける

    画像

    画像サイズ

    画像が親要素より大きくなることを防ぐ
    img { max-widh2: 100%; }

    背景

    背景色
     background-color: white;
    背景画像(ファイル)
     background-image: url(images/bg.png);
    背景画像(グラデーション)
     background-image: linergradient(色1, 色2);
    繰り返し
     background-repeat: repeat;
     横に繰り返し repeat-x、縦に繰り返し repeat-y
    背景で埋める
     background-size: cover;
     画像を全表示 contain
    自動的にトリミング
     object-fit: cover;
    背景の位置
     background-position: top center;
     横方向: left, center, right
     縦方向: top, center, bottom
    まとめて指定(background)
     background-color, background-image, background-repeat
     background-attachment, background-position

    リンク

    カーソルを重ねた時(hover)

    a:hover{ color: #fff; }

    配置

    Flexbox(display: flex; で有効にする)

    横の並びを左から
     flex-direction: row
     右から row-reverse、上から column、逆順 column-reverse
    下に折り返し
     flex-wrap: wrap
     折り返しなし nowrap
     下から上に折り返し wrap-reverse
    左に揃える
     justify-contant: flex-start;
     右揃え flex-end、中央 center
     両端(均等)space-between、全て均等 space-around
    上下中央揃え
     align-items: center;
     上揃え flex-start、下揃え flex-end
     要素の高さに広げる slietch、ベースライン揃え baseline
    表示順を2番目に指定
     order: 2;
     重要なコンテンツは上部に記述し、orderで入れ替える

    grid(display: grid; で有効にする)

    横の並び
     1:1:1の比率で横に並べる
      grid-template-columns: 1fr 1fr 1fr;
     1frのボックスを1列に3つ並べる
      repeat(3, 1fr);
      (繰り返す数, 要素の幅)
     指定の幅以上で画面の幅によって伸縮
      repeat(3, minmax(240px, 1fr));
      (繰り返す数, (最小, 最大))
     幅に応じて繰り返しの数を変更
      repeat(auto-fit, minmax(240px, 1fr));
    縦に並べる(1:2:1)
     grid-template-rows: 1fr 2fr 1fr;
    子要素間の余白
     gap: 5px;
    サイズ変更
     横1~3番目までの幅(grid2つ分)
      grid-column: 1 / 3;
     横1~3番目までの幅(grid2つ分)
      grid-row: 1 / 4;
     @media内で使い、サイズを元に戻す
      grid-row: auto;

    ファイル

    ファイルの種類

    JPG: 軽い。用途: 写真・グラデーション。色数の多い画像。
    PNG: 軽い。透過可能。用途: イラスト・ロゴ。色数の少ない画像。
    GIF: 透過やアニメーション可能。用途: 単色・簡単なイラスト。
    SVG: ベクター形式。拡大しても画像が劣化しない。用途: 高解像度ディスプレイ。

    容量調整

    Compressor.io: 画像ファイルを劣化させずサイズ圧縮できるサイト。
    Compressor.ioへのリンク