HTMLとCSSを書くMacユーザー向け Chrome DevToolsの使い方

## この記事の概要

HTMLとCSSを書くMacユーザーのためのVisual Studio Codeの使い方の記事です。

Chrome DevToolsは非常に多機能なため、単に「便利な使い方を記事にしました」だと際限なく書けてしまいます。
そのため、今回はタイトルにあるような属性の人に絞ってまとめました。

## 起動方法

`option` + `command` + `I` または `F12`を押すと起動できます。
起動すると次のように画面が変化します。

| 起動前 | 起動後 |
| --- | --- |
| ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/4167da43-9e5f-38a7-9ce6-ea1af25293bb.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/2fc8d7e5-d2cc-3bd6-8607-f686813ac622.png) |

## HTML

### HTMLの選択

パネルの`Elements`タブからHTMLが見れます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/81251507-ba4b-4b35-0399-bedbf5676d9c.png)

以下の3つの方法で確認することが多いでしょう。

1. 手動で要素を展開して確認する
2. `Select an element in the page to inspect it`から要素を選択して確認する
3. 検索してヒットした要素を確認する

#### 手動で要素を展開して確認する

次の動画では「ヘッダー内のロゴのスタイルを見たい」という想定で操作しています。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/3b1bb91e-4c74-31b2-f9a4-746a8dc7caff.gif)

マークアップの階層を理解していて、かつネストが浅い箇所の確認をする場合はこの方法が早いです。

#### `Select an element in the page to inspect it`で要素を選択して確認する

次の画像の、緑色の枠で囲った部分をクリックすると使えます。
ショートカットは `command` + `shift` + `C`です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/fcd851c9-af6c-4891-0271-3b032855e822.png)

一度クリックするとマークが青くなり、その状態でブラウザ内の要素にカーソルをあわせます。
およそのあたりをつけたら、実際に見たいタグを`Elements`パネル内で探します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/721c33b8-b6a6-f6c2-aa85-e9e720ad4fe5.gif)

視覚的にはどこにあるか分かっているけど、コードとしてどこにあるかが分からないときにはこの方法が良いです。

#### 検索してヒットした要素を確認する

`Elements`パネルを一度クリックした上で、`command` + `F`を押すと検索窓が開きます。
検索したい文字列を入力して、矢印ボタンを押すと次/前の候補にジャンプします。[^jump-to-candidate]

[^jump-to-candidate]: ショートカットで、returnで次、shift + returnで前の候補にもジャンプできます。

次の動画では「`navigation`という文字列を含む要素を検索している」という想定で操作しています。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/01403f0f-0562-a510-87b5-ff2ee3e43da9.gif)

クラス名などは分かっているけど、それがどの要素を指しているか分からないときにはこの方法が良いです。

### HTMLの確認

前の章のやり方で目当ての要素を選択できたとします。
今回はページ下部の表を選択したとします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/e1b86863-1492-7a19-1d5a-1c3202b38d42.png)

1. `Elements`パネルでハイライトが当たっている部分が該当するコード
    - 以下のようなものが分かる
        - タグ
        - クラス
        - その他の属性（`aria-label`や`disabled`など）
1. 青、緑、オレンジにハイライトされているのが幅や高さ、余白
    - 青：要素自体の幅と高さ
    - 緑：padding
    - オレンジ：margin

### HTMLの編集

2つのやり方があります。

1. `Elements`パネル内でHTMLを編集する
1. `document.designMode`を`on`にしてブラウザ内で直接編集する

#### `Elements`パネル内でHTMLを編集する

`Elements`パネル内でダブルクリックをして、内容を書き換えます。
動画ではタイトルの文字列を編集していますが、クラス名なども書き換えられます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/98f9d245-0a92-4d6a-b662-08cfe2ace8d0.gif)

#### `document.designMode`を`on`にしてブラウザ内で直接編集する

