テーブルデザインよりスタイルシートに挑戦しているものです。
素人なりに下記のソースを作成してみたのですがもっとスマートなソースはどのようなものになりますか?
作りたいものは三枚の画像を使い上部、中部、下部で
一つのわくのなかに文字(この場合h1、h2、p要素)を表示させたいです。しかしこの場合、それぞれの要素にマージンを指定しないと画像の先端と重なってしまいます。divに空きを指定すると背景画像で指定した中部がずれてしまいました、、、
<div class="test">
<img src="top.gif" height="30" width="500" alt=""><BR>
<h1>あいうえお</h1>
<h2>あいうえお</h2>
<h3>あいうえお</h3>
<p>あいうえお</p>
<p>あいうえお</p>
<img src="bottom.gif" height="30" width="500" alt=""></div>
.test {
width:500px;
background-image: url(middle.gif);
background-repeat:repeat-y;
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
補足をお願いします。
>それぞれの要素にマージンを指定しないと画像の先端と重なってしまいます。
とありますが、具体的にどの要素のどの方向にマージンが必要なんですか?また、画像の先端とは画像のどの部分ですか?画像がないので最終的にどのようなデザインにしたいのかわかりません。
まず、1つの画像を3つに分ける理由から教えていただけませんか?
No.2
- 回答日時:
ちょっと邪道かもしれませんが、以下の様な感じでできないでしょうか…
<div id="top"></div>
<div id="content">
<h1>あいうえお</h1>
<h2>あいうえお</h2>
<h3>あいうえお</h3>
<p>あいうえお</p>
<p>あいうえお</p>
</div>
<div id="footer"></div>
h1, h2, h3, p, div {
margin: 0px; padding: 0px;
}
p {
padding-bottom: 10px; }
#top {
height:30px; width:500px;
background: url(top.gif) no-repeat;
}
#content {
margin: 0px; padding: 10px;
width:500px;
background: url(middle.gif) repeat-y;
}
#footer {
height:30px; width:500px;
background: url(footer.gif) no-repeat;
}
これだと、スタイルシートが効かない場合、画像は全く表示されません。
しかし、上下の画像も意味の無いただの飾りなら、情報は伝わると思われます。
No.1
- 回答日時:
まず、根本的な考え方が間違っています。
HTML では文章のみを記述し、デザインに関する一切は全てスタイルシートで行うのです。(文章と見た目の分離)
ご質問にある例では三つの画像を組み合わせることで一つのデザインができるはずなのに、三つのうち二つが HTML に、一つがスタイルシートにあり、情報が分散してしまっています。これでは絶対にうまくいきません。
文章と見た目の分離がちゃんと行われていれば、三つの画像に関する情報はすべてスタイルシートに書かれているはずです。
もう一つの間違いは、テーブルデザインでやっていたことをスタイルシートで (正確には CSS で) 再現しようとしていることです。
テーブルデザインでできたことがすべて CSS でもできるとは限りません。
例えば (今回の質問のように) 複数の画像を組み合わせて枠を作るということはテーブルデザインではよく行われていましたが、今の CSS ではこのようなことはできません。(なぜできないのかという理由はここでは割愛します)
できないことを無理やりやろうとして悪戦苦闘していては「スタイルシートは難しい、、、」というのも当然でしょう。
はっきり言って、今の CSS のデザイン能力はテーブルデザインに劣ります。それでもなぜスタイルシートが勧められるのかというと、文章と見た目の分離による作業能率の向上、アクセシビリティの向上などのメリットがあるからです。
CSS でテーブルデザインよりもかっこいいデザインが出来ると思っているならそれは間違いです。CSS でできるのは「賢い」デザインです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IMGタグで画像の繰り返し使用は…
-
同じ画像 複数回使用
-
lightbox2で画像を天地左右中央...
-
WEB上でディレクトリ内の画像を...
-
背景画像をリピートさせない方...
-
gif画像でたまに背景がグレーに...
-
CSS マウスオーバーでテキスト...
-
CSSでの動画のマスク処理
-
フッターの背景に色を指定した...
-
LightBoxの矢印の出し方
-
ひとつの画像をWEBで異なる小さ...
-
before疑似要素で画像を指定し...
-
背景画像の上に透過GIF背景...
-
<hr>の縦バージョンはありますか?
-
htmlタグで画像を背景に敷き詰...
-
【至急お助け!】チェックボッ...
-
サファリで背景画像が1ピクセ...
-
下記サイトのトップ画像はどの...
-
【Webサイト】画像が小さく表示...
-
画像で背景透明のテキストがに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画像の上にテキスト配置で、拡...
-
画像とその下にあるテキストの...
-
<hr>の縦バージョンはありますか?
-
【至急お助け!】チェックボッ...
-
【Webサイト】画像が小さく表示...
-
background-repeat CSS で切れ...
-
htmlかcssで背景の白い枠をなく...
-
background-sizeの背景で最小値...
-
lightbox2で画像を天地左右中央...
-
ページごとに背景画像を変更し...
-
LightBoxの矢印の出し方
-
WEB上でディレクトリ内の画像を...
-
IMGタグで画像の繰り返し使用は…
-
iframe内をクリックさせない方...
-
同じ画像 複数回使用
-
画像上に文字を表示するとiPhon...
-
background-sizeでcontainする...
-
ページの上下に白い横線が入る
-
コーディング中、右側に謎の余...
-
画像を複数横に並べ、かつそれ...
おすすめ情報