グローバルナビゲーションのエラー対処方法

このQ&Aのポイント
  • グローバルナビゲーションのタグ内の<a>と</a>の間が空ですエラーについて、CSSとの重複問題が発生してしまう対応方法を教えてください。
  • 初めて文法チェックのサイトでトップページのHTMLファイルをチェックしましたが、グローバルナビゲーションのコードで<span class='highlight'>エラーが発生しました</span>。<a>と</a>の間が空ですエラーの対処方法を教えてください。
  • グローバルナビゲーションのコードでエラーが発生しました。<a>と</a>の間が空ですエラーが起きる理由と対処方法を教えてください。
回答を見る
  • ベストアンサー

文法チェックの<A>と</A>の間が空ですについて

初めて文法チェックのサイトで、トップページのHTMLファイルをチェックしました。 99件ものエラーがあり、ある程度、解決しました。 しかし、グローバルナビゲーションのコードで出たエラーの対処のしかたがわかりません。 エラー → <A>と</A>の間が空です 私の場合、グローバルナビゲーションのタグは次のように記載してます。 <ul id="globalnavi"> <li id="menu1"><a href="http://www.test.com/"></a></li> <li id="menu2"><a href="http://www.test.com/company.html"></a></li> <li id="menu2"><a href="http://www.test.com/.itemhtml"></a></li> <li id="menu2"><a href="http://www.test.com/.question"></a></li> <li id="menu2"><a href="http://www.test.com/request.html"></a></li> </ul> 何が問題かというと、確かに<a>と</a>の間は空なのですが、この間に「会社概要」、「商品」、「よくある質問」、「問い合わせ」などを記載すると、CSSで出力している画像と重複してしまい、見栄えに問題が生じるからです。 あまり推奨されることではないですが、私は画像に背景と項目名を表記しているので、<a>と</a>にテキストを入力すると、見栄えの問題が生じてしまうのです。 このような場合の対応方法について、わかるかたがおりましたら、教えて頂けないでしょうか?

noname#233083
noname#233083
  • CSS
  • 回答数4
  • ありがとう数4

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

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

