HTML Living Standard  第2部 CSS 1 CSSとは


 

1 CSS とは

1.1 CSS とは

図2-1-1 CSS

CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)とは、ウェブページのスタイルを指定するための言語です。 ワープロソフトなどで作成される文書も含めて、文書のスタイルを指定する技術全般をスタイルシートといいます。HTML などで作成されるウェブページにスタイルを適用する場合には、スタイルシート言語の1つである CSS が一般的に利用されています。

CSS は、HTML と組み合わせて使用する言語です。 HTML がウェブページ内の各要素の意味や情報構造を定義するのに対して、CSS ではそれらをどのように装飾するかを指定します。


初期の頃の HTML は、とても単純で情報構造を定義するだけでしたが、次第に見栄えをよくするためにいろいろな装飾ができるような要素(タグ)や属性が追加されていきました。そのため、文書の情報構造が分かりにくくなったり、コンピュータや検索エンジンに理解されないでたらめな文書構造になる恐れが出てきてしまいました。また、HTML の要素(タグ)をどのように表示するかは、ブラウザによって異なることがあります。 HTML タグを駆使してある閲覧環境では見栄え良くレイアウトできたとしても、 他の閲覧環境ではまったく意図しないレイアウトになってしまうかも知れないわけです。


そこで、HTML4.01 では、HTML 文書から見栄えに関する指定を分離することが望ましいとされました。つまり、HTML では文書構造のみを定義して、スタイルについてはスタイルシートで指定することが推奨されたわけです。

ただし、HTML4.01 では、例えばセンター揃えをする <center>、フォントの見栄えを指定する <font> などの装飾目的の要素や、色・サイズ・ボーダーなどを指定する装飾目的の color や bgcolor、size、border などの属性については「非推奨」とされながらも使用することができてしまいます。しかし、HTML5 では、これらは完全に廃止されました(ただし、ブラウザにもよりますが、過去に作成された文書もありますので、それらを表示するためにエラーになるとかまったく表示されないといったことはないと思います)。


CSS のバージョンには、CSS1、CSS2、CSS2.1 そして CSS3 があります。ただし、CSS にはバージョンを示す記述がありませんので、どのバージョンで記述したのかを示すことはできません。ただ、CSS3 で追加された プロパティを使用すれば、それは CSS3 でしょうし、使用しなければ CSS3 かもしれないし CSS2.1 かもしれないというわけです。

CSS は、例外もありますが、基本的に下位互換性があります(以前のバージョンの記述が新しいバージョンでも正しく動作します)ので、最新のブラウザで表示している限りは全く問題はありません。

CSS 2.1

2011年6月に勧告された、CSS2 の改定版です。CSS2 の定義が不明瞭であったことからブラウザごとに非互換が生じたため、曖昧な記述を明確にするといった改訂が行われました。

CSS2 のエラー修正、一部プロパティの削除、説明変更、CSS3 を視野に入れた仕様変更など、CSS2 を整理・修正したものとなっています。

CSS3

CSS3 以降では CSS 2.1 を中核として、新たな機能の追加や改良をモジュールとすることで実現していますので、2011年以降機能ごとに順次勧告されています。

角丸・画像ボーダー・ドロップシャドウ・グラデーション・透明度・アニメーションなどの新しい機能が追加されいます。

1.2 属性値

スタイルシートでいろいろな要素の属性値を設定し見栄えを変更します。

属性値はその属性によってどのような種類かが決まりますが、主に色や数値、時間などがあります。

1.2.1 色

色を名称や16進数で指定することができます。色の指定は光の三原色R(Red)、G(Green)、B(Blue)の加法混色によって行われます。色の指定はそれぞれの色を1バイト(8ビット)を使った256(=28)段階で行います。3色の混色により指定できる合計色数は3バイト(24ビット(=8×3))を使った約1600万(=224)色になります。


(1) Web カラー

参考:Web カラー一覧

カラーネーム16進数

よく利用するであろう色には名前が付けられています(右図を参照)。

また、特別な色として、塗らないこと(透明)を指示する transparent があります。

(2) 16進数

# に続いて、赤緑青をそれぞれ16進数2桁ずつで指定することもできます(上図を参照)。アルファベット部分は大文字でも小文字でも構いません。