`Elements`パネルの横にある`Console`パネルを開いて、`document.designMode = 'on'`と入力します。
すると、サイト内の文字列を直接書き換えられます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/45301346-e666-cbbc-ddbc-61f6cbdc1054.gif)

`Elements`パネル内からHTMLを書き換える方が自由度が高いですが、コードの構造によっては編集が大変です。
そのため、単なるテキスト編集であればこちらの方法の方が速いです。

## CSS

### CSSの確認

#### Stylesパネル

要素を選択すると、その要素にかかるCSSが`Styles`パネルに表示されます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/a229637c-7795-5006-5b24-1a5876ebd73e.png)

#### Computedパネル

隣の`Computed`パネルに移ると、ボックスモデルと、最終的に適用されているスタイルが表示されます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/56b00fa8-ad6d-a3d8-bb63-c7702bcbbd8e.png)

`Filter`欄にテキストを入力すると、特定の要素だけを抜き出せます。
次の画像は`margin`だけのフィルターをかけています。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/a3d6ce89-4b14-a7ee-2c7c-fc130b47d2ad.png)

`Show all`にチェックを入れるとすべてのCSSプロパティが表示されます。
グレーアウトしているものは指定されておらず、ユーザーエージェントのスタイルが当たっているものです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/5adf73fe-ff8d-21d2-4e92-136cd25fcc4a.png)

### CSSの編集

`Styles`パネルに表示されているCSSをクリックすると、色々なものが変えられます。

#### 既存のクラスにスタイルを追加・インラインでスタイルを追加

次の画像は新たにプロパティを追加している状態で、それ以外にもクラス名を変更することなども可能です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/6091edd5-af1d-187d-31d7-6255ae63f2a2.gif)

#### 既存のクラスのスタイルを無効化

横にあるチェックを外せばプロパティを無効にもできます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/cbfd68ad-385f-4b0f-8213-56baa6e809db.gif)

#### 状態変化

要素そのものではなく、要素の状態を変えることもできます。
次の動画は`hover`を再現し、その上でCSSを編集しています。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/dae298f4-a7c8-75d7-b655-6c8915ada6a9.gif)

#### 既存クラスの割り当て

プロパティを直接触らず、既存のクラスを追加/削除もできます。
`.cls`をクリックすることで操作可能です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/530cb1de-0c03-ca8f-7d53-78b3d270178d.gif)

#### 新規スタイルの追加

完全に新規のスタイルを追加することも可能です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/f3b5844e-64b7-bf96-359f-8d15cccc175e.gif)

#### ライトモードとダークモードの切り替え

ライトモードとダークモードを切り替えることもできます。
（見本に選んだサイトがダークモード未対応なことに後から気づき、ここだけ違うサイトで実演しています）

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/d02b716a-9171-4bb2-9597-00dced021d51.gif)

## デバイス別の見た目

次の画像の、緑色の枠で囲った部分をクリックすると使えます。
ショートカットは `command` + `shift` + `M`です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/a34c9dc4-a453-3504-ba60-de7b992807d7.png)

プリセットから色々なデバイスサイズを選べるのに加え、自分で追加することも可能です。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/c8b9a1b0-c41c-da9b-c7be-25a96d1c77a2.gif)

ちなみに、プリセットの1番上にある`Responsive`は自由にサイズを変えられて便利ですが、デフォルトではモバイルデバイス扱いになっているので`:hover`の確認ができません。
この場合、`More options`から`Add device type`を選択し、デフォルトが`Mobile`になっているのを`Desktop`に変えましょう。
これで`:hover`の確認もできます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/6adc09a3-51e9-e88a-ac9f-cbc903d78105.png)

## 上手く扱うためのケーススタディ

### CSS Overviewをはじめに眺めておく

いきなり初紹介の機能を出してしまいましたがご容赦ください。
右上のケバブメニューから`More tools > CSS Overview`を選択します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/25e619e1-5587-1064-9f15-27c0bb675934.png)

