- ベストアンサー
HTMLで作成した見出しリストのスタイルについての問題
- HTMLで作成した見出しリストのスタイルについて困っています。見出しの番号を付けたいのですがうまくいきません。
- 使用している方法では<dt>に番号が付けられず、他の方法では見出しを強調するために<h>タグを使いたいですが、うまく実現できません。
- どのように記述すれば見出しの番号を付けながら、見出しを強調するスタイルを適用することができるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こちらのほうが分かりやすいかな?? body{counter-reset: Section 1;} div.section h2{ counter-reset: subSection 0; counter-increment: Section 1; } div.section div.section h3{ counter-reset: subSubSection 0; counter-increment: subSection 1; } div.section div.section div.section h4{ counter-increment: subSubSection 1; } div.section h2:before { content: counter(Section) ": "; } div.section h3:before { content: counter(Section) "-" counter(subSection,upper-alpha) ": "; } div.section h4:before { content: counter(Section) "-" counter(subSection,upper-alpha)"-"counter(subSubSection)": " ; } いずれにしても、counterはとってもよく使用するスタイルシートですから、身につけましょう。目次も利用できますが、普通にOLで良いでしょう。
その他の回答 (2)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
スタイルシート部分です。 このように、デザインなんて一切考えずに、HTMLは文書構造のマークアップだけに専念すると、製作もメンテナンスも楽ですし、スタイルシートもとっても簡単になります。HTMLにプレゼンテーションに関わるものがないので、デザインの変更も自由自在にできますよね。 ★本文(div.section)中の、h2~h4までの見出しについてナンバリングしてます。 本文を自在に追加して確認すること <style type="text/css"> <!-- html,body{margin.0;padding:0;background-color:gray;} h1,h2,h3,h4,h5,p{margin:0;line-height:1.8em;} p{text-indent:1em;} div.header,div.section,div.footer{ width:70%;min-width:470px;max-width:800px; margin:0 auto;padding:5px; background-color:white; } div.section div.section{ margin:0 0 0 2em; width:auto; font-size:0.95em; min-width:0; } /* ナンバリング */ body{counter-reset: Section 1;} div.section h2{counter-reset: subSection 0;} div.section div.section h3{counter-reset: subSubSection 0;} div.section h2:before { content: counter(Section) "章) "; counter-increment: Section 1; } div.section h3:before { content: counter(Section) "章" counter(subSection) ") "; counter-increment: subSection 1; } div.section h4:before { content: counter(Section) "章" counter(subSection)". "counter(subSubSection)") " ; counter-increment: subSubSection 1; } --> </style>
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>HTMLで、ブラウザ上での表示が以下の様になるよう組んでいます。 初歩の初歩で間違っている。とにかく仕様書に目を通しておくこと!!--構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/intro/intro.html#h-2.4.1 ) HTMLには、とにかく文書構造しか書きません。「ブラウザ上での表示が以下の様になるよう」というのはスタイルシートの役割です。 >コンテンツ大見出し (←大見出しはh3を使用予定) >1.見出し見出し見出し見出し > 内容テキスト内容テキスト内容テキスト内容テキスト ・・・・・・・・・ でしたら、HTMLは <div class="header"></div> <div class="section"> <h2>本文見出し</h2> <div class="section"> <h3>項見出し</h3> <p>記事・・・・・</p> </div> <div class="section"> <h3>項見出し</h3> <p>記事・・・・・</p> </div> <div class="section"> <h3>項見出し</h3> <p>記事・・・・・</p> </div> </div> <div class="footer"></div> 以外に無いはずです。!! HTML5だと <header></header> <section><!-- sectionとh要素のセットで文書のアウトラインを明示する --> <h2>本文見出し</h2><!-- h1~h6の階層はsectionの階層が優先される --> <section> <h3>項見出し</h3> <p>記事・・・・・</p> </section> <section> ・・・【中略】・・・ <section> <h3>項見出し</h3> <p>記事・・・・・</p> </section> </section> <footer></footer> ・・・ ⇒DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 ) ⇒HTML5 では、文書をよりよく構造化するために、次の要素が新しく追加されました。( http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/#new-elements ) ><li>の中には<h>タグを入れるべきではないと拝見し、 li要素は、(%flow;)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/lists.html#h-10.2 )ですから、文法的には、<h>を入れられますが、それは <li><h3>見出し</h3> <p></p> <h3>見出し</h3> <p></p> </li> のような場合です。リストの項目をまたいで<h>要素がアウトラインを作るのは間違いと言う意味です。 ★文書のアウトラインを構成する(目次に記載されると言うような意味)要素に、番号を振るには、:before擬似要素にcontent:プロパティでcounterを記入します。 ⇒5.12.3 :beforeと:after疑似要素( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/selector.html#before-and-after ) ⇒12 生成内容、自動番号付け、およびリスト( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/generate.html ) よってHTMLは以下のようになるはずです。 ★HTML4.01strictです。 ⇒Another HTML-lint 5( http://www.htmllint.net/html-lint/htmllint.html# ) のDATAでチェック済み ★タブは_に置換してあるので戻す。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> _<meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> _<title>サンプル</title> _<meta name="author" content="ORUKA1951"> _<meta http-equiv="Content-Style-Type" content="text/css"> _<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" > _<link rel="START" href="../index.html"> _<style type="text/css"> <!-- --> _</style> </head> <body> _<div class="header"> __<h1>タイトル</h1> __<p>このページでは・・・・</p> _</div> _<div class="section"> __<h2>HTML 4による文書の著述</h2> __<p>本仕様は、HTML 4で作業を行う著者並びに実装者に対し、次の一般原則に従うよう推奨する。</p> __<div class="section"> ___<h3>構造とプレゼンテーションの分離</h3> ___<p>HTMLは、常に構造的マーク付けを規定するところのSGMLをルーツに持っている。HTMLの性質上、プレゼンテーションに関する要素や属性は、次々と他の機構、とりわけスタイルシートに置換えられていく。 また、文書の構造をプレゼンテーションと切り離すことで広汎なプラットフォームや多様なメディアでの文書提供コストを低下でき、文書の改訂も容易になるということが、経験的に知られている。</p> __</div> __<div class="section"> ___<h3>広汎なWebアクセス性の考慮</h3> ___<p>誰にとっても、特に障害者にとってもWebをよりアクセスしやすくするため、著者は、自分の文書が音声出力ブラウザや点字出力等、様々なプラットフォームでどのようにレンダリングされるかを考慮する必要がある。 本仕様は、著者の創造性を制限しようというのではなく、設計時に代替的レンダリングのことを考慮するよう推奨するものである。 HTMLは、アクセス性方面に関して、例えば alt属性や accesskey属性など、数多くの機構を提供している。</p> ___<p>・・・【中略】・・・</p> __</div> _</div> _<div class="section"> __<h2>HTML 4による文書の著述</h2> __<div class="section"> ___<h3>構造とプレゼンテーションの分離</h3> ___<p>HTMLは、常に構造的マーク付けを規定するところのSGMLをルーツに持っている。HTMLの性質上、プレゼンテーションに関する要素や属性は、次々と他の機構、とりわけスタイルシートに置換えられていく。 また、文書の構造をプレゼンテーションと切り離すことで広汎なプラットフォームや多様なメディアでの文書提供コストを低下でき、文書の改訂も容易になるということが、経験的に知られている。</p> ___<div class="section"> ____<h4>ユーザエージェントの逐次表示を助けること</h4> ____<p>注意深く表を設計し、HTML 4にある新しい機能を用いることで、著者はユーザエージェントがより素早く文書をレンダリングすることを助けることができる。・・・【中略】・・・</p> ___</div> ___<div class="section"> ____<h4>ユーザエージェントの逐次表示を助けること</h4> ___</div> __</div> _</div> _<div class="footer"> __<h2>文書情報</h2> __<dl class="documentHistry"> ___<dt id="FIRST-PUBLISHED">First Published</dt> ___<dd>2012-08-10</dd> __</dl> __<address>© ORUKA1951 2012 - 2016 All Rights Reserved mailto:*****</address> _</div> </body> </html>
補足
私の言い方がまずかったです。 > 初歩の初歩で間違っている。とにかく仕様書に目を通しておくこと!!--構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … ) > HTMLには、とにかく文書構造しか書きません。「ブラウザ上での表示が以下の様になるよう」というのはスタイルシートの役割です。 はい、そのように認識しています。 質問カテゴリが「Webデザイン・CSS」だったのでもっと具体的にすべきかと思い 今HTMLを書いていて(作成中で)、という意味で文頭に「HTMLで」と書いてしまいました。 「WEBページを作成中で」とかの方がいいんですかね。 質問自体初めてなので慣れずすみません。 ただ「counter」は知らなかったので、目からウロコでした。 ありがとうございます。