また、赤緑青それぞれの2桁が同じ数字のとき、それぞれ1桁に省略することもできます。つまり、#FFFF00 は #FF0 と記述することも可能です。

(3) RGB

R(赤)G(緑)B(青)で色を指定します。rgb(R,G,B) と指定します。R、G、Bの部分には 0~255 までの10進数を指定することができます。つまり、rgb(173,255,47) は #ADFF2F と同じ色を示しています。

また、10進数ではなく、0%~100% の割合で指定することもできます。0% が 0、100% が 255 です。

さらに、RGB に加えてアルファ値(透過度)を 0.0(完全に透明)~1.0(完全に不透明)の間で指定できる rgba(R,G,B,A) もあります。

(4) HSL

H:hue(色相)、S:saturation(彩度)、L:lightness(明度)で色を指定できます。hsl(H,S,L) と指定します。色相には整数値を指定します。どれだけ大きな値も小さな値も指定できますが、0 = 360xNで、赤を示します。彩度、明度は0~100%で指定します。

さらに、HSL に加えてアルファ値(透過度)を 0.0(完全に透明)~1.0(完全に不透明)の間で指定できる hsla(H,S,L,A) もあります。

(5) CMYK

C:cyan(水色)、M:magenta(赤紫色)、Y:yellow(黄色)、K:black(黒色)で色を指定できます。cmyk(C,M,Y,K) と指定します。各色を 0.0~1.0 の間で指定します。

1.2.2 単位

いろいろな属性で、属性値として数値を指定することができます。指定できる数値として次のようなものがあります。その種類によって単位も決まります。省略した場合はあらかじめ定められた単位になります。

(1) 長さ

width、height 属性などで指定されます。これらには次のような単位を指定できます。

単位説明
emfont-size で使用された場合は親要素で、それ以外では自要素で、
使用されるフォントの大文字のMの高さを基準にした割合
exfont-size で使用された場合は親要素で、それ以外では自要素で、
使用されるフォントの小文字のxの高さを基準にした割合
pxピクセル(規定値)
ptポイント(1/72in)
pcパイカ(12 ポイントを 1 とする単位)
cmセンチメートル(96/2.54px)
mmミリメートル
q四分ミリメートル(0.25mm)
inインチ(96px、72pt)
remhtml 要素の文字サイズに対する割合
ch要素で使用されるフォントの 0 の幅を基準にした割合
vwビューポートの幅に対する割合(%)
vhビューポートの高さに対する割合(%)
vminビューポートの幅と高さのうち、値が小さい方に対する割合(%)
vmaxビューポートの幅と高さのうち、値が大きい方に対する割合(%)
w画像の幅
h画像の高さ
xデバイスピクセル比

ビューポートとは表示域のことで、表示するデバイスなどで大きさは異なります。vw、vh などはそれに対する割合です。例えば、表示域の横幅が 200mm であるとき 8vw とした場合は 16mm となります。

(2) 数

rowspan、colspan 属性などで指定されます。単位はありません。

(3) 座標

x、y 属性などで指定されます。単位はありません。

(4) 時間

animation-duration、animation-delay 属性などで指定されます。

単位説明
min
s(規定値)
msミリ秒

(5) 角度

radial-gradient、conic-gradient、transform:rotate などで指定されます。単位を省略することはできません。

単位説明
deg度(円の全周は 360 度)
gradグラジアン(円の全周は 400 グラジアン)
radラジアン(円の全周は 2π ラジアン)
turn回転数(円の全周は 1 回転)

(6) 割合

長さや数などで絶対数ではなく割合を指定することもできます。

単位説明
%パーセンテージ(一つ外側の要素に対する割合)
frgrid レイアウトでの幅(合計数に対する割合)

(7) 周波数

話し声の高さのような、周波数を指定することもできます。

単位説明
Hzヘルツ
kHzキロヘルツ

(8) 解像度

デバイスの解像度を指定することもできます。

単位説明
dpi1インチあたりのドット数(1インチは 2.54 cm なので、1dpi ≒ 2.54dpcm)
dpcmセンチメートルあたりのドット数(1インチは 2.54 cm なので、1dpcm ≒ 0.39dpi)
dppxピクセル(px)あたりのドット数(1dppx = 96dpi)

