
簡潔に質問させていただきます。
div や span でスタイルを適用する際、
不要であればクラスやIDを省くことは文法として間違っていますか?
要は、<div>テキスト</div> <span>テキスト</div> これだけです。
(スタイルは親要素&セレクタで指定しています)
単なる要素として考えれば問題ないと思いますが、
そもそも単体では意味の無い要素なのでどうなのでしょうか。
尚、ブラウザ(IEとFireFox)では問題なく適用されてました。
色々情報を検索しましたが良い結果が得られませんでしたので、
ご存知の方、ご教授お願いいたします。
No.3ベストアンサー
- 回答日時:
<div>や<span>それ自体に意味がないというわけではなく、
「ここからここまでが1つの固まり(ブロック=説、項、段落など)」という意味です。
ただ、<div><span>だけでは「何のための」固まりなのかというのが不明ですので、idやclassなどで指定することで、ただの固まりではない、特別な意味を持った固まりになると、私は思います。
> 不要であればクラスやIDを省くことは文法として間違っていますか?
文法上は間違っていません。
むしろ、省いた方がすっきりすると思いますし、
文字数=ファイルサイズが減らせるためネットワークにも優しい(通信負荷を減らせる)と思います。
もちろん「何番目のdiv」でスタイルシートは作れますが、
「何番目」では何のためのdivかわかりづらく、
複数のページで1つのcssファイルを使用している場合、ページ毎に「何番目」が変わることがあるため、
私はこの作り方は推奨しません。
というわけで、個別にidやclassを付けて、「何のため」にdivやspanで区切ったのか、というのを明記する方が良いと思います。
が、スタイルシートが目的ではありませんから、idやclassが使われているからと言ってスタイルシートで使用するわけではありませんし、
「何のためのdivかを明記するためのidやclass」という作り方をしているのはむしろ少数派、
属性を付けない方がすっきりする、ファイルサイズを減らせると言うことで、idやclassを付けない方法を推奨される方の方が多いと思います。
ちなみに、HTML4/XHTMLの次の企画であるHTML5では、
今までのHTML4やXHTMLで<div id="header"> <div id="menu"> <div id="footer">
などと作っていた物が
<header> <aside>(または<nav><menu>など) <footer>
というようにタグ名に格上げ(?)されていますので、idやclassで区別するのではなく、タグ名で区別できるようになります。(そのかわり、タグの種類が相当増えます。)
<span>についてですが、キーワード(単語)だけであれば、<b>や<i>を推奨します。
ほとんどの解説サイトに「太字にする」「斜体にする」という説明があると思いますが、
本来のHTMLでは、「強調するわけではないが、ページ内のキーワードとなる」という意味のタグだと思います。
その根拠ですが、HTML4/XHTMLの仕様書には<b>や<i>の説明が書かれていませんが、HTML5に上記のように「ドキュメント内のキーワードに使用する」という説明があります。
現に英語サイトでは、「『ページ内の主要単語』という目印」を付けたら「結果的に太字になってしまった」という感じの使われ方のようです。
<span>を使うのは、文章や熟語など、キーワードと言うには長い部分に使うのが良いと思います。
<b>や<i>を使用し、<span>と区別するのも、私個人的なものです。
これは(日本の)殆どの解説サイトの推奨に反した方法ですから、
大多数が推奨される方法に合わせるのでしたら、<b>や<i>を使わない方が良いと思います。
ご回答、ありがとうございます。
理屈で考えると問題ないのは分かっていたんですが、
色々なサイトでソースを見ても、そういった使い方をしているサイトが無く自信が持てず質問させていただきました。
皆さまにご回答いただけた結果、自信を持って<div><span>要素のみで使用することが出来ます。
ありがとうございました。
No.2
- 回答日時:
間違いではありませんし、問題なく表示されます。
お好きなように。<span>だけで利用する場面は、同エリアで繰り返し利用するような時しかあまり使いませんが。
======================
p#news .namae{font-weight: bold; color: maroon;}
<div>
<p id="news">
aaaa<span class="namae">AAA</span>bbb<br />
ccc<span class="namae">CCC</span>ddd<br />
<span class="namae">DDD</span>eeeeeeee
</p>
</div>
======================
p#news span{font-weight: bold; color: maroon;}
<div>
<p id="news">
aaaa<span>AAA</span>bbb<br />
ccc<span>CCC</span>ddd<br />
<span>DDD</span>eeeeeeee
</p>
</div>
ご回答、ありがとうございます。
理屈で考えると問題ないのは分かっていたんですが、
色々なサイトでソースを見ても、そういった使い方をしているサイトが無く自信が持てず質問させていただきました。
皆さまにご回答いただけた結果、自信を持って<div><span>要素のみで使用することが出来ます。
ありがとうございました。
No.1
- 回答日時:
私CSSの専門家ではないので、あくまで個人的な解釈になりますが…
そもそもCSSにおいて「classやidによる定義化は必須」は明記されてません。
<div>だけでもW3CのCSSチェッカーで合格をもらえます。
この事は逆に、では何故classやidによる定義化が必要になって来るのか。
を考えれば、自ずと答えは見えてくると思います。
肝心なのは、「どの要素に対してスタイルを適用させたいか」
だと思います。
例えは、
p { font-size:12px; }
とした場合、classやidはいらないですね?
ところが、
p.ao { font-size:12px; color:blue; }
などのように、一部の段落を青色にしたい場合、青色に対する要素がありません。
この時初めてclassやid(一意セレクタ)による局所化、細分化が必要になって来ます。
このようにセレクタ名が明示的(型セレクタ)でかつ、(親)、子、孫セレクタが存在しない場合、
(当たり前ですが ^^;)
グループ化のみで、classやidによる局所化が不要である事は容易に理解出来るのではないでしょうか。
単体では意味のない要素でも、使い方でブロックレベル、インライン要素(グループ化)という明確な意味を持つ要素でもあります。
ご回答、ありがとうございます。
理屈で考えると問題ないのは分かっていたんですが、
色々なサイトでソースを見ても、そういった使い方をしているサイトが無く自信が持てず質問させていただきました。
皆さまにご回答いただけた結果、自信を持って<div><span>要素のみで使用することが出来ます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スタイルシートについて
-
cssでIEとFIREFOX(とchrome)の...
-
CSSのクラス名・ID名の指定でワ...
-
CSS 記事内link色変更方法
-
文章のマークアップについて
-
サイトにjQueryが使用されてい...
-
個別にリンクの色を変える方法
-
idの中のid指定
-
記事タイトルの横にコメント数...
-
レシポンシブデザインをBootstr...
-
id属性が存在する理由(htm...
-
子孫セレクタの読み方をおしえ...
-
cssの見栄えをタブで整えないの...
-
CSS内で使われる山括弧の意味が...
-
brにクラスをつけてcssでdispla...
-
CSSに同じclass名がいっぱい‥。...
-
他のページへリンクさせるタグ...
-
htmlの文字が縦書きになる
-
含む含まないという概念自体の...
-
htmlのolやulなどlistにtitleや...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別にリンクの色を変える方法
-
idの中のid指定
-
サイトにjQueryが使用されてい...
-
liリストタグの背景色に色がつ...
-
brにクラスをつけてcssでdispla...
-
HTML要素のid/class名の長さに...
-
inputタグのテキストBOXだけ右...
-
リンク文字の 一部だけ色を変...
-
CSSのクラス名・ID名の指定でワ...
-
特定の見出しのみ前後の空白を...
-
同ページ内でリンクの色を変え...
-
スタイルシートで、id属性の中...
-
[HTML] selectの線を非表示に...
-
CSSの適用を一部だけ除外したい。
-
HP作成(ワッパーを中心に)
-
<span>で2重にかけているものを...
-
オンマウス時の背景色を個別に...
-
Bootstrap 訪問済みテキストリ...
-
最近、HTMLのヘッダーをIDで定...
-
子孫セレクタの読み方をおしえ...
おすすめ情報