• ベストアンサー

before / after 疑似要素の使い方

<strong>あいうえお</strong> strong:before { content: "「"; } strong:after { content: "」の写真"; }  こういうふうな HTML と CSS を書けば、   「あいうえお」の写真 と表示されるかと思います。  「  」の写真 が自動的に挿入されるため、楽に HTML ソースを書けると思いついたのですが、この記述は文法上正しいでしょうか?

  • CSS
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

>この記述は文法上正しいでしょうか?  何か誤解されているようですね。  文法と言うのは、HTMLもCSSでも同じです。機械的なもので、例えばHTMLですと、P要素はブロック要素でこれこれの要素内にしか存在し得なくて、内部にinline要素しか入れられないなどですし、CSSの場合はcontentプロパティは、擬似要素と組み合わせて内容を持つ要素に内容を追加する。・・などいうものです。よって文法的には誤りではありません。  一方、HTMLには文法以上に、HTMLは文書構造を示すように要素--タグ--を選択し、要素が足りなければidやclass名で文書構造を補完するというなどの基本があります。  例えば<table>はブロック要素でその内部に最低ひとつの<tbody>と、ゼロ個以上の<caption><thead><tfoote>を持てば、文法上は整合しますが!!!!、それをデザインのために使ってはならないというようなものです。  さて、<strong>あいうえお</strong>とは、この単語、ないし部分が重要!!というマークアップですから、文法上は整合していますが、『「あいうえお」の写真』と言うような場合、これが<strong>というマークアップで意味的によいかどうかは、私には分かりません。  strongでマークアップされていれば、検索エンジンなどの機械や誰が見ても、この部分は、この文書にとって「重要」な要素--部品--だと判断するでしょうが、それが正しいか否かは著者以外には判断できません。  普通はstrongというタイプセレクタに対しては行わないでしょう。なぜなら、他の本当の意味で重要で<strong>要素すべてにマッチしてしまいますから・・

Katsu_Kaiz
質問者

お礼

ご回答ありがとうございます。 自分でも調べてみると、擬似要素で挿入された文章はソースに表示されないようです。これだと不親切なので、記号などの挿入にとどめたほうがいいのかもしれません。 ありがとうございました。

その他の回答 (1)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>擬似要素で挿入された文章はソースに表示されないようです。これだと不親切なので、記号などの挿入にとどめたほうがいいのかもしれません。  いえ、逆です。ソースにはわざわざ入れたくないが、ユーザーエージェントによっては別の内容を加えたいときなどに使用するものです。  視覚系ブラウザについては"!"の画像を入れる。スクリーンリーダーには、前後に余韻を入れる。プリンターには太字でアンダーラインを入れるなど・・ 例えば、 @media screen{   div.section p strong{     text-decoration:none;     color:red;font-weight:bold;     position:relative;   }   div.section p strong:after{     content:"!";color:red;     position:absolute;     top:-1em;right:-0.5em;   } } @media aural{   div.section p strong{     pause-before:1s;     pause-after:1s;     volume:loud;   } } @media print{   div.section p strong{     font-weight:bold;     text-decoration:underline;     color:inherit;   } } とか、本来HTMLソースにあったほうが良い物はソースに書きますが、ないほうがよい物は書かない。例えばSTRONG要素の前後に「」なんてないほうが良いのは明白です。スクリーンリーダーや印刷、あるいは検索エンジンには、無いほうがよいですよね。 ・スクリーンリーダーが、"かっこ開く ここは重要 カッコ閉じる"なんて読んだら困ります。 ・検索エンジンが、「ここは重要です」ではマッチしません。  HTMLには文書構造しか書かない。装飾的なもの--特にユーザーエージェントごとに違う---は、HTMLには書かないのが望ましいのです。言い換えると、ユーザーエージェントに依存してその要素の内容に何かを追加したいときには使いましょう。 [例] <div class="nav">  <ol>   <li><a href="/Top">トップ</a></li>   <li><a href="/Products">製品</a></li> に対して、印刷用スタイルシートでは、 div.nav ol li a:after{   content:"\A    ( http://hoge.com"attr(href)")";   white-space:pre;   color:inherit; } とかはよく使うのじゃないでしょうか??

Katsu_Kaiz
質問者

お礼

ありがとうございました。