1.3 CSS 関数

1.3.1 CSS 変数

変数の宣言には -- から始め、続いて変数の名前を書きます。変数名では大文字と小文字が区別されます。

変数の値は変数の後にコロンで区切って記述します。単位も一緒に記述できます。そして、変数を参照したらこの値が呼び出されるようになります。

下の例では、:root に記述していますが、変数を使用する対象であればどのようなセレクタでもかまいません。

変数: 値

変数を定義し値を設定する。

属性値説明
変数変数の名前(-- から始まる必要がある)
変数に代入される値(改行、>、)、}、]、;、! など、特別な意味を持つ文字は指定できない)

記述例
スタイルシート
:root {
  --title-color: blue;
}

宣言した変数を使用するには var() 関数を使用します。

var(変数 [, 代替値])

変数の値を参照する。変数が定義されていない場合は代替値を参照する

属性値説明
変数変数の名前
代替値変数が定義されていない場合に代わりになる値

下の例では、title1 は --title-background-color が定義されているので、設定されている値である yellow になります。しかし、--title-background-colorX は定義されていないので、title2 の例のように代替値が指定されていればその値の lime が background-color になりますが、title3 は代替値の指定がないので、規定値である white が設定されます(ただし、属性によっては無視されるかもしれません)。

記述例
スタイルシート
div {
  background-color: lightgrey;
  --title-background-color: yellow;      <-- 変数定義(yellow) -->
}
div.title1 {
  background-color: var(--title-background-color);           <-- 定義済み変数 -->
}
div.title2 {
  background-color: var(--title-background-colorX, lime);    <-- 未定義変数、代替値あり -->
}
div.title3 {
  background-color: var(--title-background-colorX);          <-- 未定義変数、代替値なし -->
}

ボディ
<div>デフォルト</div>
<div class="title1">定義された変数</div>
<div class="title2">定義されていない変数、代替値あり</div>
<div class="title3">定義されていない変数、代替値なし</div>
表示例

1.3.2 CSS 関数

属性値には、文字列や数値以外に関数を指定することもできます。

関数の引数で指定する、長さや座標には px、em、cm などの単位をつけた数値や % を付けた割合を指定することができます。

座標は参照ボックスの左上隅が原点で、 X 座標が右方向、 Y 座標が下方向になります。% で指定された長さはすべて、参照ボックスのサイズを使用して算出されます。

(1) 基本図形

主にクリッピングの図形を定義するときに使用します。クリッピングも参照してください。

関数引数説明
inset(長さ [round 角丸半径])長さ:元の図形からの内側への隔たり(注1)
角丸半径:角を丸くするときの半径(注2)
規定値:0px
内部の長方形を定義する
circle(半径 [at 中心点])半径:円の半径(注3)
中心点:X座標 Y座標規定値:参照ボックスの中心
     (空白区切り)
円を定義する
ellipse(横半径 縦半径 [at 中心点])横半径:X 方向の半径
縦半径:Y 方向の半径
中心点:X座標 Y座標規定値:参照ボックスの中心
     (空白区切り)
楕円を定義する
polygon([塗りつぶし]
    頂点座標, 頂点座標, ... ,頂点座標)
塗りつぶし:nonzero 全面塗りつぶし(規定値)
evenodd 塗りわけ

頂点座標:X座標 Y座標
     (空白区切り)
多角形を定義する
(注1)
1つ指定4辺とも同じ距離
2つ指定上下、左右 の距離
3つ指定上、左右、下 の距離
4つ指定上、右、下、左 の距離
(注2)
1つ指定4つの角とも同じ
2つ指定左上、右下 と 右上、左下
4つ指定左上、右上、右下、左下
X/Y とすると水平/垂直方向の半径
(注3)
% を指定したときの基準となる長さ
width = 参照ボックスの幅
height = 参照ボックスの高さ
(width)2 + (height)2 2
記述例
スタイルシート
img {
  border: solid 6px lightgrey;
  padding: 10px;
  background-color: lime;
}

