Produced by Fourier

HTMLのstyle属性に書いたCSSが当たらないときにチェックすべきこと

Kyouhei Horizumi Kyouhei Horizumi カレンダーアイコン 2023.01.20

主な対象読者

HTML  に直接書いた  CSS  が当たらない」という現象が起きている方

特に

  • HTML  コーダー
  • フロントエンド開発者(Web)

概要

HTML  に直接書いた  CSS  が当たらない」という現象があったので、原因を探してみました。

調査

まず該当の箇所を見てみました。

フォントが当たっているので、 CSS  ファイルに書いたスタイルは当たっていることが分かります。

しかし、 HTML  に直接書いてある style="color: red;" だけ当たっていないようです。

<p style="color: red;">デジタルと<wbr>アナログの融和で、<br>もっと便利に、<br>もっと楽しく。</p>

Consoleを確認する

Chrome のデベロッパーツールを開き Console タブを開いたところ、エラーが出ていました。

💡
デベロッパーツールの開き方は、ページ自体に右クリックをして「検証」を押すと出てきます。

デベロッパーツールの上側にConsoleタブがあります。

Refused to apply inline style… と出ているので、どうやら今回の原因と関係があるようです。

原因

上記のエラー文を翻訳してみたところ、今回の場合誰かが設定した Content Security Policy(通称 CSP)によって、インラインのスタイルがブロックされてしまっているようでした。

コンテンツセキュリティポリシー (CSP) - HTTP | MDN thumbnail

コンテンツセキュリティポリシー (CSP) - HTTP | MDN

コンテンツセキュリティポリシー (CSP) は、クロスサイトスクリプティング (Cross-site_scripting) やデータインジェクション攻撃などのような、特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティレイヤーです。 これらの攻撃はデータの窃取からサイトの改ざん、マルウェアの拡散に至るまで、様々な目的に用いられます。

https://developer.mozilla.org/ja/docs/Web/HTTP/CSP

解決方法

バックエンド・サーバー担当以外の人

スタイルを外部のCSSファイル内でなるべく書くようにしてみましょう。

それが難しいのであれば、バックエンドもしくはサーバーを設定した方に、CSPの style-srcunsafe-inline を許可して欲しいと伝えましょう。

バックエンド・サーバー担当の人

リスクを考慮しながら、HTTPのレスポンスヘッダーにある Content-Security-Policystyle-srcunsafe-inline を追加しましょう。

style-src: 'self' 'unsafe-inline'

またCSPを設定する時は、事前周知をした方が良いと思います。

結果

上記を実施すると、問題無く style="color: red;" が当たりました。

まとめ

HTML  に書いた  CSS  だけが当たらないというのは、未知のパターンになると思います。

困ったときは Console で、エラーを見る習慣を付けると良いと思います。

この記事で早期解決になることを願います。

関連記事