• 締切済み

CSSで動く画像ロールオーバーの利点について

javascriptを使わずCSSのみで動かすロールオーバー画像の利点と欠点が↓以外にあれば教えて下さい。私の解釈が間違っていればご指摘願います。 ■利点 1.HTMLのソースが綺麗=ソースコードが軽くなる。 2.検索ロボットが余分なソースを読まなくてもよくなる為、SEO対策に有効。 3.listタグ(UL、LI)はSEOで重みづけが大きい?従ってlistタグで作成されたメニューはロボットに重要視される。 ■欠点 1.CSSファイルが複雑化。 javascriptでもできる事をあえてCSSでしようとする意図がイマイチ掴めません。 また、メニューの背景のみを画像にした場合(メニュー名はテキスト)、CSSもさほど複雑化しないと思いますが、もしメニューひとつひとつを画像にしていた場合はCSSが複雑化しないんでしょうか。

noname#16138
noname#16138
  • HTML
  • 回答数2
  • ありがとう数4

みんなの回答

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

> ■利点 > 1.HTMLのソースが綺麗=ソースコードが軽くなる。 書き方によりますが、ごく僅かにhtmlソース自体はデータ量が少なくなるのは確かでしょうね。 外れた話題になりますが、IEなどではユーザー定義属性を使って、 <IMG SRC="menu01.gif" OVERSRC="menu01_ov.gif"> なんて書き方もできます(環境に依存などは別の話題として)。 > 2.検索ロボットが余分なソースを読まなくてもよくなる為、SEO対策に有効。 これはほとんど意味はないでしょう。むしろ逆で、ロボットはCSSの一部を解析しようとしますが、scriptなどは完全に無視します。 さらに、ロボットはけっこう賢いので、そもそも不要なタグや属性などは無視します。 また仮にロボットが読み込むデータを削るとしたら、SEOに影響するほどということになると、相当量のデータを削らなければ意味がないです。 > 3.listタグ(UL、LI)はSEOで重みづけが大きい?従ってlistタグで作成されたメニューはロボットに重要視される。 これも、CSSかjavascriptかの違いには関係ありません。ロールオーバーに何を使うかではなく、作成時に重要視されるタグを考慮するかどうかの問題です。 > ■欠点 > 1.CSSファイルが複雑化。 必要なscriptコードと比較した場合、むしろ逆に単純ですむのではないでしょうか。 ★欠点追加 2.ロールオーバーのスムーズな動作のためには、「画像の先読み」が大変重要になりますが、CSSだけでこれを実現しようとすると、少々面倒になり、また正常に動作しないケースも多くあります。 3.多くの環境に対応したい、という場合、どちらかというとjavascriptでのロールオーバーの方が古いブラウザなどでも対応できる場合が多いです。もちろん、javascriptのオン/オフは別の問題として。 以上を踏まえると、お書きになった利点・欠点については、すべてがとは言いませんが、率直に言ってほとんどがあまり意味がないように思います。 それよりも最大の利点は、ANo.1の方も書かれているように、「scriptを使わない」こと自体が大きな意味を持ちます。 しかしそれは、実現したいこと(機能)自体が重要な意味を持つ場合に限られる利点であって、極端な話、ロールオーバー自体が動かなくても全く問題ない(ように作らなければいけない)わけですから、scriptで実装しても何ら問題ありません。 そもそもロールオーバーなどの要素は付加的要素、つまり「ただの飾り」と捉えて使うべきですから、他に影響させず付け加えるなら素直にjavascriptで実装したほうが無難かつ何かと便利で、そして利点も多いように思います。 私もANo.1の方と同様に普段は基本的にjavascriptをオフにしています。それでも閲覧自体には全く問題なく、逆に問題が出るようなサイトのほうが問題です。 逆の言い方をすれば、その機能が動かなければ、そのページは全く意味をなさなくなってしまう、というほど重要なものだったら、これをscriptを使わず実現できたら、こんな良い事はありません。 付加的な機能(ロールオーバー)を、付加的な技法(script)を使って実現するのは、問題がなく、本来の主要部分とは切り離されますし、自然な形にも思えます。

  • tona-tona
  • ベストアンサー率34% (8/23)
回答No.1

難しい事は識者の方のレスをお待ち頂くとして、 私はそのままずばり、JavaScriptを使っていない事が利点です。 私はいつも検索であちこちのサイトを回る時はJavaScriptは切っています。どの位の割合かはわからないけど、それなりにいると思うのでそうしています。