ボディ
<img src="bear.png" style="clip-path:inset(20px 10px round 20px/10px);">   <-- 水平方向 20px /垂直方向 10px -->
<img src="bear.png" style="clip-path:circle(20px at 20px 40px);">
<img src="bear.png" style="clip-path:ellipse(40px 10px at 30px 40px);">
<img src="bear.png" style="clip-path:polygon(38px 0px, 14px 72px, 76px 28px, 0px 28px, 62px 72px);">
表示例

(2) 数式・属性

属性値の数値を計算したり、属性値を参照したりするときに使用します。

関数引数説明
calc(式)式:加(+)減(-)乗(*)除(/)
ただし、加(+)減(-)の演算子の前後は空白が必要
括弧で計算順序を変更できる
単位付きの数値の演算を行う
attr(属性名)属性名:属性の名称(独自データ属性も可)選択された要素の属性の値を受け取る
minmax(最小値, 最大値)最小値:取り得る最小の値
最大値:取り得る最大の値
最小値と最大値の間で最適な値を取る
repeat(回数, 長さ)回数:繰り返し回数
長さ:空白区切りで複数指定できる
長さの属性を指定した回数分繰り返す

calc を使用して、異なる単位の数値が混在した計算をすることができます。

加(+)減(-)乗(*)除(/) の演算ができますが、+ と - の前後には 空白が必要です(* と / の前後には空白は要りませんが空白を入れて統一したほうがよいでしょう)。

記述例
スタイルシート
span {
  display: inline-block;
  font-size: 9px;
}

ボディ
<div style="width:400px;height:50px;border:solid 1px gray;">
  <span style="width:calc(50% + 40px); background-color:yellow;">calc(50% + 40px)</span>
  <span style="width:calc(50% - (30px * 2)); background-color:yellow;">calc(50% - (30px * 2))</span>
</div>                       ↑↑
                          空白が必要
表示例

attr の引数に指定した属性名の値を取得できます。属性名には、data- から始まる独自データ属性も指定できます。次の例では、data-importance が独自データ属性です。

attr については、E::before も参照してください。

記述例
スタイルシート
div.style::after {
  content: " style 属性は、" attr(style) " です。";
}
div[data-importance]::before {
  content: attr(data-importance) "→ ";
  color: red;
}

ボディ
<div class="style" style="width:300px;">この div 要素の</div>
<br>
<div data-importance="重要">attr() の説明</div>
表示例

minmaxrepeat は主に フレックスボックスグリッド で使用され、可変長の幅を指定したり、同じ属性の繰り返しを指定したりします。

下の例では、A の列に minmax(50px, 400px) が指定されていますので、グリッドの幅の変化に伴って 50px から 400px の間で変化します。また、repeat によって B から E の列は幅が 45px と 3em が 2回繰り返され、1 から 4 までの行は高さが 20px に設定されています。

別ウィンドウで表示して、ウィンドウの幅を変えてみてください。

記述例
スタイルシート
div.container {
  display:grid;
  margin:20px 30px;
}
div.area {
  border:solid 1px lightgrey;
  font-size: 9px;
}
div.h {
  background-color: lightyellow;
}
div.s {
  background-color: lightcyan;
}

ボディ
<div class="container" style="grid-template-columns:100px minmax(50px, 400px) repeat(2, 45px 3em);
                              grid-template-rows:30px repeat(4, 20px) 30px;">
  <div class="area h"> </div><div class="area h">A</div><div class="area h">B</div><div class="area h">C</div><div class="area h">D</div><div class="area h">E</div>
  <div class="area">1</div><div class="area">A1</div><div class="area">B1</div><div class="area">C1</div><div class="area">D1</div><div class="area">E1</div>
  <div class="area">2</div><div class="area">A2</div><div class="area">B2</div><div class="area">C2</div><div class="area">D2</div><div class="area">E2</div>
  <div class="area">3</div><div class="area">A3</div><div class="area">B3</div><div class="area">C3</div><div class="area">D3</div><div class="area">E3</div>
  <div class="area">4</div><div class="area">A4</div><div class="area">B4</div><div class="area">C4</div><div class="area">D4</div><div class="area">E4</div>
  <div class="area s">5</div><div class="area s">A5</div><div class="area s">B5</div><div class="area s">C5</div><div class="area s">D5</div><div class="area s">E5</div>
