プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。


WEBページ作成の初心者で、CSSとHTMLを使ったちゃんとしたHTMLを書き始めてからまだ3~4ヶ月といったところの者です。
(高校一年です)


質問内容は題のとおりです。


現在の状況を簡単に説明すると、

HTMLの記述がヘッダ⇒左メニュー⇒真ん中のコンテンツ⇒右カラム⇒フッタ
という感じになっています。

で、左メニューとコンテンツと右カラムにフロートを設定してます。
↑の一番の問題点は、h1タグの次にh3タグが着てしまうことだと思います。

そこで、これじゃまずいと思い、TOPページからいじり始めました。
しかし、この方法でよいのかがわからないので、すべてのページに反映する前に質問させてください。

http://wingnovel.web.fc2.com/
↑ここのサイトです。


TOPページのみ(と作者についてのページ)は、コンテンツを『左右のmarginをautoに指定』してセンタリングし
左右のカラムをpositionプロパティでうまく持ってきています。


しかし、これだと問題があり、コンテンツのたての幅が左右のカラムよりも短いと、左右のカラムがフッタに突き刺さってしまいます。。。(作者についてのページが若干そうなっています…実際にはフッタの前に広告があるのでたいした問題ではなさそうですが)
ただ、実際のところ、小説の長さが左右のカラムよりも短いということはありえなさそうなので…このサイトに関してはこの方法でも大丈夫だと思うのですが、他のサイトに流用できそうにもないので…


他にも、SEO的に[最悪]という点がこのサイトにおいてありましたら、教えていただけないでしょうか?


ひとつきになるのですが、h1のような重要なタグに画像を指定してしまうのは大丈夫なのでしょうか?alt属性はもちろん指定してあるのですが…
<h1><img src=/date/**.png" alt="**" width="**" height="**"></h1>という感じになっているはずです…


なにかよい方法を教えていただけないでしょうか。

A 回答 (2件)

 なら、実際に初歩的なサンプルを、スマホ・幅広ディスプレイ対応、印刷時は別のスタイル。


・・もっとも基本的なヘッダー・3カラムのセクション・フッターの5カラム構成です。
左右に来るブロックが本文ブロックより長くなる可能性があれば、本文ブロックにmin-heightを指定しておけば良いです。

<!doctype html>
<head>
_<meta charset="utf-8">
_<title>サンプル</title>
_<meta name="author" content="IRUKA">
<style media="screen">
<!--
html,body{margin:0;padding:0;background-color:gray;}
body>header,body>section,body>footer{
width:80%;min-width:480px;max-width:800px;
margin:0 auto;
background-color:silver;
}
h1,h2,h3,p{margin:0 1em;line-height:1.5em;}
p{text-indent:1em;}
pre{width:90%;margin:0 auto;background-color:white;padding:0.2em;}
body>section{position:relative;min-height:400px;}
section section{margin:0 20%;min-width:0;}
#contentTable,
body>section>aside{
_position:absolute;
_top:0;
_width:19%;height:100%;
_margin:0;
_background-color:yellow;
}
#contentTable{left:0;}
body>section>aside{right:0;}
address{text-align:right;}
-->
</style>
<style media="print">
p{margin:0 1em;text-indent:1em;line-height:2em;}
</style>
</head>
<body>
_<header id="Top">
__<h1>サンプル</h1>
_</header>
_<section>
__<section id="question">
___<h2>質問</h2>
___<p>
____HTMLの記述がヘッダ⇒左メニュー⇒真ん中のコンテンツ⇒右カラム⇒フッタという感じになっています。
___</p>
___<p>
____で、左メニューとコンテンツと右カラムにフロートを設定してます。
___</p>
___<p>
____↑の一番の問題点は、h1タグの次にh3タグが<del>着て</del><ins>来て</ins>しまうことだと思います。
___</p>
___<p>
____そこで、これじゃまずいと思い、TOPページからいじり始めました。しかし、この方法でよいのかがわからないので、すべてのページに反映する前に質問させてください。
___</p>
___<p>
____しかし、これだと問題があり、コンテンツのたての幅が左右のカラムよりも短いと、左右のカラムがフッタに突き刺さってしまいます。。。(作者についてのページが若干そうなっています…実際にはフッタの前に広告があるのでたいした問題ではなさそうですが)
___</p>
___<p>
____ただ、実際のところ、小説の長さが左右のカラムよりも短いということはありえなさそうなので…このサイトに関してはこの方法でも大丈夫だと思うのですが、他のサイトに流用できそうにもないので…
___</p>
__</section>
__<section id="answer">
___<h2>回答</h2>
___<pre> &lt;heqder&gt;
  &lt;h1&gt;文書の見出し&lt;h1&gt;
  &lt;div class="abstract"&gt;要約&lt;/div&gt;
 &lt;/header&gt;
 &lt;section&gt;
  本文
  目的
  操作
  結果
  考察
  結論やまとめ
  &lt;div class="references"&gt;参考文献&lt;/div&gt;
  &lt;div class"contentTable"&gt;インデックス&lt;/div&gt;
 &lt;/section&gt;
 &lt;footer&gt;
  あとがき
 &lt;/footer&gt;</pre>
___<p>
____この文書構造にしたがってスタイルシートでデザインしていきますから、
___</p>
___<pre>/*本文は・・*/
body>section{position:relative;}
body>section>*{margin:0 20%;}
/* 本文中の参考文献と目次は */
section div.references,section div.contentTable{
 width:20%;height:100%;
 position:absolute;top:0;
}
section div.references{left:0;}
section div.contentTable{right:0;}</pre>
___<p>
____だけでよいはずです。
___</p>
__</section>
__<section id="contentTable">
___<ul>
____<li><a href="#Top">トップ</a></li>
____<li><a href="#question">質問</a></li>
____<li><a href="#answer">回答</a></li>
___</ul>
__</section>
__<aside>
___<h3>付録</h3>
___<p>
____ここには、本文と直接関係ない記事などを書いておく
___</p>
__</aside>
_</section>
_<footer>
__<h2>文書情報</h2>
__<dl class="documentHistry">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2005-06-10</dd>
___<dt id="LAST-MODIFIED">Last Modified</dt>
___<dd>2005-06-10 12:00:00 (JST)</dd>
__</dl>
__<address>&copy; ORUKA1951 2001 - 2004 All Rights Reserved mailto:*****</address>
_</footer>
</body>
</html>
    • good
    • 0

 SEOとは、検索エンジンがそのページの内容を正確に把握できるよう、その文書構造をマークアップすることに他なりません。

