dポイントプレゼントキャンペーン実施中!

すみません。お手上げ状態です。教えてください。
サイトを 新たにしようと思い テンプレートをダウンロードし 変更を加えながら作成、変更途中でつまずきました。
htmlで横並びのリストを一つ二つ削除したら 左よりになりました。

<!-- トップナビゲーション -->
<ul id="topnav">
<li class="active"><a href="http://www.***.com">バババ<br><span>Ba(Top)</span></a></li>
<li><a href="http://***.com/index.html"><strong>あああ</strong><br><span>CCC<p>ししし</p></span></a></li>
<li class="active"><a href="http://www.###.com/company.html"><strong>会社</strong><br><span> Office </span></a></li>
</ul>
</ul>
<!-- トップナビゲーション -->

となってます。(これも間違ってたらすみません。)

色々検索し 下記記述があったので いざ 試そうとしましたが 

ulをtext-align: center;
と指定してulの中のインライン要素を中央寄せ。。。
liをdisplay: inline-block;と指定して...横並びのリストが中央寄せになり...



どこにどのように記述すればよいのか わかりません。

初心者で申し訳ありませんが  バナーの 横並びのリストを 真中に持ってきたいです。
どのようにHTMLを記述すればよいのでしょうか?

わかりやすいように教えてください。 初心者で恐縮ですがよろしくお願いします。

A 回答 (1件)

まだ初心者の方のようですから少し詳しく説明すると


>どのようにHTMLを記述すればよいのでしょうか?
 そうではありません。HTML5の勧告で今後は益々このあたりは厳しくなりますから、最初に間違って覚えると直すのが大変です。
 実は今から15年前のHTML4.01の勧告(それ自体、この部分の注意換気が目的でした)
 すなわち、『構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』と言われる部分です。
 具体的にはナビゲーションのリストは、その文書構造に基づいてリストとしてマークアップしなさい。ということです。classやidは、HTMLの要素(タグだけでは文書構造が分からないときに)を保管するものです。
 --div要素の「id属性及び class属性と併用することで、文書に構造を付加する( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」
※a要素内に<p>要素は入れられません。←原因はコレ
 ブロック要素なので、誤ったHTMLとしてここが補完される。
<ul>
 <li><a>バババ<br><span>Ba(Top)</span></a></li>
 <li><a><strong>あああ</strong><br><span>CCC<p>ししし</p></span></a></li>
 <li><a><strong>会社</strong><br><span> Office </span></a></li>
</ul>
ブラウザで補完すると
<ul>
 <li><a>バババ<br><span>Ba(Top)</span></a></li>
 <li><a><strong>あああ</strong><br><span>CCC</span></a>
<!-- ここから -->
 </li>
</ul>
 <p><a><span>ししし</span></a></p><span></span></a>
<!-- ここまで -->
</li>
<ul>
 <li><a><strong>会社</strong><br><span> Office </span></a></li>
</ul>

となるのですよ。CSSの検証ページに
『メモ: CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、正当なHTMLを用いるべきです。( http://jigsaw.w3.org/css-validator/#validate_by_ … )』
 と書いてある。

[例]ぶんしょこう象しか書かないのでとっても簡単
<div class="header">
 <ul id="nav">
  <li>
   <a href="http://www.***.com"><abbr title="Hyper Text Markup Language">HTML</abbr></a>
  </li>
  <li>
   <a href="http://***.com/index.html"><abbr title="Cascading Style Sheet">CSS</abbr></a>
  </li>
  <li>
   <a href="http://www.###.com/company.html"><abbr title="Javascript">JS</abbr></a>
  </li>
</ul>
説明
1) headerブロック内にあるので、このナビゲーションはTopnavだと分かる
2) <br>は基本使いません。<span>はclassと併用して文書構造をしめします。 ここはメインの文字の補足だとして<abbr>を使っています。
3) ひたすらシンプルに゛焚書構造だけをHTMLでマークアップします。

[スタイルシート]この文書構造に基づいて記述しますから分かりやすい。
ul#nav{
width:80%;
margin:0.5em auto; /*このブロックを中央に配置 */
text-align:center;
padding:0;
list-style-type:none;
line-height:2em;/* 一行の高さ */
}
ul#nav li{
display:inline-block;
width:25%;
position:relative;/* 以下の位置やサイズの基準にするため */
}
ul#nav li a{
display:block;/* スマホやタブレットで扱いやすいようブロック */
width:100%;height:100%;/* サイズはliに合わせる */
text-decoration:none;/* 下線は消す */
background-color:yellow;
}
ul#nav li a:before{
content:attr(title);
position:absolute;
top:2em;left:0;
}
ul#nav li a:hover{
background-color:orange;
}
ul#nav li a[href="http://***.com/index.html"]{
font-weight:bold;
}
1) display:inline-block;にしても、<p>というブロック要素が残ると・・
  ul#nav li{display:inline;}とすればそれは防げるが、今度は改行されない(^^)

 単純にマークアップしておけば、どんなにもデザインでき、デザインの幅が広がります。最初からデザインを目的にHTMLを書いたらダメなのですよ。下記ページをIEやfirefoxのような代替スタイルシートを利用できるブラウザで訪問して、[表示]→[スタイル]と進み、色々なスタイルを選択して見たり、印刷プレビューで印刷を確認して御覧なさい。
ナビゲーションリストを様々にデザインしてみよう。( http://www.ichiya.com/WebService/Howto/sample/HT … )
 HTMLは、まったく文書構造しか書かれていないのでメンテナンスが楽なのが分かると思います。そんな簡単なHTMLだから、スタイルは自在に変更できる。

作成方法
1) 文書構造だけをHTMLで正確にマークアップする。
2) Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html )のDATA入力などでHTMLが正しいかチェックする。
3) 文書構造に基づいてスタイルシートを書く

★色々検索し 下記記述があったので いざ 試そうとしましたが 
ulをtext-align: center;

 これは間違いです。以前の古いIEはバグでそうでしたが、標準では、margin-left:auto;margin-right:auto;で中央に寄せます。IEはコレができなかった。

 いずれにしても最初にする事は
1) 文書構造だけをHTMLで正確にマークアップする。
 仕様書( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )をまず眼を通して、何がどこに書かれているかくらいは理解して置くこと。
 最も正確で正しい情報です。ウェブや書籍では嘘のほうが多い。なぜな、仕様書を読めば正確に書かれている事を、わざわざ書くのは仕様書の存在を知らないからです。もしくは理解できてない。
    • good
    • 0

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