2011-07-19 8 views
2

これは今までで最も簡単な質問かもしれませんが、私は単にそれを理解できなかったかもしれません。私は今、ウェブサイトで作業しています。私は、HTMLをきれいに編集しやすくするために、できるだけ少数の<div>要素を使用したいと考えています。現時点では、私は本質的に持っています:divを隠すことなくコンテンツを隠していますか?

非常にシンプルでエレガントな、はい?しかし、クライアントは、彼らのヘッダーが会社名とロゴを含む単一の大きな画像で構成されることを望んでいます。だから私のオプションはかなり明確です - <img>タグを使うか、background-imageプロパティをヘッダの<div>に設定してください。しかし、その後私はSEOについて考えるようになった。 Googleのために、<div>というヘッダーに自分のウェブサイトのタイトルを持つ<h1>要素が含まれていても、この要素を隠して、人間のユーザーには背景画像しか表示されないようにする必要があります。

display:none; CSSプロパティを使用する場合は、背景を含めて<div>全体が消えますが、 <div>自体を隠すことなく、<div>の内容を隠す良い方法はありますか?

答えて

4

あなたはH1そのものを隠そうとしましたか?

<div id="header"> 
    <h1>Company title</h1> 
</div> 

あなたのスタイルには、次のようになります。どうやら、私たちは当時のものを抱えているの両方 #header h1{display:none;visibility:hidden;}

UPDATE。あなたは優しいH1本当にSEO /スクリーンリーダーを作りたい場合は、あなたのCSSでこれを行う方が良いでしょう:

#header h1{ 
    width:XXXpx; 
    hight:XXXpx; 
    background:url('image/location.png'); 
    text-indent:-9999px; 
    overflow:hidden; 
} 

この方法で、あなたのテキストがページに存在し、実際にあるとレンダリング、それは一種のオフだけです画面。あなたはこのタグをしたい場合

+0

もっと良い方法は、他のh1がページに現れ、何かのように隠れてしまいますので、id/classを使用することです。 'h1#hide {display:none; visible:hidden;}'どう思いますか? – DaMainBoss

+0

はい、これは私の間違いです。それをキャッチするためにありがとう。更新しました。 私はできるだけ余分なids/classesを避け、文書の流れを使って指示しますが、それは単なる好みです。後で読むと変更するのが簡単になります。 :) – Joshua

+0

私はこれを考えなかったことを馬鹿げています。ありがとうございました。副作用ですが、私のような単純なページでは違いはありません。クラスやIDの使用は再帰的な定義を使うよりはるかに簡単です。したがって、「#header h1」はレンダリングに少し時間がかかります(ページに何千もの要素がある場合にのみ目立ちます) – stevendesu

1

あなたは、h1もがそれ(会社名)にテキストを入れて、それを隠すためにtext-indentを使用した上で設定した背景画像をh1#header div要素を置き換えることができます。

さらに、要素の数を最小限に抑えるために、bodyをラッパーとして使用できます。フルページの背景が必要な場合は、html要素に設定してください。

+0

私は実際には「」をラッパーとして使用すると考えましたが、究極のサイトでは中央の960ピクセルのコンテナに背景イメージを持つコンテンツを配置する必要があります。私は、背景色を ''に、バックグラウンド画像を '#wrapper'に適用する以外の方法はわかりませんでした。 – stevendesu

+0

単にhtmlに単色、bodyに背景画像を設定してください:' html {bacground:defec8; } body {width:960px;背景:url(img.jpg); margin:0 auto} ' – Litek

1

divの代わりにH1タグにdisplay: noneを設定し、divの背景イメージを使用します。

関連する問題