質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2340閲覧

CSSのulタグの:afterのcontentプロパティに指定する空文字。

Kenta_it

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/11/10 11:03

編集2018/11/10 11:08

CSSを学習していて、リストを横表示にするコードを書いています。
この時、ulタグにafterを指定したcontentプロパティの中に空文字を指定している記述に疑問を持ちました。
afterは、指定したタグの前(:before)、後ろに文字や画像を表示するためのものということは知りました。
ですが、以下のHTMLのコードに以下のCSSを指定しても、contentの要素はどこにも表示されません。
これはなぜなのでしょうか。

イメージ説明

該当のソースコード

HTML

1<div class="menu_yoko"> 2 <ul> 3 <li><a href="#">Top</a></li> 4 <li><a href="https://www.yahoo.co.jp">IT</a></li> 5 <li><a href="#">筋トレ</a></li> 6 <li><a href="#">食</a></li> 7 <li><a href="#">News</a></li> 8 </ul> 9</div>

CSS

1.menu_yoko ul{ 2 margin: 0; 3 padding: 0; 4 list-style: none; 5} 6 7.menu_yoko li a{ 8 display: block; 9 padding: 10px; 10 color: #000000; 11 font-size: 14px; 12 text-decoration: none; 13} 14 15.menu_yoko li a:hover{ 16 background-color: rebeccapurple; 17} 18 19.menu_yoko li a: 20 21.menu_yoko ul:after{ 22 content: "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"; 23 display: block; 24 /*以下の設定で周りこみを解除している*/ 25 clear: both; 26} 27 28.menu_yoko li{ 29 float: left; 30 width: auto; 31} 32

知りたいこと

テキストだとこのコードの.menu_yoko ul:afterのcontentプロパティの部分は空文字を指定していました。
その必要性がわからなかったので、contentの引数に文字を指定したが何も表示されませんでした。
この理由と、このコードにおいて空文字を指定して得られるモノこの2点が知りたいです。
長々とすみません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のHTMLのコードに以下のCSSを指定しても、contentの要素はどこにも表示されません。

これはなぜなのでしょうか。

今回の問題は、質問者さんが記述した** CSS 内に余分な文字があり、それが文法エラーを発生させていることが原因**です。CSS を以下のように修正してみてください。きちんとcontentプロパティに設定した値が表示されるはずです。

CSS

1.menu_yoko ul { 2 margin: 0; 3 padding: 0; 4 list-style: none; 5} 6 7.menu_yoko li a { 8 display: block; 9 padding: 10px; 10 color: #000000; 11 font-size: 14px; 12 text-decoration: none; 13} 14 15.menu_yoko li a:hover { 16 background-color: rebeccapurple; 17} 18 19/* .menu_yoko li a: ここで文法エラーが発生している */ 20 21.menu_yoko ul:after { 22 content: "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"; 23 display: block; 24 /*以下の設定で周りこみを解除している*/ 25 clear: both; 26} 27 28.menu_yoko li { 29 float: left; 30 width: auto; 31} 32

このコードにおいて空文字を指定して得られるモノ

contentプロパティのスペースは、古いバージョンの Opera に存在したバグを回避するために付け加えられています。スペースの代わりにfont: 0/0 aと指定してもバグを回避できるようです。また、このバグは現在のバージョンでは修正されています

ちなみに、 clearfix でドットを使う理由は、 Netscape という古いブラウザの「contentプロパティの値に何も文字が無ければ、ボックスを生成しない」というバグに対応するためです。

Netscape, 古いバージョンの Opera への対応が必要ないならば、contentプロパティに指定する値は空で構いません。

CSS

1content: "";

投稿2018/11/10 11:54

s8_chu

総合スコア14731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kenta_it

2018/11/10 12:39

分かりやすい、解説ありがとうございます。 無事、動作確認できました。 初歩的なミスとは、、w 気を付けます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問