</div>
表示例




(3) 色

色を指定するときに使用します。

関数引数説明
rgb(赤,緑,青)赤緑青:0~255または0%~100%RGB値で色の指定を行う
rgba(赤,緑,青,不透明度)赤緑青:0~255または0%~100%
透明度:0(透明)~1(不透明)
RGB値と不透明度で色の指定を行う
hsl(色相,彩度,輝度)色相:0°~360°
彩度:0%(純色)~100%(灰色)
輝度:0%(黒)~50%(純色)~100%(白)
色相、彩度、輝度の3要素で色の指定を行う
hsla(色相,彩度,輝度,不透明度)色相:0°~360°
彩度:0%(純色)~100%(灰色)
輝度:0%(黒)~50%(純色)~100%(白)
透明度:0(透明)~1(不透明)
色相、彩度、輝度の3要素と不透明度で色の指定を行う

rgb の例です。

下側の例(熊の絵)では、背景画として熊の絵を設定して、その上に背景色の不透明度を変えた文字列を表示しています。

記述例(一部)
<span style="background-color:rgb(127,127,255);">rgb(127,127,255)</span>

<span style="background-color:rgba(255,0,0,0.8);">rgba(255,0,0,0.8)</span>

表示例




hsl の例です。

下側の例(熊の絵)では、背景画として熊の絵を設定して、その上に背景色の不透明度を変えた文字列を表示しています。

記述例(一部)
<span style="background-color:hsl(90,50%,75%);">hsl(90,50%,75%)</span>

<span style="background-color:hsla(180,100%,50%,0.75);">hsla(180,100%,50%,0.75)</span>

表示例




(4) グラデーション

色を指定するときに使用します。

関数引数説明
linear-gradient(角度, 開始, 途中, ... ,終了)下記参照(注1)線形グラデーションを指定する
(直線的に色が変化する)
repeating-linear-gradient(角度, 開始, 途中, ... ,終了)
radial-gradient(形状|大きさ at 位置,開始, 途中, ... ,終了)下記参照(注2)円形グラデーションを指定する
(中心から広がるように色が変化する)
repeating-radial-gradient(形状|大きさ at 位置,開始, 途中, ... ,終了)
conic-gradient(開始, 途中, ... ,終了)下記参照(注3)円錐グラデーションを指定する
(中心点の周りを回りながら色が変化する)
repeating-conic-gradient(開始, 途中, ... ,終了)
(注1)
属性値説明必須
角度グラデーションの方向(上下方向が 0deg)
あるいは to に続いて top、bottom、left、right(規定値:0deg)
開始空白で区切った、グラデーションの開始色とその開始位置(規定値:0%)
途中空白で区切った、グラデーションの途中色とその開始終了位置(規定値:前後の位置の中間)×
終了空白で区切った、グラデーションの終了色とその終了位置(規定値:100%)

    ○位置は、25% や 30px のように数値と単位で開始位置からの距離を指定する。省略することもできる。

    ○位置が一つも書かれていない場合は指定された色の数で均等割り

(注2)
属性値説明必須
形状グラデーションの形状(circle か ellipse)(規定値:ellipse)○(大きさとどちらか)
大きさキーワードまたはグラデーションの半径(1つなら円、2つなら楕円)
キーワード意味
closest-sideグラデーションの中心から、グラデーションで塗りつぶす図形の最も近い辺までの大きさ
closest-cornerグラデーションの中心から、グラデーションで塗りつぶす図形の最も近い角(頂点)までの大きさ
farthest-sideグラデーションの中心から、グラデーションで塗りつぶす図形の最も遠い辺までの大きさ
farthest-cornerグラデーションの中心から、グラデーションで塗りつぶす図形の最も遠い角(頂点)までの大きさ
○(形状とどちらか)
位置グラデーションの中心位置またはキーワード(規定値:center)
キーワード意味
top
bottom
left
right
center中央
×
開始空白で区切った、グラデーションの開始色とその開始位置(規定値:0%)
途中空白で区切った、グラデーションの途中色とその開始終了位置(規定値:前後の位置の中間)×
終了空白で区切った、グラデーションの終了色とその終了位置(規定値:100%)

    ○位置は、25% や 30px のように数値と単位で中心からの距離を指定する。省略することもできる。

    ○位置が一つも書かれていない場合は指定された色の数で均等割り