次のようなウィンドウが開くので`Capture overview`を選択します。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/3f1325ea-d373-aa87-81d5-3fb70d87afe8.png)

レポートが生成されます。
これだけを見てどうのこうのは難しいですが「こんなの、どこで使ってるんだ？」とか「違いの分からない色やフォントサイズ定義が無数にある」など大まかな問題を把握するのには役立つでしょう。

| 色 | フォント | 未使用のCSS | メディアクエリ |
| --- | --- | --- | --- |
| ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/d9d3349b-e9a8-a599-2a24-7b12cfc4615b.png) | ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/3ef10e22-e3c6-26e5-6c09-f84de99ee74a.png) | ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/15a1103e-6c74-1cc2-31bb-484e8a4db331.png) | ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/17aa4aee-565c-2856-11f7-cfcb6b44de07.png) |

### カスケードの流れを見る

CSSをやっていて「上手くスタイルが当たらない」とき、後から別のクラスが要素を上書きしている可能性は高いです。
`Computed`パネルから目当てのプロパティを見ることで、今の描画に至るまでにどれだけカスケードが発生しているかを確認できます。

次の例は「本来はfont-sizeを14pxにしたいが、なぜか18pxになっている」シチュエーションだとします（元のサイトのスタイルを私が書き換えました）。
`Computed`の`font-family`を開くと14pxの定義の後に18pxが定義されていることが読み取れます。
該当のクラスを修正するか、そちらを外して別のクラスをつけるなどの判断ができます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/f9f5f5a4-cd1a-a9b6-37be-22d5563ebbf0.png)

### 存在しないクラスを指定していないか見る

`Elements`には表示されているクラスが`Styles`には表示されていない場合、次のようなことが考えられます。

- HTMLでのクラス名とCSSでのクラス名が一致していない
- CSSから定義を消した際、HTMLからは消し忘れて残り続けている

エディタ上では要素ごとに1まとまりに表示されていないため、こうした対応関係の崩れがあっても気づきづらいです。
一度DevToolsで確認して問題のあたりをつけたあと、エディタでのコードやコミット履歴にあたると問題を発見しやすいと思います。

### 変更した内容だけを抜き出して保存する

[新規スタイルの追加](#新規スタイルの追加)にて新規スタイルの追加をしましたが、変更した内容だけを抜き出して保存することも可能です。

まずはスタイルを触ります。
ここでは変化が分かりやすいように大きく変えました。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/525ab5ad-f3a2-424a-f496-c85399102195.png)

変更したスタイルを見ると`inspector-stylesheet`と書いてあります。
これは、DevTools上で変更した内容だけをまとめたCSSへのリンクです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/6a3d8c8e-f846-8a65-2872-227450b8a915.png)

クリックすると、追加した内容だけがまとまっています。
この上で右クリックをして`Save as...`を選ぶとCSSファイルが保存できます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214677/6909d875-bb58-e231-8093-a4e592877fa0.png)

多くの箇所を変更した後は、どこからどこまでを変更したか忘れてしまう場合もあります。
そのため、こういった手段で保存すると良いでしょう。

## 最後に

[以前似たような趣旨の記事](https://qiita.com/xrxoxcxox/items/46fce6bd54092d9be7da)を投稿したのですが、今回もかなり簡単で、知っている内容も多いかもしれません。
しかし、漫然と使うのと、しっかり理解した上で使うのでは作業効率に大きな差が出ます。

CSSのオーバーライド1つとっても、適当にクリックして書き換えれば実施できてしまいますが、今回説明したように目的の違う方法がいくつも存在します。
改めて説明すると以下のような違いがあります。

---

最後まで読んでくださってありがとうございます！
Twitterでも情報を発信しているので、良かったらフォローお願いします！

https://twitter.com/xrxoxcxox

Devトークでのお話してくださる方も募集中です！

https://jobs.qiita.com/employers/qiita-inc/dev_talks/489