• ベストアンサー

classとidの名前の付け方

classとidの名前の付け方についてお伺いします。 1. classとidの名前の付け方によってSEOに関係するのでしょうか? 2. むやみにclassやidを付けずにセレクターなどを使うほうがよいのでしょうか? 3. 例えばid="category1"とつけるのとid="cat1"というように省略するとgoogleは「cat1ってなんだよ?」と判断したりしてランクを下げたりしますか? 4. 同じid名を1つのhtml内に複数使っていたり、class名が1つしか使われていないWebサイトをよく見掛けます。これでもブラウザは解釈するようですが、html内で1つしか使わないのにclassで指定するのは良くないのでしょうか? 5. そもそもidとclassをgoogleはどのように判別しているのでしょうか?idは見出し、classはその下のカテゴリとか・・・そういう感じですか? なかなかネットを検索してもわからなかったのでこちらで質問させて頂きました。 お手数ですがよろしくお願い致します。

  • suffre
  • お礼率76% (2013/2633)
  • CSS
  • 回答数3
  • ありがとう数3

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

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

1. classとidの名前の付け方によってSEOに関係するのでしょうか?  関係します。仕様書には 【引用】____________ここから DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[The global structure of an HTML document (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 )]より  と書かれているように、idやclass名は、文書構造を補完するために使用するものです。CSSの仕様書にも 【引用】____________ここから 文書作成者が定めたクラス名では、意味を理解してもらえない場合もある。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[セレクタ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/selector.html#class-html )]より  HTML4を改定してHTML5を作成するときにGoogleなどは、HTML4のこの仕様書の記述があいまいすぎると強く主張し、多くの「新しい要素 ( http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/#new-elements )」が追加されました。  class名には、section、article、aside、、header、footer、nav、figureのような意味のあるものを割り当てるべきですね。 2. むやみにclassやidを付けずにセレクターなどを使うほうがよいのでしょうか?  むやみ二と言う意味がわかりません。文書構造を示すために可能な限りHTMLの要素を使用し、それでは不十分なときにclass名やidをつけます。 <div class="section" id="Wha_is_HTML">   <h2><abbr title="Hyper Text Markup Language">HTMLとは?</h2>   <p>段落</p>   <p class="figure"><img*** というふうに・・ 3. 例えばid="category1"とつけるのとid="cat1"というように省略するとgoogleは「cat1ってなんだよ?」と判断したりしてランクを下げたりしますか?  それが関係することはないでしょう。ただ、先であなたが苦労することになります。もっと具体的に  <div class="section product" id="vacuum-cleaner">  のように、誰が見てもそのセクションが何について書かれているかわかるようにすべきです。何の省略なのかわからないのでは意味がありません。 4. 同じid名を1つのhtml内に複数使っていたり、class名が1つしか使われていないWebサイトをよく見掛けます。  そのclassに該当するものが、その文書にひとつしかなければたとえclassであっても一箇所です。・・当然ですね。  idについては、必ず1箇所です。  ★文法的に「正しいか否か」とブラウザがそれを処理できるかは分けてください。HTML4.01では、その点が曖昧・遠慮がちだったため多くの混乱を招きました。先のidやclass名もそうですが、「HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )」と明記されていたにも拘らず、いまだにtransitinalやframesetが使われ続けています。HTML5では「著者が使えるもの」「ブラウザがサポートしなければならないもの」が明確になりました。HTML4でも実は・・ 【引用】____________ここから 推奨しない要素は、・・・【中略】・・・推奨しないことを明記する。 ・・・【中略】・・・ ユーザエージェントは、過去との互換性のため、 推奨しない要素をもサポートすべきである。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Conformance: requirements and recommendations (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )]より と書かれていました。それがもっと厳しく「ユーザーは使用できない」「ブラウザが対処するもの」となります。  たとえ、二箇所idがあっても表示されますが、誤りです。「酒を飲んでいても車は動きます。」 5. そもそもidとclassをgoogleはどのように判別しているのでしょうか?  それが文書構造を補完する一般的なものなら理解しています。すくなくともHTML5で導入される要素名のようなclass名は判断基準にしているようです。  しかし、それはSEOにとってそれほど重要ではありません。 【SEO】とは、本来は検索エンジンがその文書の内容を正確に理解できるようにすることです。 ランクアップのためではありません。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  検索エンジンが、そのページの内容を正確に理解できれば、アルキーワードに対して「このページが詳しいよ!」「このページが多くの人から参照されているよ」と検索結果に反映できる・・という結果として現れるのです。 【サンプル】 ★円形の配置にするコーディングについて - Webデザイン・CSS - 教えて!goo ( http://okwave.jp/qa/q7649067.html#a1 )のHTMLは、strictであり、class名やidも本来の使い方がされています。一見して、どこに何が書かれているかわかるはずです。class名を要素にすれば、HTML5になります。<div class="header">→<header>,<div class="nav" id="siteMap">→<nav id="siteMap">。  それでも、それに対するスタイルシートのように、自在にデザインできます。それどころか、プルダウンのようにまったく異なるデザインにすることもできます。なぜなら文書構造がきちんと書かれているから・・ >なかなかネットを検索してもわからなかったので  そんなことはないはずです。たくさんの仕様書が邦訳されて公開されています。そこにすべて正確に書かれているはずです。ネットであなたが得たものは、自己流に解釈したものや、そもそも仕様書を理解していない、あるいは読んですらいないものばかりなのでしょう。  だって、知っていれば、仕様書へのリンクを示せばよいだけです。  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  あなたが質問されたすべての内容を正確に知りたければ ★HTML 4.01仕様書 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/cover.html ) ★REC-CSS2 邦訳 ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/cover.html ) ★HTML5 における HTML4 からの変更点 ( http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff ) などをお読みなさい。 【引用】____________ここから 1.2 仕様の記述法  本仕様書は、著者及び実装者という2種類の読者を想定している。著者である読者に対しては、本仕様書が、HTMLの実装詳細に必要以上に触れずに使える、効率的・魅力的でアクセス性のよい文書を著述する際に必要な道具となることを望む。  ・・・【中略】・・・  本仕様書は様々な方法で利用できるだろう。  ● 最初から最後まで通読する。    本仕様書は、HTMLに関する一般表現から始まり、末尾に向けて徐々に技術的で   特殊な内容になっていく。  ● 必要な情報に直接アクセスする。    できるだけ素早くシンタクスやセマンティクスに関する情報を得るために、   オンライン版の仕様書には次の特徴を持たせた。   1.要素や属性についての参照は何れも、本仕様書内の当該要素・属性の定義箇所に    リンクしている。各要素及び属性は、その一箇所で定義している。   2.各ページに索引へのリンクがあるので、 要素または属性の定義を読むために、    2回より多くリンク移動する必要はない。   3.言語リファレンスマニュアルの各ページ冒頭には、全体の目次より更に詳細に    当該ページ内容を記したページ目次を掲げてある。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[HTML4.01仕様書 1.2 仕様の記述法( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/about.html#h-1.2 )]より

suffre
質問者

お礼

非常に詳しくご解説頂きましてありがとうございます。 class名の付け方はHTML5が参考になるのですね。 私が使っているサイトはショップカートでheaderはいじれないのでXHTML 1.0 Transitionalとなっていますが・・・。 もう1つお教え頂きたいのですが、 <div class="section product" id="vacuum-cleaner"> のようにclassとidを両方記述するのはどういった意味があるのでしょうか? 私はjavascriptで要素を探すのにあえてclassとは別にidを付けることはあるのですが、 それ以外はちょっとどう使うのかがわかりません。 仕様書・・・なかなか膨大な情報量ですね^^; なるべく構造が簡潔になることと、id名・class名をわかりやすい名前にすることから修正していきたいと思います。

その他の回答 (2)

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

>classとidを両方記述するのはどういった意味があるのでしょうか?  目的が異なるからです。 7.5.2 要素識別子: id属性とclass属性 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#adef-id )  たとえば class名にnavと付いていれば、ナビゲーションと決めておく。たとえそれが本文(section)中にあろうとフッター(footer)内にあってもよいです。  スタイルシートでサイト内のナビゲーションが統一されていたほうがよいので、 a:link{color:blue;}/* 詳細度[0,0,1,1]*/ div.nav li{background-color:blue;}/* 詳細度[0,0,1,2]*/ div.nav a:link{bolor:yellow;}/* 詳細度[0,0,2,2]*/ で普通は青だけど、ナビゲーションリストでは黄色(背景は青)と指定できて、 #siteMap a:link{font-weight:bold;}/* 詳細度[0,1,1,1]*/ としたり・・。  スタイルシートに関わることだけについてみると、idでは詳細度が高く一箇所しか指定できませんが、classだと複数個所指定できます。classだと詳細度が低いため、詳細度を増やすことで簡単に上書きできますしね。 >なかなか膨大な情報量ですね^^;  情報の量に比較したら、多くはありませんよ。ネット上の藁の山を探すより効率的です。  印刷したら薄っぺらの本にしかなりません。HTML5は膨大ですが・・  

suffre
質問者

お礼

ありがとうございました。 そのような使い方になるのですね。非常に参考になりました。

  • too_bad
  • ベストアンサー率53% (70/130)
回答No.1

IDとCLASSはそのままの意味です。 学校を例にとりますと、IDは学年と組と出席番号、CLASSは組そのものです。 別の言い方をすれば、IDは個体識別番号、CLASSはグループとなります。 つまり、CSSが同じものを使っている状況で、 本来IDは2つ存在しえないのです。 例えば、3年A組出席番号1番の安達さんと言う方がいたとします。 でもその方は何人も全く同じ人がいるわけではないですよね? だからその人は、同時に1つしか作業がこなせないのです。 一方のCLASSは、その3年A組そのものを示すのです。 この作業とこの作業は3年A組にやってもらって、 この作業は3年B組にやってもらうなどと、複数のことが割り当てられても 対応できるのが、CLASSなのです。 ここまでを基礎知識としまして・・・ 問1に対する解ですが、上記の件で察したとは思いますが、不当な割り当ては SEO対策として減点対象となります。 問2に対する解ですが、セレクタとは、 p { color:white;} と言うCSSを例に挙げれば、Pタグすべてに対しと言う意味になるのです。 ですが個別に変更したい場合は、それでは対応できないのです。 この場合のセレクタはPタグすべてと設定されていますので、 Pタグすべてに無条件でCLASSを割り当てているのと同じ感じになるのです。 p#tex1 { color:white;}とすれば、Pタグの中でID名tex1が割り当てられている ものに限り、このCSSを適用させるとなります。同じく p.tex2 {color:white;}である場合は、Pタグの中でCLASS名tex2が割り当てられている ものに限り、このCSSを適用させるとなります。 こうすることでIDとCLASSをきれいに使い分けることもできます。 つまり、セレクタのみでの割り当ては無粋なのです。 問3の解につきまして、略称とかそのようなものは関係ないのです。 子供の名前をつけるとき、略称を使うケースだってあるのです。 人名辞典を参考に、2011年度の命名ランキングを見ると、 「大翔くん」と言う名前が男の子の中で5年連続1位だそうです。 このお名前、略されていると思いませんか? 略さずに書けば、「大空へと飛翔できるような寛大な子に育ちますように君」と言う名前に なるわけですが、あなたはあなたの子供にこんな名前をつけますか? CLASSとかIDにつける名前は、あなたが考えた任意の名前なのです。 その名前が何であれ、呼び名がそうである以上、それはゆるぎない事実なのです。 よって、そこに略称を使ったからと言ってSEO対策上不利になることは絶対にありません。 問4の解といたしまして、そもそもなぜCSSで記述しているのでしょうか? その答えは、CSSで記述するとHTML内部がすっきりします。 SEO対策として、すっきり完結に書かれているHTMLのほうが、 評価は高くなるのです。 ですので、仮にCLASSでの割り当てが1つだったとしても、それはHTMLを簡略化させるのには 有効な手段ではあるのです。 問5につきまして、基礎知識編をご覧ください。 最後に SEO対策を本気で考えられるのであれば、以下を参考にしてください。 <meta name="description" content="" lang="ja" /> のコメントを必ず入れること。(気休めですがないよりマシ。20文字以下推奨) <meta name="keywords" content="" lang="ja" /> に入れるキーワードは極力少なくすること。 これは例えば、東京,スカイ,ツリー,周辺,穴場,料理,和食,飲食店と8つのキーワードを入れたとします。 すると、全体を100として、ひとつあたりのキーワードは、 100÷8=12.5%となります。 この12.5%と言うのが、キーワード1種類につき割り当てられる重要度なのです。 2つキーワードが一致すれば、25%の重要性があるサイトとして、 検索結果に反映されます。 4つキーワードが一致すれば、50%の重要性があるサイトとして、 検索結果に反映されます。 つまり、キーワードが少ないほうが、キーワードあたりの重要度が高くなるため、 上位に表示されやすくなります。 ちなみに、東京スカイツリーと言う1単語と、コンピュータが理解する東京,スカイ,ツリーと言う 3つの単語は、同一としてみなされます。 ですので、最小単位の単語で区切って考えたほうが良いのです。 なお余談ですが、一般的に検索される方は、多くても3つまでのキーワードで検索されます。 標準で2つのキーワードで検索されます。 ちなみに、キーワードの項目とtitleは重複することができます。 重要な語句に関しては、titleとキーワード両方に入れると良いでしょう。 参考になりましたでしょうか。

suffre
質問者

お礼

非常にわかりやすくご解説頂きましてありがとうございます。 今まで曖昧だったことが多かったので助かりました。 今までは基本的にidは文章構造の階層の上のほうで使う傾向が多く、classはデザイン指定のために いたるところで使っていました。もちろんidは一箇所でしか使っていません。 「2.むやみにclassやidを付けずにセレクターなどを使うほうがよいのでしょうか?」 とお聞きしたのは、classの子になるタグでセレクターを使える場合はあえてそのタグにclassを使わない でセレクターで指定したほうがhtmlがスッキリするのでそのほうがgoogleとしては評価が高くなるのかな? と思ったのです。 自分はあまりセレクターを使わずclassで指定することが多かったので・・・。 あと最後のkeywordとdescriptionについての追記は参考になります。 >ちなみに、東京スカイツリーと言う1単語と、コンピュータが理解する東京,スカイ,ツリーと言う >3つの単語は、同一としてみなされます。 >ですので、最小単位の単語で区切って考えたほうが良いのです。 こちらですが、英語の場合はどうなのでしょうか? 例えば「toyota, honda, nissan」というのを「toyotahondanissan」としてしまうとなんかまずいように思えるのですが・・・。

関連するQ&A

  • id,classの名前

    idとclassの名前にhtml要素名を使わないほうがいいですか? <a id="body">や<p class="br>などはダメでしょうか?

  • CSSで、IDとCLASSを同時に設定することは可能ですか?

    <div ID="main" CLASS="sub"></div>のように スタイルシートで、IDにメインのスタイル CLASSにサブのスタイルを設定してみて、 とりあえず、firefox、IE6、で確認してみたところ、うまく動きました。 しかし、グーグルで”ID CLASS 同時”等で検索してみても、 同時に使えることが解説されたサイトが大変少なく、 果たして、同時使いは、CSSの構文違反にならないのか不安になり 質問させていただきました。 <div ID="main" CLASS="sub"></div>のようなセレクタ同時使いは、 やっても大丈夫なものなのでしょうか? サポートされていないブラウザがあったりすることはないのでしょうか?

    • ベストアンサー
    • HTML
  • HTML要素のid/class名の長さについて

    HTML要素のid/class名の長さについて HTML要素のid/class名についてですが、この名前の長さは何文字まで指定できるのでしょうか? 特に制限はなく、ブラウザなどの実装に依存するのでしょうか? <div id="so-loooooooooong-id-name"></div>

    • ベストアンサー
    • HTML
  • WordpressでテンプレにIDを表示できない…

    現在、初めてWordpressのテンプレートを作っています。 そこで、カスタマイズ方法についてお伺いさせてください。 行いたいこととしては、特定のIDの場合、特定の文言を表示というシンプルなカスタマイズです。 対象としているページは単一記事の投稿(single.php)です。 今回仮にカテゴリIDが10を対象としてみます。 その場合、以下のように記述しています。 <?php if(is_category('10')): ?> <p>カテゴリのIDが10のメッセージ!</p> <?php else: ?> <p>それ以外のメッセージ!</p> <?php endif; ?> と記述しています。 ちなみに、デフォルトのテンプレートを使うと上手く表示できるのですが、今回自分で作っているテンプレートなので、それが問題だと思います。 カテゴリID番号をテンプレート側で出力していない為、上手く動作しないのかな?と思いsingle.phpには こんな感じで記述してみました。 <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <?php $post_cat=get_the_category(); $cat_id=$post_cat[0]->cat_ID; ?> <?php $post_cat=get_the_category(); $cat=$post_cat[0]; ?> <div class="entry" id="category-<?php echo $cat->cat_ID ?>"> ↑これでページ上には一応、 <div class="entry" id="category-10">とカテゴリIDが10として表示されています。 しかしながら、前述した<p>カテゴリのIDが10のメッセージ!</p>というメッセージが表示されません…。 カテゴリIDが一致しているのに、何故分岐の処理が行われないのでしょうか?何か根本的に間違っていますでしょうか。 WPのテンプレートカスタマイズにお詳しい方いらっしゃいましたら、アドバイスをいただけませんでしょうか。よろしくお願いします。 再度お伝えいたしますが、デフォルトのテンプレートに <?php if(is_category('10')): ?> <p>カテゴリのIDが10のメッセージ!</p> <?php else: ?> <p>それ以外のメッセージ!</p> <?php endif; ?> こちらを入れると表示されますので、この部分は問題ないのかと思います。 宜しくお願いします。

  • CSSでid名やclass名に「_」や「-」は危険?

    CSSでid名やclass名に「_」や「-」を使うと 一部のブラウザでは、正しく表示されないと 聞いたのですが、本当なのでしょうか? 私の場合 #left_column { 等と使っていたのですが、 上記が本当なら非常に管理が難しくないでしょうか? 皆さんはどうしておりますか?

    • ベストアンサー
    • CSS
  • yahoo idのログイン情報をブラウザ(Firefox3.6)に記憶

    yahoo idのログイン情報をブラウザ(Firefox3.6)に記憶させておきたいのですが、覚えてくれません。以下にチェックを入れてもダメです。 □次回からIDの入力を省略 以前は、頭文字(aとかkとか)入れてやると候補idが表示されて、id選択後に、パスワードも出現するような使用だったのですが、、、 IDセレクター等を使用せず、ブラウザ機能だけで、複数IDの簡単入力&簡単切り替え方法希望です。 他人が触る事は無いPCなので、セキュリティへのご心配は無用です。

  • DreamweaverでCSSの「div id」設定方法

    DreamweaverMXを使ってCSSを独学している初心者です。OSはWindowsXPです。 以下のようなタグを使って作る時 <div id="aaa">の部分を、コード部分に直接タグを挿入する以外の、Dreamweaverの使い方があれば、お教えいただますでしょうか。 (煩雑になるのでタグの<title>より上は省略して載せています) <style type="text/css"> <!-- #aaa { background-color: #CCFFFF; width: 600px; } --> </style> </head> <body> <div id="aaa"> <p>表題</p> <p>例文ああああああああああああ</p> <p>事例</p> <p>例文いいいいいいいい </p> </div> </body> </html> 「#aaa」というスタイルは「CSSスタイル」パネルから新規CSSスタイルのセレクタタイプを「詳細(ID,コンテキストセレクタなど)を選択し、セレクタに「#aaa」と入力してスタイル定義で設定しました。 ・スタイル名が「.aaa」ではダメで「#aaa」でなくては出来ない点と、  <div id="aaa">部分が<div id="#aaa">ではダメな理由の知識もありません。 ・<p class="bbb">というスタイルの設定を、セレクタタイプを「クラス(すべてのタグに適用可能)」にして「.bbb」という名前にして設定したスタイルは 「文章のスタイルを適応したい部分を選択→スタイルを選択して右クリック→適応」で<p class="bbb">例文ううう</p>のようなタグが挿入されますが 「div id」の場合は同じような手順では出来ないのでしょうか? 私が持っているDreamweaverMXの解説書にはこのあたりのことが記載されていません。もしお勧めの本があれば そちらもお教えいただけると幸いです。 どうぞよろしくお願いいたします。

  • 動物の名前(英語)

    このカテゴリーでいいのか分からないんですが、英語の動物の名前が豊富に載ってるページなんてないですよね?名前といっても、Cat(猫)とかRabbit(うさぎ),Giraffe(きりん),Dog(犬)など誰でもわかるような動物でなくSnail(かたつむり)とか知ってるようで知らない動物の名や珍しい動物の名が載っているほうがいいです。難しいかもしれませんがお願いします。あとこのカテゴリーから質問したほうがいいよというアドヴァイスがあればお願いします。

  • CSSのセレクタについて。

    CSSの「IDセレクタ」と「クラスセレクタ」についてなんですが、「クラスセレクタ」は先頭に要素名を指定して「要素名.クラス名」のようにすると指定された要素のみ有効になりますが、要素名が特定されていない場合には、どの要素でも指定することができる。「IDセレクタ」は 先頭に要素名を指定して「要素名#id名」のようにすると指定された要素のみ有効になりますが、要素名が特定されていない場合には、どの要素でも指定することができる。ただし、IDは唯一のものとしてとくていするものの識別子でありひとつのXHTML文章内で同じIDを複数の要素に指定することはできない。とセレクタについて調べた結果、こう解釈しているのですが、「IDセレクタ」を使用するメリットがイマイチわかりません!「ひとつのXHTML文章内で同じIDを複数の要素に指定することはできない。」以外は「IDセレクタ」と「クラスセレクタ」は同じ効果ではないんですか?それならすべて「クラスセレクタ」で統一した方がいいと思うのですが・・・長くなってすみません。

    • ベストアンサー
    • CSS
  • php selectbox hidden

    formでselectboxを作っています。 入力画面→確認画面→DB登録という流れになっており、 selectboxもDB内からひっぱりforeachで回しています。 入力画面 <select name="cat" id="cat" class="postform"> <option value="0">-- 選択してください --</option> <?php foreach ($categories as $category) { echo '<option value="' .$category->term_id. '">' .$category->cat_name. '</option>'."\n"; } </select> のようにしています。 DBの接続は省かせていただきます。 確認画面 echo $_POST['cat']; としていますが、このままだとvalueの値のみ($category->cat_nameのid)が表示されます。 確認画面では$category->cat_nameと表示され登録時には$category->term_idとしたいです。 どなたかおわかりの方がいらっしゃいましたらよろしくお願いします。

    • 締切済み
    • PHP