(注3)
属性値説明必須
開始空白で区切った、グラデーションの開始色とその開始位置(規定値:0%)
途中空白で区切った、グラデーションの途中色とその開始終了位置(規定値:前後の位置の中間)×
終了空白で区切った、グラデーションの終了色とその終了位置(規定値:100%)

    ○位置は、25% や 30deg、0.3turn のように数値と単位で角度を指定する。省略することもできる。

    ○位置が一つも書かれていない場合は指定された色の数で均等割り



repeating-~ は、グラデーションですべてが塗りつぶされないとき、同じグラデーションが繰り返されます。

記述例
<div style="background:linear-gradient(30deg, orange, yellow 80px, green);"></div>
<div style="background:repeating-linear-gradient(to right, orange, yellow, green 40%);"></div>
<div style="background:radial-gradient(circle farthest-side at 25% 20%, orange, yellow 100px, green);"></div>
<div style="background:repeating-radial-gradient(ellipse farthest-side at 25% 20%,orange,yellow 50px,green 70px);"></div>
<div style="background:conic-gradient(orange 25%, yellow 60%, green);"></div>
<div style="background:repeating-conic-gradient(orange 0%, yellow 20%, green 33.3%);"></div>
表示例




(5) 変形

移動、拡大、縮小、回転、傾斜などの変形を指定するときに transform: に続けて指定します。なお、Safariでは機能しませんが、-webkit- を付けると機能するものもあります。

また、3D での変形のときは、変形させる要素の親要素に 3D であることを意味する transform-style:preserve-3d; と 遠近法の視点との距離を表す perspective 属性が必要になります。

詳しくは、8 変形 を参照してください。

関数引数説明
rotate(回転角度)回転角度:数値+単位2D: 要素の中央を中心に時計回りの 2D 回転を指定する。
rotate3d
(X 座標, Y 座標, Z 座標,
回転角度)
回転角度:数値+単位3D: 要素の中央を基準にして Z 軸方向に時計回りの 3D 回転を指定する。
rotateX(回転角度)回転角度:数値+単位3D: 要素の中央を基準にして X 軸方向に時計回りの 3D 回転を指定する。
rotateY(回転角度)回転角度:数値+単位3D: 要素の中央を基準にして Y 軸方向に時計回りの 3D 回転を指定する。
rotateZ(回転角度)回転角度:数値+単位3D: 要素の中央を基準にして Z 軸方向に時計回りの 3D 回転を指定する。
scale
(X 方向倍率, Y 方向倍率)
X 方向倍率:>=1で拡大、<1で縮小
Y 方向倍率:同上(規定値:1)
2D: 要素を X 方向、 Y 方向の中央を基準に拡大・縮小する。
scale3d
(X 方向倍率,Y 方向倍率,
Z 方向倍率)
X 方向倍率:>=1で拡大、<1で縮小
Y 方向倍率:同上(規定値:1)
Z 方向倍率:同上(規定値:1)
3D: X 方向、Y 方向、Z 方向へ拡大縮小する。
scaleX(倍率)倍率:>=1で拡大、<1で縮小2D: 要素を X 方向の中央を基準に左右に拡大・縮小する。
scaleY(倍率)倍率:>=1で拡大、<1で縮小2D: 要素を Y 方向の中央を基準に上下に拡大・縮小する。
scaleZ(倍率)倍率:>=1で拡大、<1で縮小3D: 要素を Z 方向の中央を基準に上下に拡大・縮小する。
skewX(傾斜角度)傾斜角度:数値+単位2D: 要素の中央を中心に X 軸方向への傾斜を指定する。
skewY(傾斜角度)傾斜角度:数値+単位2D: 要素の中央を中心に Y 軸方向への傾斜を指定する。
translate
(X 方向距離, Y 方向距離)
X 方向距離:数値+単位
Y 方向距離:同上(規定値:0px)
2D: 要素を X 方向と Y 方向に 2D 移動する。
translate3d
(X 方向距離,Y 方向距離,
Z 方向距離)
X 方向距離:数値+単位
Y 方向距離:数値+単位(規定値:0px)
Z 方向距離:数値+単位(規定値:0px)
3D: 要素を X 方向、Y 方向、Z 方向に 3D 移動する。
translateX(距離)数値+単位2D: 要素を X 方向に 2D 移動する。
translateY(距離)数値+単位2D: 要素を Y 方向に 2D 移動する。
translateZ(Z距離)数値+単位2D: 要素を Z 方向に 3D 移動する。

