<details> & <summary> タグのスタイル装飾
HTML <details> タグを <summary> タグと組み合わせて、CSSで装飾する方法について解説します。
純粋なCSSのみで装飾する方法に加えて、jQueryを含むJavaScriptを併用してアニメーション効果を付与する方法についても確認します。
次の目次に沿って、例とともに確認していきます。
事前に必要となる知識
HTML <details> と <summary> タグについて、正しい理解と使用方法を把握している必要があります。
detailsの矢印(marker)スタイルを装飾する
<details>タグがブラウザ上で実際に表示された状態を見ると、矢印の形(►)をしたマーカー(marker)が表示されていることが分かります。
このマーカーは、一般的に「アイコン」と呼ばれることもあります。
次のコード例を確認してみましょう。
<details>
<summary>要約内容</summary>
追加情報や詳細内容
</details>
要約内容
追加情報や詳細内容上記の例では、矢印の形をしたマーカーをCSSでユーザー定義のスタイルに変更したり、非表示にしたりすることができます。
ただし、<summary>タグは標準化されているものの、まだ実験的な実装段階であるため、ブラウザごとにこのユーザー定義スタイルの対応方法に差異がある点に注意が必要です。そのため、当面は複数のアプローチを併用する必要があります。
detailsの矢印(marker)を削除する
detailsの矢印(marker)をブラウザ画面から削除するには
- Safariブラウザと
- それ以外のブラウザに分けて
ユーザー定義のスタイルを指定する必要があります。
以下は、detailsの矢印(marker)を削除するためのユーザー定義スタイルの例コードです。
<details>
<summary>要約内容</summary>
追加情報や詳細内容
</details>
summary::-webkit-details-marker { /* Safariブラウザ用のユーザー定義スタイル */
display: none;
}
summary {
list-style-type: none; /* それ以外のブラウザ用のユーザー定義スタイル */
}
/* ブラウザ互換性のためには、上記2つのユーザー定義スタイルをすべて指定する必要があります */
要約内容
追加情報や詳細内容- Safariブラウザでdetailsの矢印(marker)を削除するには、非標準のCSS疑似要素である
::-webkit-details-markerを使用して、ユーザー定義スタイルでマーカーを非表示にすることができます。 - それ以外のブラウザでは、
<summary>タグのdisplayプロパティの値はlist-itemに設定されています。これはHTMLの基本仕様に基づき、要素のデフォルトマーカーが::marker疑似要素セレクターとしてスタイル適用されるためです。このマーカーを削除するには、<summary>タグに対してlist-style-typeプロパティの値をnoneに設定してマーカーを非表示にする方法があります(::marker疑似要素セレクターは、displayプロパティの値がlist-itemの場合にのみ生成され、displayプロパティの値を変更すると削除されます)。また、このプロパティの短縮表記(shorthand property)であるlist-styleプロパティにnoneを設定して削除することも可能です。もちろん、<summary>タグのdisplayプロパティの値自体を変更することで、標準で提供されているマーカーを削除する方法もあります。
以下は、<summary>タグのdisplayプロパティの値を変更して、標準で提供されているマーカーを削除する例です。
summary::-webkit-details-marker { /* Safariブラウザ用のユーザー定義スタイル */
display: none;
}
summary {
display: block; /* それ以外のブラウザ用のユーザー定義スタイル */
}
/* ブラウザ互換性のためには、上記2つのユーザー定義スタイルをすべて指定する必要があります */
要約内容
追加情報や詳細内容上記の例では、<summary>タグのdisplayプロパティの値をblockに変更することで、標準で提供されているマーカーを削除していますが、list-item以外の値に変更すれば同様の効果を得ることができます。例えば、display: flexやdisplay: inline-blockなどが該当します。どの値を使用するかは、開発者が要件に応じて最も効率的だと判断したものを選択すれば問題ありません。
以下は、<summary>タグのdisplay値をlist-itemから変更した場合の、ブラウザ互換性の概要です。
最終更新日: 2025-09-29
| タグと属性値 |
デスクトップ Chrome
|
デスクトップデスクトップ Edge
|
デスクトップ Firefox
|
Safari
|
|---|---|---|---|---|
<summary>
|
12 | 79 | 49 | 6 |
display: list-item
|
89 | 89 | 49 | いいえ |
detailsの矢印(marker)をカスタムで装飾する
detailsの矢印(marker)をカスタムで装飾するには、まずブラウザ画面上に表示されているdetailsの矢印(marker)を削除したうえで、::beforeや::after疑似要素を使用して矢印(marker)を作成し、装飾します。
<details>
<summary>要約内容</summary>
追加情報や詳細内容
</details>
summary::-webkit-details-marker { /* Safariブラウザ用のユーザー定義スタイル */
display: none;
}
summary {
display: block; /* それ以外のブラウザ用のユーザー定義スタイル */
}
/* ブラウザ互換性のためには、上記2つのユーザー定義スタイルをすべて指定する必要があります */
/* ここからはdetailsの矢印(marker)をカスタムで装飾 */
summary {
position: relative;
padding-left: 1.2em;
cursor: pointer;
}
summary::before {
content: "";
position: absolute;
border-top: 0.5em solid transparent;
border-bottom: 0.5em solid transparent;
border-left: 0.75em solid yellowgreen;
top: 0.2em;
left: 0;
transition: .25s transform;
}
details[open] summary:before {
transform: rotateZ(90deg);
}
要約内容
追加情報や詳細内容detailsでアコーディオン(accordion)を作成する
- 純粋なCSSのみでアコーディオンを装飾する
- CSSとjQueryでアニメーション付きアコーディオンを装飾する
純粋なCSSのみでアコーディオンを装飾する
<details>
<summary>短い内容のお知らせタイトルです。</summary>
<p>
「ティム・バーナーズ=リー」によって1989年に考案された
ワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の
ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。
現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
</p>
</details>
<details>
<summary>短い内容のお知らせタイトルです。</summary>
<p>
「ティム・バーナーズ=リー」によって1989年に考案された
ワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の
ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。
現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
</p>
</details>
<details>
<summary>短い内容のお知らせタイトルです。</summary>
<p>
「ティム・バーナーズ=リー」によって1989年に考案された
ワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の
ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。
現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
</p>
</details>
details {
padding: 0 2rem;
background-color: #f1f9eb;
border: 1px solid yellowgreen;
border-radius: 0.5rem;
margin-bottom: 1rem;
}
details:last-child {
margin-bottom: 0;
}
summary::-webkit-details-marker {
display: none;
}
summary {
display: block;
padding: 2rem 3rem 2rem 0;
font-weight: 600;
cursor: pointer;
position: relative;
}
summary::before,
summary::after {
content: "";
position: absolute;
width: 1rem;
height: 2px;
background-color: #222;
right: 1rem;
top: 2.5rem;
}
summary::after {
transform: rotateZ(90deg);
}
details p {
padding-bottom: 2rem;
}
details[open] summary::after {
display: none;
}
短い内容のお知らせタイトルです。
「ティム・バーナーズ=リー」によって1989年に考案された ワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。 現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
短い内容のお知らせタイトルです。
「ティム・バーナーズ=リー」によって1989年に考案された ワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。 現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
短い内容のお知らせタイトルです。
「ティム・バーナーズ=リー」によって1989年に考案された ワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。 現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
CSSとjQueryでアニメーション付きアコーディオンを装飾する
注意事項
以下の例コードは、あくまで簡易的なサンプルコードです。Webアクセシビリティの観点では完全ではありません。スタイルの装飾方法や動作を理解するための例としてのみ活用してください。
<style>
.demo-details-juqery-accordion {
padding: 0 2rem;
background-color: #f1f9eb;
border: 1px solid yellowgreen;
border-radius: 0.5rem;
margin-bottom: 1rem;
}
.demo-details-juqery-accordion:last-child {
margin-bottom: 0;
}
.demo-details-juqery-accordion summary::-webkit-details-marker {
display: none;
}
.demo-details-juqery-accordion summary {
display: block;
padding: 2rem 3rem 2rem 0;
font-weight: 600;
cursor: pointer;
position: relative;
}
.demo-details-juqery-accordion summary::before,
.demo-details-juqery-accordion summary::after {
content: "";
position: absolute;
width: 1rem;
height: 2px;
background-color: #222;
right: 1rem;
top: 2.5rem;
}
.demo-details-juqery-accordion summary::after {
transform: rotateZ(90deg);
}
.demo-details-juqery-accordion p {
padding-bottom: 2rem;
display: none;
}
.demo-details-juqery-accordion[open] summary::after {
display: none;
}
</style>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<details class="demo-details-juqery-accordion">
<summary>短い内容のお知らせタイトルです。</summary>
<p>
「ティム・バーナーズ=リー」によって1989年に考案されたワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の
ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。
現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
</p>
</details>
<details class="demo-details-juqery-accordion">
<summary>短い内容のお知らせタイトルです。</summary>
<p>
「ティム・バーナーズ=リー」によって1989年に考案されたワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の
ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。
現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
</p>
</details>
<details class="demo-details-juqery-accordion">
<summary>短い内容のお知らせタイトルです。</summary>
<p>
「ティム・バーナーズ=リー」によって1989年に考案されたワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の
ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。
現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
</p>
</details>
<script>
const $_details = $(".demo-details-juqery-accordion");
const $_summary = $_details.find("summary");
$_summary.on("click", function(e) {
e.preventDefault();
const $_this = $(this);
const $_this_details = $_this.parent("details");
const $_this_details_p = $_this_details.find("p");
const $_this_details_open = $_this_details.attr("open");
if (! $_this_details_open) {
$_this_details.prop("open", true);
$_this_details_p.stop().slideDown(600);
} else {
$_this_details_p.stop().slideUp(300, function() {
$_this_details.prop("open", false);
});
}
});
</script>
短い内容のお知らせタイトルです。
「ティム・バーナーズ=リー」によって1989年に考案されたワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。 現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
短い内容のお知らせタイトルです。
「ティム・バーナーズ=リー」によって1989年に考案されたワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。 現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。
短い内容のお知らせタイトルです。
「ティム・バーナーズ=リー」によって1989年に考案されたワールド・ワイド・ウェブ(World Wide Web, WWW, W3)の ハイパーテキストシステムを、私たちは簡単に「Web」と呼んでいます。 現在では、私たちの日常生活において単に普及しているというレベルを超え、絶対的な地位を占めています。