CSS において ::after は、選択した要素の最後の子要素として擬似要素を作成します。よく content プロパティを使用して、要素に装飾的な内容を追加するために用いられます。この要素は既定でインラインです。

/* リンクの後に矢印を追加 */
a::after {
  content: "";
}

メモ: ::before 及び ::after によって作成される疑似要素は要素の整形ボックスに含まれるため<img> 要素や <br> 要素のような置換要素には適用されません。

構文

/* CSS3 syntax */
::after

/* CSS2 syntax */
:after

メモ: CSS3 では疑似クラス疑似要素を見分けやすくするために、 ::after の表記法(二重コロン付き)が導入されました。ブラウザーでは CSS2 で導入された :after も使用できます。

シンプルな使い方

2つのクラスを作成しましょう。1つはつまらない段落で1つは楽しい段落です。これらのクラスを使用して、段落の最後に疑似要素を追加することができます。

HTML

<p class="boring-text">古くつまらないテキストです。</p>
<p>つまらなくも楽しくもないふつうのテキストです。</p>
<p class="exciting-text">MDN への協力は簡単で楽しいものです。</p>

CSS

.exciting-text::after {
  content: " <- 楽しい!"; 
  color: green;
}

.boring-text::after {
  content: " <- ツマラナイ!";
  color: red;
}

結果

装飾の例

content プロパティ内の文字列や画像は、大体思う通りに整形することができます。

HTML

<span class="ribbon">このテキストの後のオレンジのボックスを見てください。</span>

CSS

.ribbon {
  background-color: #5BC8F7;
}

.ribbon::after {
  content: "かわいいオレンジのボックスです。";
  background-color: #FFBA10;
  border-color: black;
  border-style: dotted;
}

結果

ツールチップ

この例は、 ::after を CSS の attr() 関数と data-descr カスタムデータ属性との組み合わせで使用し、ツールチップを作成しています。 JavaScript は必要ありません。

HTML

<p>Here we have some
  <span data-descr="collection of words and punctuation">text</span> with a few
  <span data-descr="small popups that appear when hovering">tooltips</span>.
</p>

CSS

span[data-descr] {
  position: relative;
  text-decoration: underline;
  color: #00F;
  cursor: help;
}

span[data-descr]:hover::after {
  content: attr(data-descr);
  position: absolute;
  left: 0;
  top: 24px;
  min-width: 200px;
  border: 1px #aaaaaa solid;
  border-radius: 10px;
  background-color: #ffffcc;
  padding: 12px;
  color: #000000;
  font-size: 14px;
  z-index: 1;
}

結果

仕様書

仕様書 状態 備考
CSS Pseudo-Elements Level 4
::after の定義
草案 前回の版から重要な変更はなし
CSS Transitions
transitions on pseudo-element properties の定義
草案 擬似要素で定義されたプロパティのトランジションを許可
CSS Animations
animations on pseudo-element properties の定義
草案 擬似要素で定義されたプロパティのアニメーションを許可
Selectors Level 3
::after の定義
勧告 2重コロンの構文を導入
CSS Level 2 (Revision 1)
::after の定義
勧告 初回定義。コロン1つの構文のみ

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 あり
完全対応 あり
完全対応 あり
代替名
代替名 非標準の名前 :after を使用しています。
Edge 完全対応 あり
完全対応 あり
完全対応 あり
代替名
代替名 非標準の名前 :after を使用しています。
Firefox 完全対応 1.5
補足
完全対応 1.5
補足
補足 Before Firefox 57, Firefox had a bug where ::after pseudo-elements were still generated, even if the content property value were set to normal or none.
補足 Before Firefox 3.5, only the CSS level 2 behavior of :after was supported, which disallowed position, float, list-style-* and some display properties.
完全対応 1
代替名
代替名 非標準の名前 :after を使用しています。
IE 完全対応 9
完全対応 9
完全対応 8
代替名
代替名 非標準の名前 :after を使用しています。
Opera 完全対応 7
完全対応 7
完全対応 4
代替名
代替名 非標準の名前 :after を使用しています。
Safari 完全対応 4
完全対応 4
完全対応 4
代替名
代替名 非標準の名前 :after を使用しています。
WebView Android 完全対応 あり
完全対応 あり
完全対応 あり
代替名
代替名 非標準の名前 :after を使用しています。
Chrome Android ? Edge Mobile 完全対応 あり
完全対応 あり
完全対応 あり
代替名
代替名 非標準の名前 :after を使用しています。
Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android ?
Animation and transition supportChrome 完全対応 26Edge 完全対応 ありFirefox 完全対応 4IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 完全対応 ありChrome Android ? Edge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。
非標準の名前を使用しています。
非標準の名前を使用しています。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, marmot1123, ethertank, sosleepy
最終更新者: mfuji09,