そもそもHTMLは、それを構成する要素をタグを使ってマークアップするものですから・・

 デザインは一切考えないというか、最初にメモ帳だけで書かれた文章を作って御覧なさい。そうすれば
[論文]でしたら・・
文書の見出し
 要約
 本文
  目的
  操作
  結果
  考察
  結論やまとめ
  参考文献
  インデックス
 あとがき
が定型ですよね。それが、他の分野の文章であっても基本的には同じはずです。そして、それぞれの要素をタグを使ってマークアップすることになります。HTML5では、文書構造をより明確にするため新しい要素 ( http://standards.mitsue.co.jp/resources/w3c/TR/h … )が加わったので
<heqder>
 <h1>文書の見出し<h1>
 <div class="abstract">要約</div>
</header>
<section>
  本文
  目的
  操作
  結果
  考察
  結論やまとめ
  <div class="references">参考文献</div>
  <div class"contentTable">インデックス</div>
</section>
<footer>
 あとがき
</footer>
とかね。HTML4.01でしたら、
<div class="heqder">
 <h1>文書の見出し<h1>
 <div class="abstract">要約</div>
</div>
<div class="section">
・・・【中略】・・・
</div>
<div class="footer">
 あとがき
</div>

 これをLynxで見てみます。
『ほとんどの検索エンジンのスパイダーには Lynx で見えるようにサイトが映ります ( http://support.google.com/webmasters/bin/answer. … )』
※検索エンジン最適化はここまで・・

 この文書構造にしたがってスタイルシートでデザインしていきますから、
/*本文は・・*/
body>section{position:relative;}
body>section>*{margin:0 20%;}
/* 本文中の参考文献と目次は */
section div.references,section div.contentTable{
width:20%;height:100%;
position:absolute;top:0;
}
section div.references{left:0;}
section div.contentTable{right:0;}
だけでよいはずです。

 HTMLも、後で見直しても、人が見ても、検索エンジンが見てもわかりやすいですよね。検索エンジンはこれらのclass名は理解してますよ。
 もちろんスタイルシートもHTML見なくても、参考文献やインデックスが、どのようにデザインされているかがわかるでしょう。

><h1><img src=/date/**.png" alt="**" width="**" height="**"></h1>という感じになっているはずです…
 Lynxで見れば一目瞭然・・・
<h1><img src=/date/**.png" alt="見出し" width="**" height="**"></h1>

 もちろん、その画像に意味がないのでしたら
<h1>見出し</h1>
としてマークアップして、スタイルシートで画像を指定するほうが良いでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

div class="section"の中に左右カラムを記述するということですが、
なんか、上のソースだとおかしくなる気が…
ちょっと書いてみたんですが、うまくいかないです…


あと、左右のカラムにheight:100%;を設定すると、フッターを突き抜けてページの一番下まで伸びますね…
どうすればいいんでしょうか?

Lynxは以前インストールしたので使ったことはありました。
確認してみたところ、画像に相当する部分にちゃんとalt属性の内容が表示されていました。
画像に意味はないといえばないです…
単なるタイトル画像なだけですが、文字列を記入するとそれが表示されてしまいますが、その文字列を見えなくすると(インデントを-1000文字にしたり)それはそれでスパム扱いにならないかな・という情報がありましたので…

お礼日時:2012/08/09 08:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!