CSSについて

まるログ

CSSの構文

セレクタ {
プロパティ: 値
}


body {
  color: blue
}

主要なタグ

コメント /* */

大きさを指定する単位

大きさを指定する単位には次のようなものがあります。

px:ピクセル 画素数

%:親要素に対する割合

vh:ビューポート(画面サイズ)の高さに対する割合

100vhは画面の高さと同じ(100%)を表します。ただし、スマホの場合ブラウザの状態によって見え方が変わってくるという問題点があります。

vw:ビューポート幅に対する割合

vmin:画面の高さか幅の小さい方に対する割合

vmax:画面の高さか幅の大きい方に対する割合

em:全角1文字分に相当する値(テキストの冒頭にインデント)

displayプロパティ

displayプロパティは、要素の表示形式を決めるプロパティで次のような値を設定できます。

displayblockinlineinline-block
要素の並び
width height指定×
margin padding指定○(左右のみ)
text-align×○(親要素に指定)○(親要素に指定)
vertical-align×

block:p、div、ul、h1などの初期値

inline:a、span、imgなどの初期値

inline-block:インライン要素であり、ブロックレベル要素でもある振る舞いをさせることができます。横並びにしたり、上下左右にpadding・marginを持つこともできる便利な設定です。

.button{
    display: inline-block;
}

none:非表示にします(ex. スマホ表示の際は表示しないなど)

フレックスボックス(Flexbox)

display:flex

align-tems:center display:flexが付く要素を中央揃えにします。

justify-content: center

Flexboxチートシート」というページで詳しく紹介されています。

CSSの使用例

画像を丸く表示

border-radiusと overflowをセットで使います。

border-radius 角を丸く

overflow はみ出たところをhiddenで隠します(def. visible)

border-radius: 50%;
overflow: hidden;

地図を埋め込む

地図を表示する」で紹介しています。

iframeで別のHTMLソースが埋め込まれます。変更はできません。

簡単なアニメーション(transition)

transition プロパティが変化するまでの時間を設定

transition: background-color .25s;

video 動画

このように書くと複数動画ファイルを置くことができる

mp4が読み込めないブラウザの場合の代替ファイルを定義できる

<video>
    <source src="./asset/videos/testVideo.mp4" type="video/mp4">
</video>

autoplay属性 自動で再生される

loop属性 繰り返す

muted属性 音が出ないようにする

preload属性 HTMLが読み込まれたら、即座にMP4の読み込みを開始する

ボタンの影 box-shadow

.button{
    display: inline-block;
    color: #fff;
    font-weight: bold;
    background-color: #333;
    text-align: center;
    padding: 15px 60px;
    text-decoration: none;
    box-shadow: 5px 5px 3px #bbb;
    transition: box-shadow .25s;
}
.button:hover{
    box-shadow: 0 0 0 #bbb;
}

box-shadow: 5px 5px 3px #bbb;  横に5px 縦に5px 影をつけ、3px分ボヤーッとさせます。

hoverしたときに0にして影を消して、transitionで少し遅くすることで、ボタンが押されてる感を演出します。

フォーム、ラベル(form,label)

メールフォーム、ログインフォームなどでボタンを押して送るようなインタラクティブな要素を使う時にバックエンドとの連携がしやすくなります。

label:設定されていると自動的にフォーカスがあたります。

<label for="name">
  LabelName
</label> 

for属性を設定するか、囲ってしまう書き方もあります。

CSSスタイルが適用される順番

リクエスト数を少なくするため、読み込ませるCSSファイルの数をなるべく少なくします。

カスケーディング

次の順で要素にスタイルを適用させます。

  1. 優先度が高いもの
  2. 詳細度
  3. 最後に宣言されたもの

優先度

  1. UA(User Agent)指定スタイルで!important
  2. ユーザー指定スタイル(ブラウザに追加したスタイル)で!important
  3. デベロッパー指定スタイル(Webサイトで読み込まれたスタイル)で!important
  4. デベロッパー指定スタイル
  5. ユーザー指定スタイル
  6. UA指定スタイル

詳細度

セレクタの種類や組み合わせによって、詳細度がC→Aと高くなり優先されます。

セレクタ凡例詳細度
IDセレクタ#hugaA
疑似クラスfirst-child, :hoverB
属性セレクタ[attr=”value”]B
クラスセレクタ.hogeB
疑似要素::before, ::afterC
タイプセレクタsection, div, pC

インラインスタイルと!important宣言

インラインスタイルは、他の詳細度が高いセレクタよりも優先されます。

<p style="color; red">大当たり!</p>

!important宣言は、さらに優先されます。

.box {font-size: 14px !important}

継承

主にテキストにまつわる次のプロパティは継承されます。

  • color
  • cursor
  • font,font-family,font-size,font-style,font-weight
  • line-fight
  • text-align
  • text-indent
  • text-transform
  • visibility
  • white-space,word-spacing

CSSリセット

ブラウザは内部にUAスタイル(User Agent Stylesheet)と呼ばれるデフォルトのスタイルを持っていますが、ブラウザやバージョンによって異なるため、ブラウザによって表示が異なってしまいます。

そこでブラウザによって異なるデフォルトのCSSを打ち消してブラウザ間の表示を揃えるためのCSSファイルが考案されました。

CSSがリセットできるライブラリは複数あります。

制作するWebサイトのデザインが必要とするのが、強いリセットなのか弱いリセットなのかを見極めて使い分けます。

HTML5 Doctor Reset Stylesheet

ほとんどの要素の修飾がクリアされる強いリセット。

デザイン性の高いWebサイトやWebアプリケーションにも有効です。

ただし、コード量は多くなります。

Normalize.css

見出し要素のフォントサイズの違いや要素間の余白を確保しつつ、ブラウザ間の差異をなくす「弱いリセット」です。

ただ、2018年が最終アップデートと少し古いので、他のCSSを選択した方がよさそうです。

SanitizeCSS

Normalizeの上位互換のようなCSSです。

特定ブラウザのバグ対応、デフォルトのスタイリングがより最適化されています。

Reboot

ある程度の装飾は残された状態でブラウザによる差異がなくなるように設計されています。

どんなリセットスタイルを持っているかを知っておく必要があります。

リセットCSSの読み込み方法

リセットCSSは、自作のCSSの前に読み込みます。

基本的にリセットCSSはファイルをコピーして、HTMLファイルやCSSファイルと同様に自分のサーバー上に配置します。

<head>
  <link rel="stylesheet" href="reset.css">
  <link rel="stylesheet" href="style.css">
</head>

こちらのサイトで詳しく紹介されています。

【2022年版】おすすめのリセットCSSまとめ!基本知識と使い方を解説