関連するQ&A

  • CSSのロールオーバーがIEで崩れます

    CSSのロールオーバーでメニューを制作しています。 背景画像のポジションを変えて、1枚の画像でロールオーバーさせるというよくあるものです。 Mac+Safari、Firefoxではきちんと表示されるのですが、 Win+IE7だと1枚の画像がそのまま表示されてしまい、ロールオーバーになりません。 (IE7しか自宅にないので他のバージョンのIEではどうなるかわかりません。) しかもline-height: 140%;という一行を削除したら1枚べろんと表示されていたところが半分程かくれました。 ロールオーバー自体でなく、他の部分がおかしいのでしょうか? ちなみに元の画像の高さは20pxで、10pxの画像を上下につなげています。 タイトル画像が120x26で、その横に絶対配置で並べています。 ど素人が手打ちで書いた文章なのでお恥ずかしいのですが、 問題の部分のCSSとhtml、全体のCSS、を以下に載せておきますのでどうぞご教授ください。 (メニュー項目の数等一部省略しているところがあります。) よろしくお願い致します。 /*CSSの記述*/ body{ margin: 0px; text-align: center; } table,tr,td,p,ul,li,h1,h2,h3,h4,h5,h6,input,textarea { line-height; 140%; color: #696969; font-family:"MS Pゴシック", Osaka, "ヒラギノ角ゴ Pro W3"; font-size: 10pt; } div#wrapper{ width: 500px; margin: 40px auto; text-align: left; } div#header{ width: 100%; position: relative; margin-bottom: 30px; } ul#menu{ position: absolute; left: 150px; top: 10px; width: 350px; height: 10px; } ul#menu li{ float: left; height: 10px; margin-right: 15px; } ul#menu li a{ margin: 0; padding: 0; height: 10px; display: block; text-indent: -9999px; outline: none; background-repeat: no-repeat; } ul#menu li a:link, ul#menu li a:visited{ background-position: left top; } ul#menu li a:hover, ul#menu li a:active{ background-position: left bottom; } ul#menu li#top a{ background-image: url(../img/top.gif); width: 32px; } ul#menu li#about a{ background-image: url(../img/about.gif); width: 48px; } ul#menu li#pict a{ background-image: url(../img/pict.gif); width: 37px; } /*HTMLの記述*/ <div id="wrapper"> <div id="header"> <h1><IMG SRC = "タイトル画像" ALT = "" border="0"></h1> <ul id="menu"> <li id="top"><a href="top.html">top</a></li> <li id="about"><a href="about.html">about</a></li> <li id="pict"><a href="pict.html">pict</a></li> </ul> </div>  ~略~ </div>

    • ベストアンサー
    • CSS
  • CSSで画像1枚によるロールオーバー

    CSSの勉強をしているのですが、Fire Fox2.0ではうまく表示されるのに対し、IE6,7では何も表示されず困っています。どこが間違っているのか教えて頂けませんでしょうか?よろしくお願い致します。 作っている物は以下の通りです。(すべて同じ階層にあります) --------------------------------------------------------------- navi.gif(100*30のメニューが横3縦2で300*30の1枚の画像) --------------------------------------------------------------- list.html(とりあえずメニュー1つだけです) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>リストお勉強</title> <link href="list1.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="globalnavi"> <ul> <li id="btn01"><a href="#">リスト1</a></li> </ul> </div> </body> </html> --------------------------------------------------------------- list.css /* CSS Document */ .globalnavi { width:300px; height:30px; margin:0px; padding:0px; text-align:left; } .globalnavi ul { margin:0px; padding:0px; } .globalnavi li { display:block; list-style-type:none; float:left; width:100px; height:30px; margin:0px; padding:0px; background:url(navi.gif)no-repeat; text-indent:-9999px; } .globalnavi li a { display:block; list-style-type::none; float:left; width:100px; height:30px; margin:0px; padding:0px; background:url(navi.gif)no-repeat; text-indent:-9999px; } .globalnavi li#btn01{ width:100px; background-position:0 0; } .globalnavi li#btn01 a{ width:100px; } .globalnavi li#btn01 a:hover{ width:100px; background-position: 0 -30px; }

    • ベストアンサー
    • HTML
  • JavascriptでのロールオーバーはSEOには不利なのですか?

    素人な質問ですが宜しくお願いします。 CSS+XHTMLでサイトを作成していますが、いつも、ロールオーバーボタンで悩んでいます。 CSSでももちろん実現は出来るのですが、Javascriptを用いたものはやはりSEO対策としては不利なのでしょうか? 例えばメニューとかであれば、リスト+Javascriptロールオーバーとすれば同じ効果が得られるものではないのでしょうか? HTML本文でのJavascriptの呼び出しソース自体が不利ということでしょうか? ロールオーバーって共通パーツ以外にいろんな所で使うので、その都度CSSで設定する必要があり、javascriptで実現した方が簡単な気がするのですが・・・(「慣れ」かもしれませんが・・・。) どうか、よきアドバイスお願いいたします。

    • ベストアンサー
    • HTML
  • menuのHTMLタグとCSSが上手くいかない

    画像(1)が現状です。イメージは(2)です。何故HTMLタグを別々にするかというとスマホにしたらsubメニューをボトムに配置したいのです。 メニューとsubメニューの背景がくっつかないのです。 (1)を(2)にするにはどうすれば良いでしょうか? 以下がHTMLタグとCSSになります。 アドバイスをお願いします。 HTMLタグ <div class="div1"><ul><li>メニュー1</li><li>メニュー2</li><li>メニュー3</li><li>メニュー4</li></ul></div> <div class="div2"><ul><li>sab1</li><li>sub2</li></ul></div> CSSスタイル ul li { list-style: none; } .div1 { background: #ccc; float: left; } .div2 { width: 240px; background: #999; float: right; } li { float: left; padding: 5px 15px; }

  • CSS ロールオーバーの画像が表示されません

    CSSでロールオーバーのメニューを作りましたが、 画像が表示されません…参考書どおりに作っているはずなのですが… どなたかお知恵をお貸しください。 【css】 .menu { width:860px; height:70px; margin-top:5px; } .menu #visamadhi a {background-image:url(navi-aboutvisamadhi.gif);} .menu #kirei a {background-image:url(navi-kireininaritai.gif);} .menu #manabi a {background-image:url(navi-manSabitai.gif);} .menu #shiritai a {background-image:url(navi-jibunshiritai.gif);} .menu #shouhin a {background-image:url(navi-shouhin.gif);} .menu ul { margin:0; padding:0; } .menu li {list-style-type:none; float:left;} .menu li a { display:block; width:160px; line-height:70px; border: 1px solid #D8D1AD; text-indent:-9999px; margin-right:5px; margin-left: 5px; overflow: hidden; } .menu li a:hover {background-position:0px -80px;} 【html】 <div class="menu"> <ul> <li id="#visamadhi"><a href="">Visamadhiとは</a></li> <li id="#kirei"><a href="">きれいになりたい</a></li> <li id="#manabi"><a href="">学びたい</a></li> <li id="#shiritai"><a href="">自分を知りたい</a></li> <li id="#shouhin"><a href="">商品を使いたい</a></li> </ul> </div> 実際に作成したcssを格納しました。 以下URLよりダウンロードしていただけるとありがたいです。 http://firestorage.jp/download/7ebe12eca202b26ce2171225270a8ffe53c820e9

  • CSS ロールオーバーでpng画像が透過しない

    下のCSSでオンマウス時(hover)のpng画像(下記の6b.png)が透過せず、jpgの様に白い背景になってしまいます。 どなたか分かる方よろしくお願いします。 #menu ul#gNavi li#gn06 a:link, #menu ul#gNavi li#gn06 a:visited{ background-image: url(../img/6.png); background-repeat: no-repeat; } #menu ul#gNavi li#gn06 a:hover, #menu ul#gNavi li#gn06 a:active{ background-image: url(../img/6b.png); background-repeat: no-repeat;

  • CSSロールオーバーについて教えて下さい。

    CSSで横並びのメニューを作っているのですが、背景はそのまま表示され、a:hover時の画像がFirfoxだとずれてしまい、IEだと正しく表示されます。 以下、CSSですが、どこがいけないのでしょうか? ご教授お願いします。 #gnavi { width: 600px; margin: 0; padding: 0; } #gnavi ul, #gnavi ul li { float: left; list-style-type: none; } #gnavi ul { width: 600px; height: 80px; background: url(./img/gnavi/g_navi.jpg) no-repeat; } #gnavi ul li a { display: block; width: 120px; height: 80px; text-indent: -9999px; font-size: 0; line-height: 0; } #gnavi ul li.gn01 a.active, #gnavi ul li.gn01 a:focus, #gnavi ul li.gn01 a:hover { background: url(./img/gnavi/g_navi.jpg); background-repeat: no-repeat; background-position: left bottom; } #gnavi ul li.gn02 a.active, #gnavi ul li.gn02 a:focus, #gnavi ul li.gn02 a:hover { background: url(./img/gnavi/g_navi.jpg); background-repeat:no-repeat; background-position: -120px -80px; } #gnavi ul li.gn03 a.active, #gnavi ul li.gn03 a:focus, #gnavi ul li.gn03 a:hover { background: url(./img/gnavi/g_navi.jpg); background-repeat:no-repeat; background-position: -240px -80px; } #gnavi ul li.gn04 a.active, #gnavi ul li.gn04 a:focus, #gnavi ul li.gn04 a:hover { background: url(./img/gnavi/g_navi.jpg); background-repeat:no-repeat; background-position: -360px -80px; } #gnavi ul li.gn05 a.active, #gnavi ul li.gn05 a:focus, #gnavi ul li.gn05 a:hover { background: url(./img/gnavi/g_navi.jpg); background-repeat:no-repeat; background-position: -480px -80px; } ※メニューはw:600px h:160pxの画像にて背景を利用し各メニュー部分をスライドさせて表示をしようと考えております。 ※各メニューの大きさはw:120px h:80pxです。 以下、HTMLへのタグです。 <div id="gnavi"> <ul> <li class="gn01"><a href="#container" title="トップページ" class="active">トップページ</a></li> <li class="gn02"><a href="#container" title="サービス内容">サービス内容</a></li> <li class="gn03"><a href="#container" title="納品までの流れ">納品までの流れ</a></li> <li class="gn04"><a href="#container" title="会社概要">会社概要</a></li> <li class="gn05"><a href="#container" title="お問合せ">お問合せ</a></li> </ul> </div> 色々と試してはいるのですが、どうも表示が上手く行かず、もしかしたら自分で解決をしようと試み、初心?基本的なことを忘れて入るのではと思い、皆さんに構文を見て頂きご指摘を頂ければ幸いです。 どうぞ、宜しくお願いします。

    • ベストアンサー
    • HTML
  • 画像のロールオーバーとアクティブページでの画像ロールオーバーについて

    javascriptでの画像のロールオーバーについて質問させてください。 現在、あるサイトを作成中なのですが、グローバルナビゲーションメニューにjavascriptで画像のロールオーバーを設定したいと思っています。 このスクリプト自体はwebで簡単に見つかったのですが、これにプラスアルファで現在見ているページ(アクティブページ)のメニュー画像をロールオーバー(ロールオーバーをオンマウス状態に)させる方法が見つかりません。 あらゆるサイトでよく見るので簡単に見つかると思ったのですが・・・ どなたかこの両方の機能を実装できるjavascriptを御存知の方がいらっしゃいましたらご紹介ください。

  • cssでロールオーバーを横並びにする記述方法のご教示をよろしくお願いい

    cssでロールオーバーを横並びにする記述方法のご教示をよろしくお願いいたします。 htmlには以下の記述をしてあります。 [html] <div id="menu"> <ul> <li id="menu1"><a href="a/index.html" title="HOME" ></a></li> <li id="menu2"><a href="b/index.html" title="ホームページ製作"></a></li> <li id="menu3"><a href="c/index.html" title="ネットショツプ製作"</a></li> <li id="menu4"><a href="d/index.html" title="SNSサイト製作"></a></li> <li id="menu5"><a href="e/index.html" title="SEOプロモーション"></a></a></li> <li id="menu6"><a href="f/index.html" title="出版・印刷・その他"></a></a></li> <li id="menu7"><a href="g/index.html" title="お問合せ・御注文"></a></li> </ul> </div> ここまでは、出来たのですが、その後のcssでどのように記述をして良いのかわからなくなってしまいました。Okwave様で何度かご質問もさせて頂き、とてもためになるご教示も頂いたのですが、どうしてもうまくいかなく難議しているところで御座います。htmlの記述は上記のように出来たのですが・・・ 画像については、以下にアップしました。よろしかったら見てみてください。 http://desktop10.web.fc2.com/test.html どうか初心者の私にご教示のほどよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSS による画像を使ったロールオーバー

    よろしくお願いします。 CSSを使って、画像のロールオーバーをしようとしています。 HTMLの構成としては、 タイトル画像(幅800px)の下に、CSSを使って作った ロールオーバーするメニューを横並びで配置したいと思っています。 http://edo-freiheit.sakura.ne.jp/eblog/2006/06/css_2.html のサイトを参考に(ほとんどまる写しですが)して、 作成してみたのですが、HTML全体を左寄せしても、中央寄せ してもロールオーバーしたメニューの項目の左側に隙間というか 余白が入ってしまい、上のタイトル画像とズレが生じててしまいます。 この余白をなくす方法がありましたらお教え下さい。

    • ベストアンサー
    • HTML

専門家に質問してみよう