HTML5
<div>
<span class="right" style="background-image:url(img.jpeg)"></span>
<section>
<h2>テスト</h2>
<p>テストです</p>
</section>
</div>
CSS
div {
width: 80%;
margin-right: auto;
margin-left: auto;
background-color: #9F0;
overflow: hidden;
}
span {
float: left;
display: block;
width: 50%;
background-size: cover;
height: auto;
}
section {
float: left;
display: block;
width: 50%;
background-color: #0C3;
}
この場合空のspanタグの高さをsectionの高さと自動で合わせたいのですができません。出来る事はまず可能なのですか?
spanにheight: auto;やheight: 100%;にしても合わすことができません。
もし自動で合わせることができるなら教えてくださいませませ
No.2ベストアンサー
- 回答日時:
こんにちは。
2つ考えてみました。
■■その1■■
高さを揃えるのにjQueryを使ってみました。
本体は別途読み込んでください。
【HTML】
jQueryをわかりやすくするためクラスをつけましたが、そのあたりは適宜対応してください。
<div>
<span class="box1" style="background-image:url('test.jpg');"></span>
<section class="box2">
<h2>テスト</h2>
<p>テストです</p>
</section>
</div>
【CSS】変更なし
【jQuery】
<script>
$(function(){
var boxHeight2 = $(".box2").height();
$(".box1").height(boxHeight2);
});
</script>
説明:.box1に.box2の高さを適用する
-----
これでできるはずです。
widthを%指定しているので.box2の高さは変動するものと思うので、CSSをいろいろと使うよりはjQueryが小回りも効くし簡単だと思います。
ほかに、右と左で高さの高い方に揃えると言った場合などもif条件分岐で可能です。
>出来る事はまず可能なのですか?
とのことでしたので、jQueryであれば余裕で柔軟に対応は可能です。
------------------------------
■■その2■■
もし、HTMLを変えて良いなら、妙なspanで画像エリアを作らなくても、span部分削除とCSSだけでもできると思います。
ただし、この場合、ウィンドウサイズ幅が小さくなった時に、画像のアスペクト比によっては画像の下部が空いてしまう場合はあるので、画像の用意で対応か、CSSでmin-widthを設定するなどで対応が必要です。
【HTML】
span部分を削除し、divの左側50%に背景を指定する方法です。
jQueryよりは若干融通が効かなくなりますが、ソースがシンプルになるので良いと思います。
<div class="box3" style="background-image:url('test.jpg');">
<section>
<h2>テスト</h2>
<p>テストです</p>
</section>
</div>
【CSS】
.box3{
width: 80%;
min-width: 300px;/*適宜*/
box-sizing: border-box;
padding-left: 50%;
background-repeat: no-repeat;
background-size: 50% auto;
}
これ以外のCSSは背景色指定以外は削除で、同じ表示ができると思います。
頑張ってください。
No.1
- 回答日時:
基本から、確実に学びなおしましょう。
<body>あるいは<article>にしても
<body>
<div>
<span class="right" style="background-image:url(img.jpeg)"></span>
<section>
<h2>テスト</h2>
<p>テストです</p>
</section
</div>
の誤りを指摘すると
1) HTML5では<div>は安易に使いません。
これは、15年前1999年勧告のHTML4.01の時代に
『DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』
となっていたのですが、これが意図したとおりに理解されず、【プレゼンテーションのために乱用されていた】
・文書構造を補完するためではなくデザインだけのために使われた。例えば内容のないdivやspanとか
その反省から、HTml5では、文書構造を明確するために【新たな要素( http://www.html5.jp/trans/w3c_differences.html#n … )】が加えられました。
★そして、divは
Authors are strongly encouraged to view the div element as an element of last resort, for when no other element is suitable. Use of more appropriate elements instead of the div element leads to better accessibility for readers and easier maintainability for authors.( http://www.w3.org/TR/2014/REC-html5-20141028/gro … )
「著者は、他により適切な要素がないときの最後の最後の要素としてdiv要素を使用することが強く奨励されます。div要素の代わりにより適切な要素を使用することは、読者のためには「より良いアクセシビリティ」を、作者には「よりよい保守性」につながります。」
spanも同様です。
★ここは、HTML5が作られた最大の目的の一つであるのですからね。
HTML5“とか”アプリ開発入門(1):Webの3つの問題を解決する「HTML5」とは何なのか (2/2) - @IT( http://www.atmarkit.co.jp/ait/articles/1008/30/n … )
<div> もし書くのでしたら<article>でしょう。
articleは、<header><section><footer>を持つと期待される、--実際はなくてもよいが---完結した記事の集合を表します。
<body>
<article>
<header></header>
<section>
<artice>
<header></header>
<section>
ブログの引用など、それ自体で完結した記事
</section>
</article>
</section>
<footer></footer>
</article>
</body>
<span class="right" style="background-image:url(img.jpeg)"></span>
class名は文書構造を示していません。また内容がありません。
スタイルシートの問題点
CSS
div {
width: 80%;
margin-right: auto;
margin-left: auto;
background-color: #9F0;
overflow: hidden;
/* heightはデフォルトはautoなので意味がない。 安易に記述すると視覚弱者がフォントを拡大して読もうとしたときはみ出したものが見えない */
}
span {
float: left;
/* floatは文書中の画像の周囲に記事を回り込ませるためのもの、配置に使うことは避ける。フォントやデータ量の増減で崩れる原因になる。 */
display: block;/* 行内要素であるspanをblockに変えることはしないように */
width: 50%;
background-size: cover;
height: auto;
/* 当然ですが内容がないので高さが決まらない。画像は置換要素で内容は持ちえません。
内部に画像がある<span><img></span>の場合は置換される。画像は置換インライン要素です。
また、height:100%とした場合、祖先にstatic以外の要素がない場合は基準がない。 */
}
section {
float: left;/* 本文にfloatは使ってはなりません。この記事内にfloatさせたい画像が登場したときに挫折する。 */
display: block;/* sectionは指定しなくてもblockです。 */
width: 50%;
background-color: #0C3;
}
具体的な例
<body>
<article>
<header>
<h1>見出し</h1>
<nav>グローバルナビ</nav>
</header>
<section>
<h2>本文</h2>
<p>段落</p>
<nav>本文--section--の目次</nav>
</section>
<footer>
<h3>文書情報</h3>
</footer>
</article>
</body>
body>article{position:relative;}
body>article>header>nav{position:absolute;top:0;left:0;width:50%;height:100%;background-image:url();background-size:cover;}
body>article>header,
body>article>section,
body>article>footer{margin-left:50%;}
body>article>section{min-height:400px;}
とか・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
div要素が重なってします
-
幅を可変にし2段組をCSSで組む...
-
min-heightとheightの違いについて
-
cssで2列、複数行のテーブルを...
-
複数のボタンを等間隔に、かつ...
-
開閉式の隠し要素が一瞬表示さ...
-
ヘッダーとフッターだけ背景を...
-
携帯サイト、ナノでのタグ編集...
-
<!-- #BeginLibraryItemとは
-
セクションをdivで囲むと見出し...
-
オシャレな区切り線はありませ...
-
コーディングの勉強法
-
インラインフレームのページ内...
-
何もいじってないのに、表示崩...
-
強調タグの見栄えをCSSで変える...
-
html の divとtable の役割
-
iframeを使わずに上下50%ずつに...
-
hタグの右横に画像を表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
<div id="container">の使いか...
-
複数のボタンを等間隔に、かつ...
-
html の divとtable の役割
-
div要素が重なってします
-
min-heightとheightの違いについて
-
ヘッダーとフッターだけ背景を...
-
1時間30分を簡単に表したいで...
-
divを横に並べる方法
-
html5でheaderの中にnav
-
スペースを使わず文字位置を揃...
-
セクションをdivで囲むと見出し...
-
divとpの使いわけ
-
ブログのサイドバーが下にくる
-
3カラムレイアウトで「常に残り...
-
グリッドレイアウトで"auto-fit...
-
iframeを使わずに上下50%ずつに...
-
ヘッダーを左右に二分割する方...
-
画面を縮小するとカラムが落ち...
おすすめ情報