表示例は、8 変形 も参照してください。

なお、下の例では黄色い部分が本来の図形の位置で、そこからどのように変形されたかを示しています。

記述例
<div>
  <div style="transform:translate(50px,20px);"></div>
</div>
<div>
  <div style="transform:scale(1.5,1.2);"></div>
</div>
<div>
  <div style="transform:rotate(60deg);"></div>
</div>
<div style="transform-style:preserve-3d;perspective:100px;">
  <div style="transform:translateZ(20px);"></div>
</div>
<div style="transform-style:preserve-3d;perspective:100px;">
  <div style="transform:rotateX(60deg);"></div>
</div>
表示例

(6) フィルター

ぼかしや色変化などのグラフィック効果を要素に適用するために指定します。

8.4 フィルターも参照してください。

関数引数説明
blur(半径)ぼかしの半径(大きい値になるほどよりぼかしが入る)画像をぼかす。
brightness(割合)明るさの割合:0~1(暗くなる)、1~(明るくなる)(注)画像の明るさを変える。
contrast(割合)明るさの割合:0~1(コントラストが下がる)、1~(コントラストが上がる)画像のコントラストを変える。
drop-shadow(X位置 Y位置
[ ぼかし半径[ 影の色]])
X位置:水平方向の距離
Y位置:垂直方向の距離
ぼかし半径:0以上の値。大きいほど薄くなる
影の色(規定値:ブラウザによる)
影が広がる半径を変える。
grayscale(割合)変換の度合い:0~1(1で完全なグレースケール)グレースケールに変換する。
hue-rotate(色相)色相:0°~360°の範囲の角度色相を指定する。
invert(割合)変換の割合:0~1(1で完全な反転)階調を反転する。
opacity(割合)不透明度の割合:0~1(1で完全な不透明)不透明度を指定する。
saturate(彩度)彩度:0~1(暗くなる)、1~(明るくなる)彩度を指定する。
sepia(彩度)変換の割合:0~1(1で完全なセピア色)セピア色を指定する。

(注)割合:数値もしくは % (0.3 と 30% は同じ意味)


記述例
<img src="bear.png" style="filter:blur(5px);">
<img src="bear.png" style="filter:brightness(0.4);">
<img src="bear.png" style="filter:contrast(200%);">
<img src="bear.png" style="filter:drop-shadow(16px 16px 20px blue);">
<img src="bear.png" style="filter:grayscale(50%);">
<img src="bear.png" style="filter:hue-rotate(90deg);">
<img src="bear.png" style="filter:invert(75%);">
<img src="bear.png" style="filter:opacity(25%);">
<img src="bear.png" style="filter:saturate(30%);">
<img src="bear.png" style="filter:sepia(80%);">
表示例

(7) タイミング

アニメーションの変化のタイミング・進行割合を指定するために指定します。

9.3  変化のタイミング も参照してください。

関数引数説明
cubic-bezier(x1, y1, x2, y2)[x1, y1], [x2, y2] 基準点[0.0, 0.0] から始まり、[x1, y1], [x2, y2] を基準点にして [1.0, 1.0] に到達する三次ベジェ曲線に従い変化する。

記述例
スタイルシート
@keyframes anime {
  from {width: 0px;}
  80% {width: 500px;}
  to {width: 500px;}
}
div {
  height:20px;
  background: aquamarine;
  animation: anime 5s infinite both;
}

ボディ
<div style="animation-timing-function:linear;">linear</div>
<div style="animation-timing-function:animation-timing-function:cubic-bezier(0.1, 2.3, 0.3, 0.3);">cubic-bezier(0.1, 2.3, 0.3, 0.3)</div>
表示例

