
No.4ベストアンサー
- 回答日時:
ソースを書くだけで許容文字数をオーバーしてしまったので説明を
右寄せに配置したい=text-align:rightですから、左寄せにしたい要素をdisplay:inline-blockにします。line-heightをそのinline-blockの高さに合わせておくと高さ中心に配置されます。また、text-align:centerでその内部で左右中央になります。
次にそれを収める外枠--親コンテナブロックを指定します。これはboxですからdisplay:blockですね。そして、高さを先のinline-blockが収まって十分な余白が取れるように高さを指定します。そして、text-align:rightをここで指定します。
基本的には、これだけの指定です。あとは、それぞれの細かいデザインをお好きにしてください。
なお、aは基本的にインライン要素でかつ内部にブロック要素は含むことができません。★ただし、あくまでHTML上の問題です。★
これをスタイルシートでinline-blockにしようが、list-itemにしようがそれとは別問題です。
したがって、もしその直近の親要素がすでにblockなり、inline-blockなどblock系に指定されていれば、その親をposition:relativeでサイズを参照できるようにしてしまえば、a{display:block;width:100%;height:100%;}として、ボタン的な動作をさせることができます。
よって、最も簡単なHTMLは、
<p class="breadcrumbList">
<a href="/">TOP</a>
<a href="/abc">カテゴリー</a>
<a href="/abc/sss/index.html">サブ</a>
</p>
なのです。divやspanで囲む必要すらなく、
p.breadcrumbList{
_width:640px;height:100px;margin:20px auto;
_border:solid gray 3px;background-color:aqua;text-align:right;
_position:relative;
}
p.breadcrumbList a{
_display:inline-block;width:80px;height:80px;
_background-color:white;border:1px black solid;
_text-align:center;margin:10px;line-height:80px;
}
p.breadcrumbList a:hover{background-color:yellow;}
で、あなたが期待されたとおりの表示になりますね。本当にボタン風にしたければ
p.breadcrumbList a{border:3px lime outset;border-radius:10px;}
p.breadcrumbList a:active{border-style:inset;}
このようにHTMLは、あなたが数年後に、あるいは他人が見てもわかるように文書構造だけを記述したのでよいのです。とても楽になると思います。
そのうえで、スタイルシートでお好きなようにデザインすれば良いのです。HTMLもCSSのもとてもシンプルでわかりやすくなるでしょう。
今までは、デザインのためにHTMLをマークアップするなど、異なった手法--本来の方法でない手法--で学ばれたのだと思います。慣れるまで大変だと思いますが、HTML5の時代には、この文書構造とプレゼンテーションの分離は最重要になります。頑張ってください。
必ずしも有名サイトが正しいわけじゃありません。特にMicrosoftのサイトは古い--Microsoft自身が撲滅しようとしている古いIEにも対応させるため、いびつなマークアップやスタイルシートが使われています。あまり参考にはならないと思います。
ただ、デザインはこなれていますから、外観だけはとても良い参考になりますね。--ソースは糞ですが(苦笑)---
こんなにも丁寧に書いていただきありがとうございました。
私自身ちょっとデザインに偏り気味だったので、上記のような質問となってしまいました。
おっしゃるとおりちゃんとした骨組みを作った上で肉付けをしていくという方が技術変化にも対応しやすいし、私以外の人がソースをいじっても問題が出にくいですよね。
その辺を意識していこうと思います
ありがとうございました。
No.3
- 回答日時:
説明が下手で申し訳ありませんね。
>画像のような要素構成をしたいと思うのですがうまくできません・・・
に対するサンプル書いておきました。
又、サンプルを印刷したら、又違う様子になるはずです。
★HTML4.01strict + CSS2.1です。
★タブは_に置換してあるので戻すこと
<!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" media="screen">
<!--
html,body{margin:0;padding:0;background-color:black;color:white;}
/* パンくずリストをデザインしてみる */
p.breadcrumbList{
_width:640px;height:100px;margin:20px auto;
_border:solid gray 3px;background-color:aqua;text-align:right;
_position:relative;
}
p.breadcrumbList a{
_display:inline-block;width:80px;height:80px;
_background-color:white;border:1px black solid;
_text-align:center;margin:10px;line-height:80px;
}
p.breadcrumbList a:hover{background-color:yellow;}
p.breadcrumbList:before{
_content:"DIV";position:absolute;left:10px;top:30px;
_font-weight:bold;font-size:2em;color:black;
}
div.nav ol,div.nav ol li{list-style-type:none;margin:0;padding:0;}
div.nav ol{
_display:block;width:640px;height:100px;margin:0 auto;border:solid gray 3px;
_background-color:aqua;text-align:right;position:relative;
}
div.nav ol li{
_display:inline-block;width:80px;height:80px;text-align:center;
_margin:10px;position:relative;line-height:80px;
}
div.nav ol li a{
_display:block;width:100%;height:100%;
_background-color:white;
_border:1px black solid;
}
div.nav ol li a:hover{background-color:yellow;}
div.nav ol:before{
_content:"DIV";position:absolute;left:10px;top:30px;
_font-weight:bold;font-size:2em;color:black;
}
div.navi{
_display:block;width:640px;height:100px;margin:0 auto;
_border:solid gray 3px;background-color:aqua;text-align:right;
_position:relative;
}
div.navi p{
_display:inline-block;width:80px;height:80px;
_text-align:center;margin:10px;position:relative;line-height:80px;
}
div.navi p a{
_display:block;width:100%;height:100%;
_background-color:white;border:1px black solid;
}
div.navi p a:hover{background-color:yellow;}
div.navi:before{
_content:"DIV";position:absolute;left:10px;
_top:30px;font-weight:bold;font-size:2em;color:black;
}
ul.memo{
_margin:0.5em 20%;padding:0.5em 2em;
_background-color:white;color:black;
_border:solid 1px gray;border-radius:15px;
}
-->
_</style>
<style type="text/css" media="print">
<!--
a{color:black;text-decoration:none;}
p.breadcrumbList a:after{
_content:"\A (http://hoge.com"attr(href)")\A";
_white-space:pre;
}
div.nav a:after,div.navi a:after{
_content:"\A (http://hoge.com"attr(href)")";
_white-space:pre;
}
-->
</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<p>このページでは様々なマークアップを同じようにデザインする方法を示しています。</p>
_</div>
_<div class="section">
__<h2><a href="http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%B3% …パンくずリスト</a></h2>
__<p class="breadcrumbList">
___<a href="/">TOP</a>
___<a href="/abc">カテゴリー</a>
___<a href="/abc/sss/index.html">サブ</a>
__</p>
__<h2>ナビゲーションリスト</h2>
__<div class="nav">
___<ol>
____<li><a href="/">span1</a></li>
____<li><a href="/abc">span2</a></li>
____<li><a href="/abc/efg">sapn3</a></li>
___</ol>
__</div>
__<h2>段落</h2>
__<div class="navi">
___<p><a href="/">span1</a></p>
___<p><a href="/abc">span2</a></p>
___<p><a href="/abc/efg">sapn3</a></p>
__</div>
__<h2>その他</h2>
__<p>
___HTMLがきちんとマークアップさえされていれば、好きなようにデザインできます。それにより
__</p>
__<ul class="memo">
___<li>HTMLは文書構造しか書かないためシンプルでわかりやすくなります。</li>
___<li>HTMLには手を加えずスタイルシートを変更するだけでデザインを変更できます。</li>
___<li>スタイルシートもわかりやすくなり、HTML、スタイルシートともにメンテナンスが容易になります。</li>
___<li>HTMLがきちんとマークアップされているためSEOとしても極めて有利になります。</li>
__</ul>
_</div>
_<div class="footer">
__<h2>文書情報</h2>
__<dl class="documentHistry">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2012-12-05</dd>
__</dl>
_</div>
</body>
</html>
No.2
- 回答日時:
いえ、構造と言うのは文書の意味的な構造です。
<div class="nav">
<ol>
<li><a href="./">span1</a></li>
<li><a href="../">span2</a></li>
<li><a href="../../">sapn3</a></li>
</ol>
</div>
でしたら、
div.nav ol,div.nav ol li{list-style-type:none;margin:0;padding:0;}
div.nav ol{display:block;width:640px;height:480px;margin:0 auto;border:solid gray 3px;background-color:aqua;text-align:right;}
div.nav ol li{display:inline-block;width:240px;height:240px;text-align:center;margin:10px;position:relative;}
div.nav ol li a{display:block;width:100%;height:100%;background-color:white;border:1px black solid;}
div.nav ol li a:hover{background-color:yellow;}
で、そのようになります。
また、HTMLが
<p class="breadcrumbList">
<a href="./">span1</a> <a href="#">span2</a> <a href="../">span3</a>
</p>
でしたら、
p.breadcrumbList{width:640px;height:480px;border:solid gray 3px;background-color:aqua;text-align:right;}
p.breadcrumbList a{display:inline-block;width:240px;height:240px;background-color:white;border:1px black solid;text-align:center;margin:10px;}
p.breadcrumbList a:hover{background-color:yellow;}
で良いでしょう。
スタイルシートをどのように書くかは、HTMLの文書構造に従って書いていくので、HTMLの文書構造がわからないと進めないのです。
[前の例]は
div.nav ol,div.nav ol li{}
class[nav]に所属するolと、class[nav]に所属するolの子孫のliについて
div.nav ol{}
class[nav]に所属するolについて「サイズや背景」は・・
div.nav ol li{}
class[nav]に所属するolの子孫のliについて
div.nav ol li a{}
その子孫のa要素について
div.nav ol li a:hover{}
そのa要素にhoverしたら・・
といふうに、
>DIVの中で文字列の一部をボタンのようにみせたいというだけなのです。
>マイクロソフトのホームページのソースを見るとそのような書き方してありますよ?
マイクロソフトのサイトとあなたのサイトでは、文書構造が違います。
文書構造にしたがってスタイルを書きますが、文書構造がどのようなものであれ、そのようにデザインできるのです。
ためしに、上のソースをテストしてみてください。そしたら、あなたのHTMLに合わせて書き直せばよいです。
No.1
- 回答日時:
divやspanへの考えを改めてください。
初歩的ですが、最も重要なことです。ここを間違えてると決して上達できません。
【引用】____________ここから
DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。 各々、内容が行内であるか(SPAN)ブロックレベルであるか(DIV)は定めるが、他のプレゼンテーション的語彙を示すことはない。 従って著者は、この両要素をスタイルシートやlang属性等と併用することで、HTMLを自身の必要や好みに応じられるようにできる。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[The global structure of an HTML document (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
順番は、DIVやSPANで文書構造を示し、それを利用してデザインするであって、デザインのためにDIVやSPANを書くのではありません。
たとえば、ナビゲーションリストがあるとすると
<div class="nav">
<ol>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ol>
</div>
と言う風にDIVは使用します。SPANでしら、
<p><span class="mark" id="TagSpan">SPAN</span>は、行内要素のうち多と何らかの区別をしたいときに使用します。STRONGやEM、ABBR、KBDなどでは意味が合わないときに利用します。</p>
とか・・・
このように文書構造とプレゼンテーション(表現)を切り離すことで、後でそれを利用してまったく異なるデザインも出来ますし、HTMLをメンテナンスするのも楽でしょう。
>画像のような要素構成をしたいと思う
ということは、何らかの文書構造があると思います。まず、そのマークアップを教えてください。それが出来ていないなら、そのふたつ?のリンクが何であるかを教えてください。
でのように料理するか示せると思います。
この回答への補足
>ということは、何らかの文書構造があると思います。まず、そのマークアップを教えてください。
そのままの構造ですが・・・
DIVの中で文字列の一部をボタンのようにみせたいというだけなのです。
マイクロソフトのホームページのソースを見るとそのような書き方してありますよ?
見てみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
画像イメージの上下左右、欲し...
-
IEの表示だけおかしい
-
CSSがなぜかfont-sizeだけ効か...
-
CSSと<dl><dd>で間隔をあけて1...
-
cssで「下よせ」ってどうやって...
-
CSS3で角丸写真にシャドーを付...
-
safariでの横並びリスト(List...
-
form input テキストを上下中央...
-
Internet Explorer 6、7のレイ...
-
ページ内リンクがずれてしまう
-
dl,dt,ddタグでdtに対して、row...
-
中点「・」の改行について
-
CSSで画面サイズを縮小するとレ...
-
widthやheightの数値に単位(px...
-
スタイルシートの適応のやり方
-
div内に外部のurlを表示させたい
-
【HTML】【CSS】【Swiper】 元...
-
css初心者 フレックスボックス...
-
CSSで横の段組-センタリングす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
form input テキストを上下中央...
-
<div>と<div>の間の10px程の...
-
【CSS】ヘッダーの高さが不明の...
-
余分な縦スクロールバーが出て...
-
CSSがなぜかfont-sizeだけ効か...
-
css初心者 フレックスボックス...
-
W3Cのソースコードの検証サービ...
-
表示倍率を変えるとレイアウト...
-
div内に外部のurlを表示させたい
-
画像イメージの上下左右、欲し...
-
table周辺の隙間をなくしたい。
-
divで囲まれたpaddingの指定を...
-
CSSで背景画像を一番下にもって...
-
HTMLのiframeの入れ子について
-
footer を横幅いっぱいに広げる...
-
CSSでボックスのheightが0になる
-
テーブル内の画像をマウスオー...
-
スクロールボックスを中央に配...
おすすめ情報