【CSS・学習ログ6】疑似要素・疑似クラスについて

# 目次
[疑似要素とは](#疑似要素とは)
[疑似クラスとは](#疑似クラスとは)

<font color=gray>教材：侍テラコヤ『HTML/CSSの基礎を学ぼう』https://terakoya.sejuku.net/programs/51/chapters</font>

## 疑似要素とは
要素の一部にスタイルを適用したいときに指定するセレクタの書き方。

**代表的な議事要素**
(1) ::before : 要素の直前にコンテンツを追加する
(2) ::after : 要素の直後にコンテンツを追加する
(3) ::first-letter : 要素の最初の文字を装飾する
(4) ::first-line : 要素の最初の行を装飾する

### 使用方法
下記のHTMLを議事要素で装飾していく。
![スクリーンショット 2023-11-15 210920.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/57b123db-7eec-353e-20b9-73e591bea5f4.png)
```html
<!DOCTYPE html>
<html>
	<head>
		<title>タイトルです</title>
		<meta charset="utf-8">
		<link rel="stylesheet" href="pseudo-elements.css">
	</head>
	<body>
		<h1>見出し1です</h1>
		<p>段落1の1行目です<br>段落1の2行目です</p>
		<h1>見出し2です</h1>
		<p>段落2の1行目です<br>段落2の2行目です</p>
	</body>
</html>
```
#### (1) ::before（要素の直前にコンテンツを追加する）
#### (2) ::aftar（要素の直後にコンテンツを追加する）

contentプロパティを使用して、h1要素の直前(before)にひし形記号◆、直後(after)に四角記号■を追加する。
![スクリーンショット 2023-11-15 211453.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/a86f8407-b467-3046-1850-5c52a7dd585f.png)
```css
h1::before {
	content: "◆";
	color: orange;
}
h1::after {
	content: "■";
	color: pink;
}
```
#### (3) ::first-letter（要素の最初の文字を装飾する）
p要素の最初の文字を24px、太字にする。
![スクリーンショット 2023-11-15 212121.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/f5374efa-e8b8-ea82-c484-cdd78fd8bb48.png)
```css
p::first-letter {
	font-size: 24px;
	font-weight: bold;
}
```
#### (4) ::aftar（要素の最初の行を装飾する）
p要素の最初の行のフォントサイズを24px、太字、文字色をグレーにする。
![スクリーンショット 2023-11-15 212457.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/bfbd1815-dab5-45aa-83aa-9a09828de8c6.png)
```css
p::first-line {
	font-size: 24px;
	font-weight: bold;
	color: gray;
}
```
## 疑似クラスとは
要素が特定の状態のときに適用できるセレクタのこと。
(1):link　未訪問のリンク(a要素など)にスタイルを適用する
(2):visited　訪問済みのリンク(a要素など)にスタイルを適用する
(3):hover　要素の上にマウスのカーソルが乗っているときにスタイルを適用する
(4):active　要素がアクティブ状態(マウスを左クリックしてから離すまで)のときにスタイルを適用する
(5):nth-child(n)　親要素内にあるすべての要素の中で、n番目の要素にスタイルを適用する
(6):nth-of-type(n)　親要素内にある同じ要素の中で、n番目の要素にスタイルを適用する
(7):not(A)　親要素内にあるAという要素以外にスタイルを適用する

※疑似要素は:(コロン)が２つ、疑似クラスは１つ。

### 使用方法
![スクリーンショット 2023-11-26 134027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/80b3619a-5e5d-9306-0764-03d7c445f9a0.png)
下記のHTMLを議事要素で装飾していく。
```html
<!DOCTYPE html>
<html>
	<head>
		<title>タイトルです</title>
		<meta charset="utf-8">
		<link rel="stylesheet" href="pseudo-classes.css">
	</head>
	<body>
		<div class="parent">
			<h1>見出し1です</h1>
			<a href="#">リンクです</a>
			<p>段落１です</p>
			<p>段落２です</p>
			<p>段落３です</p>
			<h2>見出し２です</h2>
			<p>段落４です</p>
			<p>段落５です</p>
			<p>段落６です</p>
		</div>
	</body>
</html>
```
#### (1):link　未訪問のリンク(a要素など)にスタイルを適用する
#### (2):visited　訪問済みのリンク(a要素など)にスタイルを適用する
#### (3):hover　要素の上にマウスのカーソルが乗っているときにスタイルを適用する
#### (4):active　要素がアクティブ状態(マウスを左クリックしてから離すまで)のときにスタイルを適用する
![タイトルです-Google-Chrome-2023-11-26-14-03-20.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/0d938a20-6caf-0450-e122-b8a51395c811.gif)
```css
a:link {
	color:orange;
}
a:visited {
	color: green;
}
a:hover {
	color: purple;
}
a:active {
	color: red;
}
```
#### (5):nth-child(n)　親要素内にあるすべての要素の中で、n番目の要素にスタイルを適用する
「段落２」を赤文字にする。段落２はh1要素から数えて４番目にあたるため、nに４を指定する。
![スクリーンショット 2023-11-26 142352.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/e60fc578-928c-81cd-c94b-c92766117ebd.png)
```css
.parent p:nth-child(4) {
	color: red;
}
```
#### (6):nth-of-type(n)　親要素内にある同じ要素の中で、n番目の要素にスタイルを適用する
「段落４です」にスタイルを適用する。div要素内のp要素の中で４番目にあたるため、nには４を指定する。
![スクリーンショット 2023-11-26 142957.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/5ba30116-b43b-7f6b-2de9-0c76e80514c0.png)
```css
.parent p:nth-of-type(4) {
	color: blue;
}
```
#### (7):not(A)　親要素内にあるAという要素以外にスタイルを適用する
p要素以外の要素に取り消し線を引いてみる
![スクリーンショット 2023-11-26 143303.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/111740c9-d90c-10c8-a6b9-1d0b5e7acb3a.png)
```css
.parent :not(p){
	text-decoration: line-through;
}
```
<hr>