CSS 過去問復習
CSSエラー発生時の挙動
エラーが発生したCSSの設定は無視され、CSSのパースが継続する
HTMLもCSSもエラーが発生してもページは表示される。
反面、ミスに気づきにくくなるのでツールを使う。
スタイルシートの読み込み
スタイルシートの優先順位
インラインスタイルシート
内部スタイルシート、外部スタイルシート
ユーザスタイルシート
ユーザがブラウザで使用するスタイル設定を定義したもの
セレクタによるCSSプロパティの優先順位
クラスセレクタ、属性セレクタ、疑似クラス
クラスセレクタ
.testClass {
font-weight: bold;
}
属性セレクタ
属性とその値を指定する
input[type="text"] {
}
属性名の書き方)
属性名 = "属性値"
属性名 ~= "属性値"
属性名 |= "属性値"
属性名 ^= "属性値"
属性名 $= "属性値"
属性名 *= "属性値"
疑似クラス
「:」 を使用して要素の状態を指定する
p:focus {
background-color: yellow;
}
:focus
:checked
:disabled
:enabled
:root
:empty
:target
:lang
:not
-childと-of-type
nth-childはセクション内の全ての要素を数えるので注意
:nth-child(n)
:nth-of-type(n)
:nth-last-child(n)
:nth-last-of-type(n)
:first-child
:first-of-type
:last-child
:last-of-type
:only-child
:only-of-type
タイプセレクタ、疑似要素
タイプセレクタ
要素の名前を指定する
p {
color: green;
}
疑似要素
「::」 を使用して、要素の一部にスタイルを適用する
要素:first-line 1行目
要素:first-letter 1文字目
要素:before cssのcontent属性の値を要素の前に配置
要素:after cssのcontent属性の値を要素の後に配置
カスケード
CSSには内部スタイルシートなど色々種類がある。
どのスタイルを適用するかを上記の優先順位を考慮に入れて決定するプロセスのこと。
id属性、class属性を使用しているか(重要度)、セレクタが特定的か、
同じくらいの特定性なら後で定義されたものが使用される
例) p要素の色は .latest つまり 青になる
p要素に直接スタイルを適用しているのは、.latestとタイプセレクタになる
クラスセレクタとタイプセレクタは、クラスセレクタの方が優先順位が高い
よって青になる
.latest {
color: blue;
}
#new {
color: yellow;
}
p {
color: red;
}
<div id="news" style="color: green;">
<p class="latest">HTML5</p>
</div>
@規則
@import
CSSファイルに別のCSSファイルを読み込む
@media
ブラウザごとにスタイルを変える
@font-face
カスタムフォントをダウンロードし適用する
@keyframes
アニメーションを作成
@supports
ブラウザが機能をサポートしてるか確認し、スタイルを適用する
@page
印刷時のデザインを指定
@counter-style
CSSカウンタを設定
デザイン適用の例
<h2>NEWS</h2>
<ul>
<li class="specialnews">aaaaaaaaaa</li>
<li>bbbbbbbbbbb</li>
</ul>
li クラスspecialnewsの色を変える
.クラス名で指定
.specialnews {
color: red;
}li要素を指定
li {
color: red;
}ul要素を指定 子クラスのliも影響する
ul {
color: red;
}ユニバーサルセレクタ
{
color: red;
}
属性セレクタ
属性と属性値を指定する
属性名の書き方)
[属性名] {
}
属性名 = "属性値" 完全一致
属性名 ~= "属性値" 単語リストの一部の一致を見つける
属性名 |= "属性値" 指定された属性値と完全一致、
または属性値で始まる
属性名 ^= "属性値" 文頭が属性値
属性名 $= "属性値" 文末が属性値
属性名 *= "属性値" 属性値を含む
カスタムデータ属性
data-属性名
属性セレクタの例)
属性名
[data-testAttr] {
color: blue;
}
<p data-testAttr>[属性名]を持つ</p>
疑似クラス
「:」 を使用して要素の状態を指定する
クラスとは要素に付けたクラス名のこと
:focus フォーカスされた要素にスタイルを適用
:checked チェックされたチェックボックスにスタイルを適用
:disabled 無効化された要素にスタイルを適用
:enabled 有効な要素にスタイルを適用
:root ルート要素にスタイルを適用
:empty 子要素を持たない要素にスタイルを適用
:target アンカーリンクのターゲット要素にスタイルを適用
:lang 特定の言語属性を持つ要素にスタイルを適用
:not 指定されたセレクタに一致しない要素にスタイルを適用
:nth-child(n) n番目の子要素にスタイルを適用
:nth-of-type(n) 同じ要素のn番目の要素にスタイルを適用
:nth-last-child(n) 最後から数えてn番目の子要素にスタイルを適用
:nth-last-of-type(n) 同じ要素の最後から数えてn番目の要素にスタイルを適用
:first-child 最初の子要素にスタイルを適用
:first-of-type 同じ要素の最初の要素にスタイルを適用
:last-child 最後の子要素にスタイルを適用
:last-of-type 同じ要素の最後の要素にスタイルを適用
:only-child 唯一の子要素にスタイルを適用
:only-of-type 同じ要素の唯一の要素にスタイルを適用
疑似要素
「::」 を使用して、要素の一部にスタイルを適用する
要素の前後などを指定する
要素:first-line 1行目
要素:first-letter 1文字目
要素:before cssのcontent属性の値を要素の前に配置
要素:after cssのcontent属性の値を要素の後に配置
セレクタ
拡張子の例
1)
A, B
A > B
A + B
A ~ B
以下の拡張子は使えない)
A < B
A - B>
ブロックレベルの要素
主なブロックレベルの要素:
div
canvas
form
h1
il
ul
li
p
table
video
インラインレベルの要素
主なインラインレベルの要素:
span
button
input
select
textarea
label
a
img
displayの主な値
要素をブロックレベルにする
display: block;要素をインラインレベルにする
display: inline;要素を可変ボックスにする
display: flex;
div要素を中央寄せ
要素の左右のマージンをautoに設定
margin: 0 auto;
または、
margin-left: auto;
margin-right: auto;
autoは自動的に領域を確保する
左右ともautoなら左右均等にマージンがかかる
よって中央寄せになる
div要素に収まりきらない部分のテキストを非表示にする overflow
表示
overflow: visible;非表示
overflow: hidden;スクロールバーの表示
overflow: scroll;
CSS要素
clip 特定の部分のみ可視化する
clip: rect(上、右、下、左)
img {
position: absolute;
clip rect(10px, 250px, 250px, 0px);
}
background 背景関連
backgroundプロパティでまとめて設定できる値
background-image 背景画像を設定
background-position 背景画像の位置を指定
background-size 背景画像の大きさを指定
background-repeat 背景画像の繰り返しを制御
background-origin 背景画像の配置領域を指定
background-clip 枠線近辺の背景画像の表示方法を指定
background-attachement 背景画像がブロックと一緒の時スクロールまたは固定を指定
background-color 背景色を指定
background: url(xxx.jpg) no-repat;
background-size プロパティ
auto 背景画像の元の縦横比を崩さずに拡大・縮小する
contain トリミングや伸張なしに可能な限り背景画像を縮小・拡大する
cover 伸長なしに可能な限り背景画像を縮小・拡大する
initial 初期値が設定される
unset 設定が解除される
borderプロパティ
borderプロパティで設定できる値
border-width 枠線の幅を指定
border-style 枠線のスタイルを指定
border-color 枠線の色を指定
border-radius 枠線を丸める
例)
widthとheightが100pxのdiv要素を円形に表示する
border-radius: 50%;
円形になる
columnプロパティ マルチカラムレイアウト
マルチカラムレイアウトは、多段レイアウトを実現するプロパティ
columns: 2;
要素が2列に分かれたレイアウトにできる
マルチカラムレイアウトの例:
columns 2)~3)のショートハンドプロパティ
column-count 要素の列数を指定する
column-width 要素の最小幅を指定する
column-gap 列同士の間隔を指定する
column-rule 6)~8)のショートハンドプロパティ
column-rule-style 列間の線のスタイルを指定する
column-rule-width 列間の線の幅を指定する
column-rule-color 列間の線の色を指定する
column-span 全ての列にまたがる要素かどうかを指定する
HTMLの要素を非表示にするCSSプロパティの設定例
opacity: 0;
0~1で設定する
0に近づくほど透明visibility: hidden;
display: none;
上記の方法で非表示にしたとき、
それまでHTML要素が占めていたスペースは、
-> opacity, visibility を使用の場合は「確保されたまま」
-> display を使用の場合はスペースは「詰められる」
メモ: display: none のみスペースが詰められる
他のは見えなくしただけだから?
color: rgba(0, 255, 0, 0);
rgbaのaチャネルを「0」にすると透過する
z-index 要素の重なり順
以下のように要素の重なり順を決める
要素1 {
z-index: 1;
}
要素2 {
z-index: 2;
}
可変ボックスにおいてflexアイテムの配置を設定する
可変ボックスとは、様々なディスプレイサイズに適応するためのレイアウトモードの1つ
可変ボックスの特徴:
水平、垂直方向に要素を並べることが出来る
HTMLの記述順にとらわれず、要素を並べることが出来る
要素の大きさを変更できる
flexコンテナはflexアイテムの入れ物
flexコンテナの作り方:
以下のいずれか
display: flex;
display: inline-flex;
justify-contentプロパティ
フレックスアイテムの配置を制御するflex-direction
主軸の方向を設定するflex-basis
flexアイテムのサイズを設定する
colorプロパティ
colorプロパティの書式:
color: 色名;
color: #rrggbb ;
color: rbg(r, g, b);
color: rgba(r, g, b, a);
color: hsl(色相、彩度、輝度);
color: hsla(色相、彩度、輝度、a);
0, 255, 255
と3つの数字だけではだめ
transformプロパティ
translateプロパティは、要素を移動、回転、拡大、縮小、傾斜させる
設定値:
translate 要素を移動
rotate 要素を回転させる
scale 要素を拡大、縮小する
skew 要素を傾斜する
transform-origin
ボックスを回転させるときの原点を指定
右横に90度回転
transform-origin: right bottom;
transform: rotate(90deg);
transitionプロパティ
CSSプロパティの変化速度を制御することでアニメーションのような効果を出せる。
transitionプロパティは変化速度を制御する
トランジション関連のプロパティの値をまとめて指定する
トランジションを適用するのに使うプロパティ:
transition
transition-property
torannsition関連のプロパティ:
transition-duration
トランジション実行時に、どれだけの時間をかけるか指定transition-timing-function
表示を変化させるときに、どういうパターンで速度に変化をつけるか指定transition-delay
トランジションの開始を遅らせるtransition-property
トランジションに適用するプロパティ名を指定する
animationプロパティ
animetion
@keyframesで定義したアニメーションを要素に適用する
アニメーション関連のプロパティの値をまとめて指定できるanimetion-name
キーフレームを名前で指定して実行させるanimetion-duration
アニメーションの再生時間を設定animetion-timing-function
アニメーションの再生速度の変化パターンを指定animetion-delay
アニメーション再生の開始を遅らせるanimetion-iteration-count
アニメーションを何回繰り返して再生させるか設定animetion-direction
再生の際に、逆再生させるか等を指定animetion-play-state
アニメーションを一時停止させるanimetion-fill-mode
再生の開始が遅延されている間の表示、再生終了後の表示を指定
例)
from {
margin-left: 0%;
}
to {
margin-left: 100%;
}
animation-name: fadeout;
animation-duration: 3s; 3秒かけてアニメーションが実行される
animation-fill-mode: forwards; img要素は右側に異動し、透過する
animation-iteration-count: 2; アニメーションが2回繰り返される
animation-delay: 1s; 1秒経過してからアニメーションが開始する
Webフォント
webフォントの特徴
@font-face規則でフォントのファイルを指定する
複数のフォントフォーマットがある
@font-face規則で読み込んだフォントをfont-familyプロパティで指定する
英語だけでなく日本語もある
リスト関連のプロパティ
list-styleプロパティでまとめて指定できるプロパティ
list-style-type
list-style-image
list-style-position
list-style
list-style-type 設定できる値
disc 塗りつぶされた円形
circle 塗りつぶされてない円形
decimal 1から始まる数字
upper-roman 大文字のローマ字
upper-latin 大文字のアルファベット
lower-greek 小文字のギリシャ文字
テーブル関連のプロパティ
プロパティ名:
caption-side
キャプションを「表の上または下」に表示するborder-collapse
隣接するセルの枠線をつなげるか、切り離すかを設定するborder-spacing
隣接するセルのボーダー同士の間隔を設定empty-cells
空のセルの背景とボーダーを表示させるかを設定
box-shadowプロパティ
box-shadowプロパティ
1つ目 影のx軸の方向
2つ目 影のy軸の方向
3つ目 影のぼかし指定
4つ目 影の拡大指定
inset 影を内側に付ける
linear-gradient関数 radial-gradient関数
この2つの関数はbackground-imageプロパティの値として使用する
linear-gradient関数
直線的にグラデーションを付ける
radial-gradient関数
円形にグラデーションをかける
90deg 左から右
左から右にかけて青から赤に変わる
linear-gradient(90deg, blue, red);中心部が青、外ぶちにかけて円形に赤になる
radial-gradient(blue 0%, red 100%);
CSSカウンタ
counter-reset
counter-increment
content: counter(変数)
::before
::after
などの疑似要素も合わせて使う
body {
counter-reset: 変数;
}
要素::before {
counter-increment: 変数;
content: counter(変数) "章";
}
<style type="text/css">
body {
counter-reset: number;
}
p:before {
counter-increment: number;
content: "番号"counter(number)": ";
}
</style>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
<p>My first paragraph.</p>
<p>My first paragraph.</p>
<p>My first paragraph.</p>
テキスト関連のプロパティ
主なプロパティ
text-transform テキストの大文字・小文字表記方法を指定
white-space 空白文字の扱い方を指定
word-break 改行方法を指定
hyphens ハイフンを設定
text-aligg テキストの寄せ方を指定
word-spacing 単語間のスペースを指定
letter-spacing 文字間のスペースを指定
text-indent 先頭行のインデントを指定
font
fontプロパティで指定できる値:
font-style
font-variant フォントをスモールキャップ(小文字と同じ高さの大文字)に切り替える
font-weight
font-size
font-height
font-family
font-family
特徴:
フォントファミリ名にスペースが含まれる場合、クォーテーションで囲む
ブラウザごとに既定のフォントファミリが異なる
font-sizeプロパティ
フォントサイズを指定する
xx-small
x-small
small
medium
large
x-large
xx-large
親要素のフォントサイズと比較して、小さく・大きくする
smaller
largerピクセル単位の絶対値でフォントサイズを指定する
px親要素のフォントサイズと比較して、フォントサイズを指定する
%
emhtml要素のフォントサイズと比較して、フォントサイズを指定する
rem
例) html要素のフォントサイズと比較して、フォントサイズを1.2倍にする
font-size: 1.2rem;
font-weightプロパティ
font-styleプロパティ
例) フォントをイタリックかつ太字にする
font-weight: bold;
font-style: italic;
text-decoraitonプロパティ
プロパティ:
text-decoration-line
装飾線の種類を指定
underline 下線
overline 上線
line-through 打消し線text-decoration-style
text-decoration-lineの線のスタイル
solid 実線
double 二重線
dotted 点線
wavy 波線text-decoration-color
装飾線の色
directionプロパティ unicode-bidiプロパティ テキストの方向を指定
これらは一緒に使う。
direction: rtl 右から左
direction: ltr 左から右
unicode-bidi: bidi-override;
directionプロパティで指定した方向にテキストの方向が変わる
.directionP {
direction: rtl;
unicode-bidi: bidi-override;
}
<p class="directionP">テキスト</p>
プロパティの組み合わせ
text-shadow
テキストに影を付けるline-height
テキストの高さを指定するvertical-align
縦法以降の整列方法を設定する
CSS実装の例
HTML要素が占める幅を計算
計算に使うプロパティ:
width
padding
margin
border
box-sizing
幅の計算:
基本的に、
width + 左右のpadding + 左右のborder + 左右のmargin
ただし、box-sizing: border-box
はコンテンツのwidthとheightは、「padding」と「border」の数を含む
例1)
.box {
width: 250px;
padding: 2px;
border: solid black 1px;
margin: 5px;
box-sizing: border-box;
}
上記はwidth: 250pxになっているが、
左右のpaddingと左右のborderを含む
よって、250px = (2+2) - (1+1)
= 244px
実際のwidth: 244px となる
244px + 左右のpadding + 左右のborder + 左右のmargin
244 + (2+2) + (1+1) + (5+5)
= 244 + 4 + 2 + 10
= 260px
例2)
.box {
width: 250px;
padding: 2px;
border: solid black 1px;
margin: 5px;
}
幅の計算
250px + 左右のpadding + 左右のmargin + 左右のborder
= 250 + (2+2) + (5+5) + (1+1)
= 250 + 4 + 10 + 2
= 266px
CSSの要素 pxの設定
上下左右
margin: 10px;上下 左右
margin: 10px 20px;上 左右 下
margin: 10px 20px 30px;上 右 下 左(時計回り)
margin: 10px 20px 30px 40px;
例)
padding-top: 10px;
padding-bottom: 10px;
padding-right: 20px;
padding-left: 20px;
↓
padding: 10px 20px 10px 20px;
padding: 10px 20px;
padding: 10px 20px 10px;
autoを設定すると、マージンを自動的に設定する
例) divを中央寄せにするmarginの値(要素の左右のマージンを0にする)
margin: 0 auto;
section要素を横並び
これは
float: left;
clear: both;
を使う。
floatプロパティはHTMLの要素を左右に回り込ませる
これを設定するとそれ以降の要素は回り込み続ける
なので、clear: both を使う
左右どちらの回り込みも解除できる
<div class="wrap clearfix">
<section>A</section>
<section>B</section>
</div>
.wrap > section {
width: 300px;
margin: 10px 20px;
border: 3px solid black;
border-radius: 3px;
text-align: center;
float: left;
}
.clearfix::after {
content: "";
display: block;
clear: both;
}
column-spanプロパティ
h2のみ列内に含めないようにする
column-spanプロパティ
全ての列をまたぐ要素かどうかを指定する
列をまたぐ要素を設定
column-span: all;列をまたがない要素を設定
column-span: none;
例)
.multi {
columns: 2 300px;
}
.multi > h2 {
column-span: all;
}
<div class="multi">
<h2>aaaaaaaaaaaaaaaaaaaaaa</h2>
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bnbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
fffffffffffffffffff
</div>
カスケードの例) 最終的にp要素に適用されるスタイル
p要素に適用されるスタイル
color: red;
font-size: 1.2em;
メモ: paddingやmarginなどボックスモデルのプロパティは子要素に引き継がれない
<div style="color: red; fint-size: 1.2em; padding: 10px; border: solid 1px black;">
<p>aaaaaaaaaaaaaaa</p>
</div>
最も優先順位が高いCSSプロパティ
クラスセレクタとかが何個あるかとかそういう基準で決まる
例1)
この中では、li:hover h2 .title が優先順位が高い
.new > a.hover
li:hover h2 .title
.sp > a
.sp .capture h1
.basic li > span
この中ではクラスセレクタと疑似クラスが一番優先順位が高いセレクタになっている
例2)
この中ではIDセレクタが一番優先順位が高い
#cat .tail img
はその中でも IDセレクタ、クラスセレクタ、タイプセレクタがある
なので一番優先順位が高い
li:hover h1 .title
.sp .capture h1
.main h2 > span
#cat .tail img
#doc div > img
この記事が気に入ったらサポートをしてみませんか?