最初のセクションのみ横幅、高さとも一杯に表示、背景画像有り(background-attachment:fixed)で固定、他は中央配置(max-width:960px)、高さは非固定、全体をボーダーで囲むような感じのデザイン(参照画像 / 緑 : ボーダー / 青 : 背景画像 / 赤 : 各セクション)を作ろうとしているのですが思うようにいきません。
背景を変え、ボーダーなどを付けて確認したのですがheight:100%の入れ子(最初のセクション)を作った際(body > #border > #background > .section)の.sectionでbody内の要素は全てと判定されてるみたいで(.section:last-childを付けて確認)途切れてしまいます。
参照画像のようにするためにはどうすればいいでしょうか?
以下ソースです
*HTML部分
<body>
<div id="border">
<div id="background">
<div class="section">
<p>Section-1st</p>
</div>
</div>
<div class="section">
<p>Section-2nd<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p>
</div>
<div class="section">
<p>Section-3rd<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p>
</div>
<div class="section">
<p>Section-4th<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p>
</div>
<div class="section">
<p>Section-Last<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p>
</div>
</div>
</body>
*CSS部分
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body,
html {
width: 100%;
height: 100%;
}
body {
border: dotted 5px #95a5a6;
}
#border {
width: 100%;
height: 100%;
min-height: 100%;
margin: 0 auto;
border: solid 5px #34495e;
}
#background {
width: 100%;
height: 100%;
background: #3498db;/*本来なら画像が入ります*/
display: table;/*文字が見やすいように、削除可*/
}
#background > .section {
height: 100%;
display: table;/*文字が見やすいように、削除可*/
background: none;
}
.section p {
display: table-cell;/*文字が見やすいように、削除可*/
text-align: center;/*文字が見やすいように、削除可*/
vertical-align: middle;/*文字が見やすいように、削除可*/
}
.section {
max-width: 960px;
width: 100%;
margin: 0 auto;
background: #fff;
border: solid 5px #2ecc71;
}
body .section:last-child {
border: solid 5px #e74c3c;
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
「ソースの#borderで全てを囲むボーダー線は出せないのか」ということですが、先の私の書いたhtml/cssで実現してません?私がしたことは#borderを.wrapperに変えただけです。
他回答者さんが「デザインの為にhtmlは書かない」という話があったので、.wrapperを削る場合は以下のようになると思います(これに関しては単に.wrapperっていう名前が悪いだけで、#mainとかいう名前だったらいいんじゃないのかなとか個人的には思うんですが・・・)。
とにかく、以下のポイントが分かればどのような書き方もできるんではないでしょうか?
・height:100%はブラウザウィンドウのサイズに対して100%で固定。
・min-heightは可変だが最低限の高さを指定する。
```
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
html, body{
margin: 0;
}
html{
height: 100%;
}
body{
min-height: 100%;
box-sizing: border-box;
border: solid 5px red;
}
.footer{
height: 50px;
background-color: lightgray;
}
.section{
height: 0;/*500pxとかに変えてみて*/
width: 100%;
border: solid 5px blue;
}
</style>
</head>
<body>
<div class="section">Hello1</div>
<div class="section">Hello2</div>
<div class="section">Hello3</div>
<div class="section">Hello4</div>
<div class="section">Hello5</div>
<div class="footer">コンテンツが足りなくても、html,body{height:100%}と、ここがせり上がらない。</div>
</body>
</html>
```
お返事遅くなってすみません
ちょっと質問の仕方が悪かったのでソース変えてもう一度質問します。
もし宜しければ
http://oshiete.goo.ne.jp/qa/8784003.html
までお願いします。
No.3
- 回答日時:
>上のページのソース等見たんですが空divをいくつか使って擬似的に囲むもしくは一番下の要素に背景色をつけpaddingを使ってボーダー線のようにするといった風に対応してるようなんですが
それでしたら、一目瞭然、
・内容を書き換えるときはどうするのだろう・・・
・デザインを変更するときは大変だろうな
例えばPC用はこのデザイン、スマホ横置きはこのデザイン、
スマホ縦なら・・、印刷にはこのデザイン、スクリーンリーダーには・・
検索エンジンにも正しく理解して欲しいし
なんて夢のまた夢(^^)
★とにかく、せっかく『構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』のためにスタイルシート使う意味がない!!!
※ されたいことが未だに良く分からないのですが、headerを含めてborderで囲むこともできますが、今回はheader以外をborderで囲んだ。
※ HTMLには文書構造しか書いてないので、デザインは自由に変更できる。ちなみに下記は印刷や携帯電話には適用されない。
※ HTMLもスタイルシートもこんなに簡単・・
★Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html# )
のDATA(右上)で確認済みHTML5+CSS2.1(一部CSS3rgba())です。
★タブは_に置換してあるので戻す。
<!doctype html>
<html>
<head>
_<meta charset="utf-8">
_<title>サンプル</title>
_<meta name="description" content="">
_<meta name="author" content="IRUKA">
<style media="screen">
<!--
html{margin:0;padding:0;width:100%;/* position:relative;*/}
body{margin:0;padding:0;width:100%;border:solid green 2px;/* position:relative;*/}
header{position:relative;width:90%;height:100%;background-color:aqua;position:fixed;top:5px;left:5%;}
section,body>footer{width:600px;margin:0 auto;padding:5px;border:5px ridge gray;}
section,body>footer{position:relative;z-index:10;}
section{border-width:5px 5px 0 5px;}
section+section{border-width:0 5px;}
footer{border-width:0 5px 5px 5px;}
section{background-color:yellow;}
section+section{background-color:rgb(255,255,160);}
section+section+section{background-color:rgba(255,255,255,0.4);}
footer{background-color:silver;}
-->
</style>
</head>
<body>
_<header>
__<h1 id="title">Your title</h1>
__<p>アイウエおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん</p>
_</header>
_<section style="min-height:300px;">
__<h2>A smaller heading1</h2>
__<p>段落記事</p>
_</section>
_<section style="min-height:500px;">
__<h2>A smaller heading2</h2>
__<p>段落記事</p>
_</section>
_<section style="min-height:300px;">
__<h2>A smaller heading3</h2>
__<p>段落記事</p>
_</section>
_<footer style="min-height:300px;">
__<h3>A nice footer</h3>
_</footer>
</body>
</html>
お返事遅くなってすみません
ちょっと質問の仕方が悪かったのでソース変えてもう一度質問します。
もし宜しければ
http://oshiete.goo.ne.jp/qa/8784003.html
までお願いします。
No.2
- 回答日時:
デザインのためにHTMLは決して書かない!!。
スタイルシートを導入する最大の目的は「構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」なのですから。<body>
<div class="header">
<h1>タイトル</h1>
</div>
<div class="section">
<h2>本文</h2>
<div class="section">
<h3>項</h3>
<p>HTML4.01では文書構造はclass名で</p>
</div>
<div class="section">
<h3>項</h3>
<p>段落</p>
</div>
<div class="section">
<h3>項</h3>
<p>段落</p>
</div>
</div>
<div class="footer">
<h3>文書のフッタ</h3>
</div>
</body>
HTML5だと
<body>
<header>
<h1>タイトル</h1>
</header>
<section>
<h2>本文</h2>
<section>
<h3>項</h3>
<p>HTML5ではDIVは原則使わない</p>
</section>
<section>
<h3>項</h3>
<p>段落</p>
</section>
<section>
<h3>項</h3>
<p>段落</p>
</section>
</section>
<footer>
<h3>文書のフッタ</h3>
</footer>
</body>
>最初のセクションのみ横幅、高さとも一杯に表示、背景画像有り(background-attachment:fixed)で固定、他は中央配置(max-width:960px)、高さは非固定、全体をボーダーで囲むような感じのデザイン(参照画像 / 緑 : ボーダー / 青 : 背景画像 / 赤 : 各セクション)を作ろうとしているのですが思うようにいきません。
意味が分からないのですが、文書構造とデザインは独立して考えないとうまく行くはずがありません。
HTMLが上記だとして
確認ですが
・headerは背景も表示ウィンドウ全体に合わせて一杯に表示
・section1~はheaderに続いているのか
・スクロールして読み進むとheaderは固定されたままなのか
・ウィンドウ幅が狭い、スマホ縦置きの場合は背景画像は伸縮して画面を覆うのか
説明が下手で申し訳ございません。
やろうとしてる事は
ttp://terminalplanning.aero/
ttp://www.emmamethod.com/
ttp://www.jenslehmann.com/#/ambassador
ttp://mageredavid.fr/
上記のようにボーダー線で全てを囲み尚且つヘッダーのみ画面一杯に表示といった感じなのですが
上のページのソース等見たんですが空divをいくつか使って擬似的に囲む
もしくは一番下の要素に背景色をつけpaddingを使ってボーダー線のようにする
といった風に対応してるようなんですが
今回質問したかったことはソースの#borderで全てを囲むボーダー線は出せないのかといった事です。(bodyに付けてるborder: dotted 5px #95a5a6;は確認のために付けたものなので消してもらって構いません)
No.1
- 回答日時:
うまくいかない部分はどこのことですか?bodyにかけたborderが画面最下部のコンテンツまですべて内包して欲しいのでしょうか?
それであれば以下のようにwrapperで全体を囲み、そこにborderを設定するといいです。bodyとhtmlに対するheight:100%は、body内のすべてのコンテンツがブラウザのウィンドウサイズ以下であった場合にブラウザウィンドウサイズの高さを確保するためのものです。コンテンツの高さは基本的にはブラウザウィンドウの高さを超えるので、ブラウザウィンドウの高さを超えた分を包むのは.wrapperの仕事です。
以下コピペで確認してみてください。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
html, body{
height: 100%;
margin: 0;
}
.wrapper{
box-sizing: border-box;/*もしくはborderの上下の合計値をmargin-bottomから更に引いてもいい*/
min-height: 100%;
border: solid 5px red;
margin-bottom: -50px;/*footerの高さ分*/
/*box-sizingをしない場合*/
/*margin-bottom: -60px;*/
}
.footer{
height: 50px;
background-color: lightgray;
}
.section{
height: 0;/*500pxとかに変えてみて*/
width: 100%;
border: solid 5px blue;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="section">Hello1</div>
<div class="section">Hello2</div>
<div class="section">Hello3</div>
<div class="section">Hello4</div>
<div class="section">Hello5</div>
</div>
<div class="footer">コンテンツが足りなくても、html,body{height:100%}と、ここがせり上がらない。</div>
</body>
</html>
説明が下手で申し訳ございません。
やろうとしてる事は
ttp://terminalplanning.aero/
ttp://www.emmamethod.com/
ttp://www.jenslehmann.com/#/ambassador
ttp://mageredavid.fr/
上記のようにボーダー線で全てを囲み尚且つヘッダーのみ画面一杯に表示といった感じなのですが
上のページのソース等見たんですが空divをいくつか使って擬似的に囲む
もしくは一番下の要素に背景色をつけpaddingを使ってボーダー線のようにする
といった風に対応してるようなんですが
今回質問したかったことはソースの#borderで全てを囲むボーダー線は出せないのかといった事です。(bodyに付けてるborder: dotted 5px #95a5a6;は確認のために付けたものなので消してもらって構いません)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS imgとpを縦・横に中央揃えする 1 2023/01/17 11:30
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
<div id="container">の使いか...
-
html の divとtable の役割
-
HTML属性での「""」 「''」違い
-
div要素が重なってします
-
インラインフレームのページ内...
-
divを追加すると下に隠れてしまう
-
1時間30分を簡単に表したいで...
-
divとpの使いわけ
-
複数のボタンを等間隔に、かつ...
-
一括で全体を右にずらす
-
HTMLのJIS規格について
-
hタグの右横に画像を表示
-
可変長要素を中は左寄せのまま...
-
h1に自分自身へのリンクを張...
-
スペースを使わず文字位置を揃...
-
reuterのScraypingで不思議な現...
-
html5でheader,footerこみのwra...
-
h1を親要素の縦中央、画像の横...
-
開閉式の隠し要素が一瞬表示さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
div要素が重なってします
-
HTML属性での「""」 「''」違い
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
html の divとtable の役割
-
<div id="container">の使いか...
-
divとpの使いわけ
-
min-heightとheightの違いについて
-
HTML5 iframe の代わり
-
divの中に外部のHTMLを埋め込む
-
3カラムレイアウトで「常に残り...
-
ヘッダーを左右に二分割する方...
-
画面を縮小するとカラムが落ち...
-
reuterのScraypingで不思議な現...
-
htmlの見出しタグ(<h1>)の次...
-
1サイト内にHTML5とXHTMLが混在...
-
inline-blockをネストすると表...
-
html5でheaderの中にnav
-
<!-- #BeginLibraryItemとは
おすすめ情報