(8) URL

画像などのファイルへのパスや グラデーションやマスクなどの ID を指定する場合に使用します。

ファイルを指定できる属性としては、背景画像ボーダー画像マスク画像フォントなどがあります。

また、ID を指定できる属性としては、SVG の 線の色面の色マーカーパターン などがあります。

指定するファイルへのパスは、ダブルクォーテーション( " )、 または、シングルクォーテーション( ' )の引用符で囲みますが、引用符を省略することもできます。

関数引数説明
url(パス | #ID)パス:ファイルへの URI
ID:要素の ID
ファイルあるいは、ID の示す要素を参照する。

記述例
スタイルシート
img {
  mask-image:url(circle.png);
  mask-repeat:no-repeat;
}

ボディ
<div style="background-image:url(bear3.png);">background-image:url(bear3.png);</div>
<div style="border:solid 20px;border-image:url(flower.png) 20 / 20px space;">border-image:url('flower.png') 20 / 20px space;</div>
<img src="figures/bear.png" style="mask-position:center;">

<svg viewbox="00 0 200 200" width="200" height="200">
  <defs>
    <linearGradient id="g">
      <stop offset="0.2" stop-color="green"/>
      <stop offset="0.8" stop-color="yellow"/>
    </linearGradient>
    <marker id="m" refX="0" refY="35" markerWidth="30" markerHeight="40" markerUnits="userSpaceOnUse">
      <image x="0" y="0" width="30" height="40" xlink:href="flag.png"/>
    </marker>
    <pattern id="p" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse"
                  patternContentUnits="userSpaceOnUse" patternTransform="rotate(-45)">
      <circle cx="10" cy="10" r="10" fill="orange"/>
    </pattern>
  </defs>
  <rect x="20" y="0" width="140" height="50" fill="url(#g)"/>
  <ellipse cx="90" cy="90" rx="70" ry="30" fill="url(#p)"/>
  <path d="M10,170Q60,130 70,160T170,120" stroke="brown" stroke-width="10" fill="none"
                              marker-start="url(#m)" marker-mid="url(#m)" marker-end="url(#m)"/>
</svg>
表示例

(9) カウンター

カウンターを使用する場合に使用します。

コンテンツE::before も参照してください。

関数引数説明
counter(カウンタ名)カウンタ名:カウンタ変数の名称カウンタ変数の値を参照する。
counters(カウンタ名, 区切り文字)カウンタ名:カウンタ変数の名称
区切り文字:カウンタ変数の値をつなぐ文字列
階層が深い複数のカウンタ変数の値を区切り文字で結合して参照する。

記述例
スタイルシート
div.counter {counter-increment:number;}
div.counter::before {content:"(" counter(number) ") ";}

ol {counter-reset: s; list-style-type: none;}
li {counter-increment: s;}
li::before {content: counters(s, ".") " ";}

ボディ
<div class="counter">最初の行</div>
<div class="counter">次の行</div>

<ol>
  <li>item</li>
  <li>group
    <ol>
      <li>item</li>
      <li>group
        <ol>
          <li>item</li>
        </ol>
      </li>
    </ol>
  </li>
</ol>
表示例

1.4 ボーダー・パディング・マージン

HTML で次のように記述したとします。

  <h1>竹取物語</h1>
  <p>今は昔、竹取の翁といふものありけり。野山にまじりて竹を取りつつ、よろづのことに使ひけり。</p>

この例では h1 要素と p 要素の二つの要素が使われています。CSS では、これらの要素を長方形のボックスとして扱います。このボックスをグレイの矩形として、理解の助けになるように別途描いています。

表示例

この「ボックス」に枠線をつけたり、横幅や高さなどを決めたりして自由に配置することで、いろいろなデザインが可能になります。

ボックスには三つの重要な要素があります。ボーダー、パディング、マージンです。

ボーダー
ボックスの周りの枠線
パディング
枠線と中身の間隔
マージン
枠線の外側の余白(となりのボックスとの距離)

パディング や マージン の幅は自由に大きさを指定でき、さらに上下左右に個別に指定することも可能です。ボーダー も同じく、幅・色・スタイル(線種)を上下左右、個別に指定できます。