関連するQ&A

  • CSS after before

    .text{ position: relative; display: inline-block; font-size: 2em; } .text:before{ position: absolute; top: 1.3em; left: 0; content: ""; display: inline-block; width: 0; height: 2px; background: #34BBF3; transition: 2s; } .text:hover:before{ width: 100%; } このプログラムはhttps://qiita.com/junya/items/4805404624292401030dからコピペしたCSS3のアニメーションを使ったアンダーラインのプログラムです。 このプログラムの上から七行目に使われている before なんですが before はこのプログラムではどういゆ役割(仕事)なんですか。なぜ before なんでしょうか。

    • ベストアンサー
    • CSS
  • contentプロパティの初期化?

    *:before, *:after { content : ""; } cssのテンプレートにこういう記述をみつけたのですが これはどのような意味があるのでしょうか? とくに意味がないようにおもえますが・・・。 この記述の必要性について 教えてください。お願いします。

    • ベストアンサー
    • HTML
  • before疑似要素で画像を指定した場合の文字位置

    いつもいつもお世話になっています。 before 疑似要素で画像を指定した時、画像が文字サイズより大きいとすると 次にくる文字の位置(縦)が画像の下のラインに合っています。 画像の中央から文字を開始したいのですが、なかなかうまいこといきません。 なにとぞ、ご教示ください。 現在は、以下のように指定しています。 --------------------------------------------------------- CSS --------------------------------------------------------- .test{ border:1px solid #39C; color:#006699; } .test:before{ float:left; padding-top:0px; padding-right:10px; content: url("../img/icon.gif"); } --------------------------------------------------------- HTML --------------------------------------------------------- <p class="test"> あああああ </p>

    • ベストアンサー
    • CSS
  • 「:after」を使って画像の上に画像を重ねたい

    スマフォサイトを作っています。 画像を配置して、その上に枠を重ねて表示したいと思いました。 position: relative; position: absolute; を使えばできるのは分かっているのですが、 この場合、<img>タグを2つ書かなくてはいけない。 これを写真画像にクラス指定をするだけでいい手段はないかと思い、 「:after」要素を使えばできるのではないかとやってみました。 ▼HTML <p class="photo"> <a href="#"><img src="img/image.jpg"></a> </p> <p> テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト </p> ▼CSS img { max-width: 100%; height: auto; } .photo { position: relative; } .photo:after { position: absolute; content: url(img/photo_waku.png); top: 0px; left: 0px; } こんな感じでやってみたところ、添付画像のような状態になりました。 表示はしてくれました。 しかし写真画像は自動でサイズ変更が行われるのに、 枠画像は実寸表示されています。 これはつまり「img」で指定しているスタイルが効いていないということ。 しかしこれをどういじれば、枠画像も自動で変更されるのかが分からなくて困っております。 そもそも可能かどうかも分かっておりません。 ご存知の方いらっしゃいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • Ultimate CSSのhtml側の記述について

    いつもお世話になっております。 当方、htmlとcssについてはごく初心者。 主なツールはSeamonkeyとalphaEDITとcssはTeraPadを使っております。 さて、質問ですが、初歩的なものかもしれませんが、 webで検索しても出てこなかったので質問させて頂きます。 Ultimate CSS Gradient Generatorという自動cssソース作成サイトで、 cssの記述は掲載されているのですが、html側の記述が掲載されていません。 初歩的すぎな事なので記載されていないだけなのかもしれませんが, html側には何と指定してやったら良いのでしょうか? 因みに、cssは「style.css」としております。 html側のソースは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link href="./style.css" rel="stylesheet" type="text/css"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>index</title> </head> <body> </body> </html> としております。 どなたか、親切な方、ご指導、解説のほどを宜しくお願い致します。

    • ベストアンサー
    • CSS
  • H1タグの色を変えたい。

    H1タグの色をCSSで変更したいのですが、上手くいきません。 どこの設定を間違えているのでしょうか? 大変申し訳ございません。ご教授よろしくお願いいたします。 以下にソースを記述します。 /*--- HTMLソース ---*/ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="index.css" type="text/css"> <title>H1タグ色変更</title> </head> <body> <h1>大見出し</h1> </body> </html> /*--- CSSソース(外部ファイル:index.cssとする) ---*/ @charset "utf-8" h1 {color: #0000ff;}

    • ベストアンサー
    • CSS
  • cssの記法について

    サイトのCSSを見ていると、 padding: 0 15px; という表記を目にします。 padding:0px 15px;ならわかるのですが、このように記述するのはなぜなのでしょうか。 もう一つ、 .hoge:after { display: block; clear: both; content: ""; } こういうのをよく見ます。 divでcontainer代わりに使っている要素の後にこれを挿入しているイメージなのですが、 これはなぜ挿入されているのでしょうか。

  • before擬似要素

    >なおブロックレベルの要素に対して:before擬似要素や:after擬似要素を使った場合は、追加される内容もブロックレベル要素となります。 http://www.webword.jp/cssguide/pseudo/index6.html は正しいですか?

    • 締切済み
    • CSS
  • ホームページ作り

    HTMLでは<meta http-equiv="content-style-type" content="text/css">なのですが、 XHTMLでは<meta http-equiv="content-style-type" content="text/css" />このように記述するのでしょうか? 分かる方がいたら教えてください。

  • ホームページビルダーのソース編集について

    ホームページビルダーのソース編集(コピー&ペースト)についての質問です。 ソースをコピペすると、ソースがおかしなことになってしまいます。 以下を、ご覧下さい。 --------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> --------------------------------------------------------------- 上のソースの上段2行分を範囲指定してコピーします。 ↓この部分 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> 範囲指定はそのままで、貼り付けると下記のようになってしまいます。 --------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML>ift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> --------------------------------------------------------------- 他のファイルからソースをコピーして張り付ける作業が多いので、この状態だと大変不便でこまっています。 HPBはV11で、OSはウィンドウズ7です。 ちなみに、キーボード上のInsertは試しましたがダメでした。

専門家に質問してみよう