まず、Validatorはチェックすることでよいです。  よく初心者は仕様とデザインは両立できないと考えてる方がいらっしゃいますが、それはまったく逆です。そもそもHTMLのプレゼンテーション能力には限界があるのでHTMLの文書構造を無視したマークアップが行われてきました。それではHTMLの理念・目的と反するために、HTMLは文書構造を記述し、HTMLよりもはるかに能力のあるスタイルシートにプレゼンテーションを任すことになったのです。  ⇒14.1 スタイルシートの概説 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )  HTMLさえ、きちんと書かれていれば、そうでないHTMLよりも、はるかに簡単に様々なデザインが可能になるのです。 ★a内にテキストを書かない一番の問題は、サイトを訪問するのはscreen端末だけではないということです。スタイルシートを読まない携帯電話や点字端末、スクリーンリーダー、テキストブラウザ・・・そして何よりも検索エンジンがそれを利用してクロールできません。 『Lynx などのテキスト ブラウザを使用して、サイトを確認します(ほとんどの検索エンジンのスパイダーには Lynx で見えるようにサイトが映ります)。 ( http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=35769#2 )』  添付図は上記サイトをLynxで表示したものです。 【対策】 ★colorをtransparent(透明)にする。 ★text-indentを大きくしてoverflowで消す。 ★contentプロパティで画像を追加する。 ★画像として配置しalt属性で代替文字を記述する。  :hoverで画像をhiddenにしてもよい など、方法はたくさんあります。  HTML4.01strict、XHTML1.0strict、XHTML1.1で正しいHTMLを作成する。Validatorで必ずチェックする。そのうえで、スタイルシートでプレゼンテーションを指定するという方向でよいですよ。 『HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )』  それが実際は一番楽です。(^^)  

noname#233083
質問者

お礼

Validatorを使ってみます。 わかりました。a内にテキストを表示するようにします。

その他の回答 (3)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.4

これ、liタグとaタグの扱いが逆じゃないすか? 普通よくあるパターンだと、aタグを"display:block"にして、widthとheightを持たせ、background-imageで画像を指定する。 そのうえで、正しくテキストノードをセットし、text-indentで-1000emとかの値をセットするなりして、ブロック外にテキストを吹っ飛ばしたり、とにかく不可視状態にします。 要は、テキストだけでもメニューが作成できるようにしておいて、背面に画像を出し、テキストを消すと。 <ul id="menu"> <li><a id="menu1" href="http://www.test.com/">トップページ</a> <li>...</li> </ul> a#menu1 {  display:block;  width:120px;  height:32px;  text-indent:-1000px;  background-image:url('../images/menu1.png') } <a>内部へメニュー画像を直貼りするは昔の話。今はSEO的に不利な手法は常識的にとりません。 まあ、メニューに画像を使う時点で、マークアップ厨から見たらSEOもクソもないですが。

noname#233083
質問者

お礼

ありがとうございます。 いろいろと混乱しておりまして・・・ でも、なんとか改善できそうです!!

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

a要素の中に画像をimg要素で入れて、テキストはalt属性に書けば良い。

noname#233083
質問者

お礼

わかりました。試してみます!

noname#189141
noname#189141
回答No.1

どこのサイトでチェックされているか分かりませんが、そのサイトのチェックでエラーをなくすことの意味を考えてください。 そのサイトに解説等ないでしょうか? CSSでボタンの画像を出している時点で、一部のブラウザ、音声読み上げソフトなどに対応できない状態であることは認識されていますか? それを良しとするならエラーは無視してください。 (もちろん対応しないブラウザからはアクセスできない可能性があります) 無理矢理するなら・・・ <a>&nbsp;</a> <a> </a><!-- 全角スペース --> というごまかしも出来るかもしれませんが、そのサイトが対応しているか不明ですし、リンクが踏めないブラウザが残るのは変わりません。

noname#233083
質問者

お礼

文法チェックのサイトはここです! http://cetus.sakura.ne.jp/htmllint/htmllint.html >CSSでボタンの画像を出している時点で、一部のブラウザ、音声読み上げソフトなどに対応できない状態であることは認識されていますか? 一応、認識はしてます。 しかし、今の状態から変えるのが面倒なので、後回しで考えていました。

関連するQ&A

  • cssとjavascriptでプルダウンメニュー

    お世話になります。 いろいろとサンプルを試し、ハマっています・・・。どなたか助けてください! 今下記のようなソースでメニューを作っています。 <ul id="globalnavi"> <li id="a"><a href="#">a</a></li> <li id="b"><a href="#">b</a> <ul id="subnav"> <li><a href="#">b-1</a></li> <li><a href="#">b-2</a></li> <li><a href="#">b-3</a></li> </ul> </li> <li id="c"><a href="#">c</a></li> </ul> このソースで、親階層のメニューは画像、submenuはテキストで表現したいのですが、FFやIE7、IE6、safariに使える方法でなにか簡単なものありましたら、教えていただきたいです。 よろしくお願い致します!

  • リスト横並びのメニューのアンドロイドでの隙間

    スマホ用のメニューを作成しています。 とりあえず、シンプルなメニューを作っているのですが、viewportを入れると画面を横に回転した際に右端に余白が生じてしまいます。 ぴったり収まるように20%ずつ5つのメニューとしています。 解決する方法はあるでしょうか? <style> body{ margin:0; padding:0; } .globalnavi{ margin: 0; padding: 0; width: ***; } .globalnavi ul{ list-style-type: none; width: 100%; margin: 0 auto; padding: 0; } .globalnavi li{ float: left; width: 20%; margin: 0; padding: 0; } .globalnavi a{ text-align: center; display:block; padding: 0.5em 0; width: 100%; background-color: black; color: white; } .globalnavi a:hover{ background-color: red; color: white; } </style> <nav> <ul class="globalnavi"> <li><a href="#">Home</a></li> <li><a href="#">menu1</a></li> <li><a href="#">menu2</a></li> <li><a href="#">menu3</a></li> <li><a href="#">menu4</a></li> </ul> </nav>

    • 締切済み
    • CSS
  • 後付けでドロップダウンメニューを作りたい

    現在画像で作った横並びのナビゲーションメニューがあります。 そこへマウスポントすることでドロップダウンのメニュー(出来れば半透明)を追加したいのですが うまくいきません。 既存のコードは以下の通りです。 --------------------------------------------------------------------- 【css】 #globalnavi{ margin: 0; padding: 0; width: 994px; height: 50px; background-image: url(../image/button/button-bg.png); background-repeat: no-repeat; } #globalnavi ul{ list-style-type: none; margin: 0; padding: 0; } #globalnavi li{ text-indent: -9999px; float:left; width: 142px; margin: 0; padding: 0; } #globalnavi a{ display: block; width: 100%; height: 50px; background-image: url(../image/button/button.png); background-repeat: no-repeat; } #menu1 a{background-position: 0 0;} #menu2 a{background-position: -142px 0;} #menu3 a{background-position: -284px 0;} #menu4 a{background-position: -426px 0;} #menu5 a{background-position: -568px 0;} #menu6 a{background-position: -710px 0;} #menu7 a{background-position: -852px 0;} #globalnavi a:hover{ background-image: url(../image/button/button.png); background-repeat: no-repeat; } #menu1 a:hover{background-position: 0 -50px;} #menu2 a:hover{background-position: -142px -50px;} #menu3 a:hover{background-position: -284px -50px;} #menu4 a:hover{background-position: -426px -50px;} #menu5 a:hover{background-position: -568px -50px;} #menu6 a:hover{background-position: -710px -50px;} #menu7 a:hover{background-position: -852px -50px;} 【html】 <nav id="globalnavi"> <ul> <li id="menu1"><a href="menu1.html" title="メニュー1">メニュー1</a></li> <li id="menu2"><a href="menu2.html" title="メニュー2">メニュー2</a></li> <li id="menu3"><a href="menu3.html" title="メニュー3">メニュー3</a></li> <li id="menu4"><a href="menu4.html" title="メニュー4">メニュー4</a></li> <li id="menu5"><a href="menu5.html" title="メニュー5">メニュー5</a></li> <li id="menu6"><a href="menu6.html" title="メニュー6">メニュー6</a></li> <li id="menu7"><a href="menu7.html" title="メニュー7">メニュー7</a></li> </ul> </nav> --------------------------------------------------------------------- どうぞ宜しくお願い致します。

  • メニューをJavaScriptで一括更新させたい

    いつもお世話になっております。 ページが増えてしまったので、 横並びのメニューをjavaScriptで一括更新できるようにしたいのですが、 JavaScriptが勉強不足でうまく記述できません。(これから勉強していくつもりです) 今回は急ぎのため時間がなく… どうかアドバイス等、記述を教えていただけないでしょうか? 宜しくお願いいたします。 現在メニューはこのように1ページごと書いてあります。 <div id="globalnavi"> <ul> <li id="menu1"><a href="#">Home</a></li> <li id="menu2"><a href="#">menu</a></li> <li id="menu3"><a href="#">menu</a></li> <li id="menu4"><a href="#">menu</a></li> <li id="menu5"><a href="#">menu</a></li> <li id="menu6"><a href="#">menu</a></li> <li id="menu7"><a href="#">menu</a></li> </ul> </div> CSS↓----------------------------------------------- #globalnavi{ margin: 0; padding: 0; width: ***; height: 40px; } #globalnavi ul{ list-style-type: none; margin: 0; padding: 0; } #globalnavi li{ text-indent: -9999px; float:left; width: 100px; margin: 0; padding: 0; } #globalnavi a{ display: block; width: 100%; height: 40px; background-image: url(画像のパス); background-repeat: no-repeat; } #menu1 a{background-position: 0 0;} #menu2 a{background-position: -100px 0;} #menu3 a{background-position: -200px 0;} #menu4 a{background-position: -300px 0;} #menu5 a{background-position: -400px 0;} #menu6 a{background-position: -500px 0;} #menu7 a{background-position: -600px 0;} #globalnavi a:hover{ background-image: url(画像のパス); background-repeat: no-repeat; } #menu1 a:hover{background-position: 0 -40px;} #menu2 a:hover{background-position: -100px -40px;} #menu3 a:hover{background-position: -200px -40px;} #menu4 a:hover{background-position: -300px -40px;} #menu5 a:hover{background-position: -400px -40px;} #menu6 a:hover{background-position: -500px -40px;} #menu7 a:hover{background-position: -600px -40px;}

  • IEでリストに指定した背景画像が表示されない。

    以下のソースで三段階で設定しましたが、FIREFOXで表示できました。 IEだけ表示できなかったです。バグだと思いますが、いろいろ試して見ましたが、うまくできませんでした。 教えてください。 HTML <ul id="globalnavi_list"> <li id="gn_top"><a href="#" class="on">トップ</a></li> <li id="gn_corporate"><a href="#">研究所</a></li> <li id="gn_service"><a href="#">究所作品</a></li> <li id="gn_works"><a href="#">現場</a></li> <li id="gn_ecology"><a href="#">BBS</a></li> <li id="gn_contact"><a href="#">特設コーナー</a></li> <li id="gn_last"><a href="#">店舗</a></li> </ul> <CSS> ul#globalnavi_list { width:950px; height:73px; clear:both; text-indent:-9999px; text-decoration: none; } ul#globalnavi_list li{ float:left; } ul#globalnavi_list li a { display:block; height:73px; text-decoration:none; font-size:1px; } ul#globalnavi_list li#gn_top a { background:#ffffff url("../../common/globalnavi.gif") 0 0 no-repeat; width:97px; } ul#globalnavi_list li#gn_top a:hover { background:#232323 url("../../common/globalnavi.gif") 0 -73px no-repeat; } ul#globalnavi_list li#gn_top a.on { background:#232323 url("../../common/globalnavi.gif") 0 -146px no-repeat; } ul#globalnavi_list li#gn_corporate a { background:#232323 url("../../common/globalnavi.gif") -97px 0 no-repeat; width:145px; } ul#globalnavi_list li#gn_corporate a:hover { background:#232323 url("../../common/globalnavi.gif") -97px -73px no-repeat; } ul#globalnavi_list li#gn_corporate a.on { background:#232323 url("../../common/globalnavi.gif") -97px -146px no-repeat; } ul#globalnavi_list li#gn_service a { background:#232323 url("../../common/globalnavi.gif") -242px 0 no-repeat; width:146px; } ul#globalnavi_list li#gn_service a:hover { background:#232323 url("../../common/globalnavi.gif") -242px -73px no-repeat; } ul#globalnavi_list li#gn_service a.on { background:#232323 url("../../common/globalnavi.gif") -242px -146px no-repeat; } ul#globalnavi_list li#gn_works a { background:#232323 url("../../common/globalnavi.gif") -388px 0 no-repeat; width:125px; } ul#globalnavi_list li#gn_works a:hover { background:#232323 url("../../common/globalnavi.gif") -388px -73px no-repeat; } ul#globalnavi_list li#gn_works a.on { background:#232323 url("../../common/globalnavi.gif") -388px -146px no-repeat; } ul#globalnavi_list li#gn_ecology a { background:#232323 url("../../common/globalnavi.gif") -513px 0 no-repeat; width:74px; } ul#globalnavi_list li#gn_ecology a:hover { background:#232323 url("../../common/globalnavi.gif") -513px -73px no-repeat; } ul#globalnavi_list li#gn_ecology a.on { background:#232323 url("../../common/globalnavi.gif") -513px -146px no-repeat; } ul#globalnavi_list li#gn_contact a { background:#232323 url("../../common/globalnavi.gif") -587px 0 no-repeat; width:240px; } ul#globalnavi_list li#gn_contact a:hover { background:#232323 url("../../common/globalnavi.gif") -587px -73px no-repeat; } ul#globalnavi_list li#gn_contact a.on { background:#232323 url("../../common/globalnavi.gif") -587px -146px no-repeat; } ul#globalnavi_list li#gn_last a { background:#232323 url("../../common/globalnavi.gif") -827px 0 no-repeat; width:123px; } ul#globalnavi_list li#gn_last a:hover { background:#232323 url("../../common/globalnavi.gif") -827px -73px no-repeat; } ul#globalnavi_list li#gn_last a.on { background:#232323 url("../../common/globalnavi.gif") -827px -146px no-repeat; }

    • 締切済み
    • CSS
  • グローバルナビゲーション等の共通領域

    グローバルナビゲーションをliで作っております。 <div id="header"> <ul> <li><a href="#">メニュー1</a></li> <li><a href="#">メニュー2</a></li> <li><a href="#">メニュー3</a></li> <li><a href="#">メニュー4</a></li> <li><a href="#">メニュー5</a></li> </ul> </div> 上記グローバルナビゲーションを、3ページで使用しております。 3ページ作成後、メニュー5が不要になったためメニュー5を消すことにしました。 当然、3ページすべてでグローバルナビゲーションの修正が必要になりました。 phpでhpを作成する場合、共通部分をheader関数で抜きだし作成し、共通部分+各ページ異なる部分を結合すれば、 グローバルナビゲーションの修正は、共通部分一か所の修正ですむと思います。 htmlとcssのみでグロバールナビゲーション(=共通部分)を使用し、HPを作成する時、 phpのheader関数のように、共通部分を抜き出し、必要時に結合させるといったことは できないのでしょうか? やはり、3ページすべてのグローバルナビゲーションの修正をするしか方法は ないのでしょうか? ご教授お願いします。

    • ベストアンサー
    • HTML
  • mootoolsを使ったドロップダウンメニューを同じページ内に複数使用したい

    javascript初心者です・・。 下記のURLからmootools 一式をDLしてドロップダウンのメニューを 設置しました。 http://www.css-lecture.com/log/javascript/043.html ↑ 1つ目のメニューは問題なく設置できました。 今回私がやりたい事は、同じページ内の違う場所に ドロップダウンメニューをもうひとつ設置したいのですが・・ どこを修正すれば良いかわからず困っています。 今現在の状況としては、 ・上記サイトでDLしたmooltools一式を、コピーして  単純に2セット用意してみました。 ・htmlを見ると、classではなくIDで組まれていたので、  2セット目のjs、cssを1セット目とは違うID名に変更してみました。 と、これだけで動くような簡単なものでは無かったのですね・・。 納期も迫り、大変困っています。。 どなたか助言をいただけたらと大変助かります。。 現在制作中のプルダウンの部分のhtml載せておきます。 <div id="menu-container"> <ul id="drop_down_menu"> <li id="btn01"><a href="#"><img src="../common/img/gnavi01_off.jpg" alt="トップ" width="116" height="56" /></a></li> <li class="menu" id="btn02"><a href="#">カテゴリ1</a> <ul class="links"> <li><a href="#">コンテンツ01</a></li> <li><a href="#">コンテンツ02</a></li> <li><a href="#">コンテンツ03</a></li> </ul> </li> <li class="menu" id="btn03"><a href="#">カテゴリ2</a> <ul class="links"> <li><a href="#">コンテンツ04</a></li> <li><a href="#">コンテンツ05</a></li> <li><a href="#">コンテンツ06</a></li> </ul> </li> <li class="menu" id="btn04"><a href="#">カテゴリ3</a> <ul class="links"> <li><a href="#">コンテンツ07</a></li> </ul> </li> <li id="btn05"><a href="#">カテゴリ4</a></li> </ul> </div> ↑これが1つ目のプルダウンメニューの箇所で、 同じように2つ目のメニューもid名を変えて組みました。 mootoolsのjsは、 header内に外部jsとして1つ目、2つ目のプルダウンメニュー分のjsを 順番に読み込ませています。 (先に読み込ませた方のプルダウンメニューが決まって動作しません)

  • <ul>から</ul>の間をjavascriptで

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <div id="images"> <ul> <li style="width: 354px"><a href="javascript:;">ああ</a></li> <li style="width: 354px"><a href="javascript:;">いい</a></li> <li style="width: 354px"><a href="javascript:;">うう</a></li> <li style="width: 354px"><a href="javascript:;">ええ</a></li> </ul> </div> </body> </html> の<ul>から</ul>の間の<li></li>を1個にしたり5個にしたり、<ul>から</ul>を無くしたり javascriptで動的に変更するスプリクトが知りたいです。

  • jqueryでのプルダウンメニューについて

    jqueryでのプルダウンメニューについて こんにちは。 現在私はWEBサイトを製作中です。 メインメニューにプルダウンをつけたいのですが、うまくいきません。 メニューはロールオーバーでの表示(CSSでやってます)です。 slideDownを使用しているのですが、 マウスオーバー時にslidDownで表示された、 サブメニューの背景が、上の要素の背景になってしまいます。 つまり、下のコードでいくとid="sub"の背景がそのまま clas="sub"の"li"要素の背景になってしまうということです。 何か対策はありますでしょうか? html <div id="head"> <ul id="globalnavi"> <li id="gh"><a href=".">メニュー</a> <ul class="sub"> <li><a href="">サブメニュー</a></li> </ul> </li> </ul> </div> <div id="main"> </div> jquery $(function(){ $("ul.sub").hide(); $("ul#globalnavi>li").hover(function(){ $("ul:not(:animated)", this).slideDown();}, function(){$("ul.sub",this).slideUp();}); }); CSS #globalnavi a{ background-image : url(../img/navi.png); background-repeat : no-repeat; display : block; width : 160px; height : 36px; color : #333333; text-decoration : none; line-height : 36px; } #header #globalnavi li { list-style-type : none; float : left; width : 160px; position : relativ; } #header #globalnavi { clear : both; width : 960px; line-height : 36px; overflow : hidden; position : relative; text-align : center; display : block; } ul,li{ margin:0; padding:0; } .sub li{ float : none; background-color : #FFF; } #gh a{ background-position :0 0; } #gh a:hover{ background-position :0 -36px; } ロールオーバー自体はうまくいっています。 他にプルダウンの方法あるよ、などありましたら教えてください。 よろしくお願いします。

  • プルダウン時の最上部メニューの画像置換について

    お世話になります。サイト製作初心者のpeace193と申します。 以下のサイトを参考に自分なりにカスタマイズしました。本来はテキストであるタグ最上部のli内はクラスで画像に変え、ホバー時にCSSで個々に他の画像に置き換わるようにしました。 http://www.leigeber.com/2008/11/drop-down-menu/ そこで質問なのですが、プルダウンした時に、最上部のメニューを個別にホバーした時の画像のままにしたいのですが、このサンプルを生かす場合、どのようなCSS、またはjavascriptが必要でしょうか?(例えば、menu02-01-01やmenu03-01にホバーしたとき、それぞれmenu02のホバー画像を維持、menu03のホバー画像を維持。) 参考サイト上では ul.menu .menulink:hover, ul.menu .menuhover {background: url(/images/header_over.gif)} で変えているようですが、私はメニュー毎に置き換わる画像を変えたいのです。 お忙しいところ恐縮ですが、ご教示いただけると幸いです。 <ul class="menu" id="menu"> <li><a href="#" class="menu01"></a></li> <li><a href="#" class="menu02"></a> <ul> <li><a href="#" class="sub">menu02-01</a> <ul> <li><a href="#">menu02-01-01</a></li> <li><a href="#">menu02-01-02</a></li> </ul> <li><a href="#">menu02-02</a></li> <li><a href="#">menu02-03</a></li> </ul> </li> <li><a href="#" class="menu03"></a> <ul> <li><a href="#">menu03-01</a></li> <li><a href="#">menu03-02</a></li> <li><a href="#">menu03-03</a></li> </ul> </li> <li><a href="#" class="menu04"></a></li> </ul>

専門家に質問してみよう