CSSで2カラム左メニューレイアウトのサイトを作成しております。
レイアウトはできたのですが、
ページ内にいくつかdivでボーダーのないボックスをつくり
写真をいれたり文章をいれたりします。
1ページのCSSレイアウトしたコンテンツ部分のdivの中に
5つほどdivが入れ子ではいる予定です。
インターネットでdivの多用について調べると
ださいだの、わかってないだと書いてあります。
でもdivを多用しなければ、
例えば写真の横にテキストを配置したり、
よこにイメージを配置したいときに
テーブルやHTMLタグをつかわないといけないので、
余計ソースが汚くなるんではないでしょうか?
私は、CSSを本格的に勉強し始めてほとんど初心者ですので、
詳しいことがわかりませんので、もしご存知の方おられましたらご意見お待ちしております。
No.10
- 回答日時:
度々しつこくてすみません……!(汗)
さっきご紹介したCSSはかなりくどかったので
ちょっとスッキリさせました。
---test.css---
div,p{
color :white;
padding :1%;
margin :1%;
}
.div{
border :solid 1px black;
}
.left{
float :left;
width :45%;
background-color :red;
}
.right{
float :right;
width :45%;
background-color :blue;
}
.clear{
float :clear;
background-color :green;
}
---ここまで---
---test.html(訂正部分のみ)---
<div class="left div">
<p class="left">
文章A
</p>
<p class="right">
文章B
</p>
<p class="clear">
文章C
</p>
</div>
<div class="right div">
<p class="left">
文章D
</p>
<p class="right">
文章E
</p>
<p class="clear">
文章F
</p>
</div>
<p class="clear">
文章G
</p>
---ここまで---
あんま変わってないですね!´д`;スミマセン
No.9
- 回答日時:
No.8に追伸。
すみません、読み返していて気が付きました。
それで試したらって単位が書いてない……!!
50%で試したら、ということでした。
失礼いたしました。
あと余計なお世話かもしれませんが、
コメントがちょっと飛び飛びのようですね。
回答されている方には皆様に、「回答ありがとうございます」
の一言だけでも返信をした方が良いと思いますよ~。
これから付けるところでしたら大変失礼致しました。
No.8
- 回答日時:
>よろしければどのようなCSSになるのか
そうですね。一例ということであれば
dtに入る画像の縦横が200px×150px固定での話ですが
dl {
width:500px; /* 特に必要はありませんが、テキストとの兼ね合いです */
}
dt {
float:left;
width:200px;
}
dd {
height:auto !important;
height:150px;
min-height:150px;
}
こんな感じでどうでしょうか?
将来的には
dt {
display:run-in;
margin-left:-200px;
}
dd {
padding-left:200px;
}
のようにもできると思います。
No.7
- 回答日時:
私もCSSレイアウト初心者なので見苦しいコーディングですが。
。。floatのサンプル書いてみました。
(自分も1度くらいしか使ったことなかったので
かなり手探りな内容です)
---test.css---
p{
color :white;
}
.div_l{
float :left;
width :45%;
background-color :yellow;
border :solid 1px black;
padding :1%;
margin :1%;
}
.div_r{
float :right;
width :45%;
background-color :orange;
border :solid 1px black;
padding :1%;
margin :1%;
}
.left{
float :left;
width :45%;
background-color :red;
padding :1%;
margin :1%;
}
.right{
float :right;
width :45%;
background-color :blue;
padding :1%;
margin :1%;
}
.clear{
float :clear;
background-color :green;
padding :1%;
margin :1%;
}
---ここまで---
---test.html---
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" href="test.css" />
<title>
サンプルソースコード
</title>
</head>
<body>
<h1>
floatのテスト
</h1>
<div class="div_l">
<p class="left">
文章A
</p>
<p class="right">
文章B
</p>
<p class="clear">
文章C
</p>
</div>
<div class="div_r">
<p class="left">
文章D
</p>
<p class="right">
文章E
</p>
<p class="clear">
文章F
</p>
</div>
</body>
</html>
---ここまで---
良かったらまるっとコピペでどんなもんか見てみて下さい。
ポイントは横幅ですかね。。。
↑で width:45%; とかしてますけど、
なぜかと言えばそれで試したら線の幅とか色んな要素で
トータル100%を超えてしまって、横並びにならんのです。
難しいですねえ。
うーーん、我ながら稚拙な^^;
No.6
- 回答日時:
話はずれるかもしれませんが、レイアウトに関して言えば
画像とテキストを並べるのはfloatでできると思いますよ。
(イメージ同士も含む)
参考: http://www.tagindex.com/stylesheet/img/float.html
テーブルやHTMLでなんて力技を持ち出さなくても。^^;
意味合いを考えて適切なマークアップをして、
それから必要に応じて、となると思いますけどね。
私のサイトで先ほど悪戦苦闘していたのですが、
それはテキストとテキストを横に並べる。
イメージとしては
あいうえおかきくけこ|あいうえおかきくけこ
さしすせそたちつてと|さしすせそたちつてと
のような感じです。
これをCSSでやってみて、floatもつかったのですが、
親要素である枠の中に子要素のboxをdivに2つ横並びにつくってみたのですが、横並びになってくれなかったり、横並びになってもずれていたり大変でした(^^;)
で、結局divつかうよりタグの量が少なくなったテーブルでさっとつくっちゃいました。でも、テーブルの設定はCSSでやりました。
やっぱりCSSって難しいですね。。。
初心者の私は何が悪いのかわからなくてあきらめてしまうことも多いです。
ご回答ありがとうござます。
No.5
- 回答日時:
tableを使わずに、と考えられているので、個々のHTMLタグの意味については調べられているでしょう。
divというのは、その部分をグループ化するという意味があります。
入れ子にするのは構いませんが、
グループ化したものを全く同じ組でさらにグループ化、グループ化、としていくのは、きれいな組み合わせだと思いますか?
もちろん、たまたま同じ組でグループ化してしまった、ということもあるかもしれません。
たとえばある季節、月ごとにグループ化すると、
<div class="春">
<div class="3月">
<img src="a.jpg">
<img src="b.jpg">
</div>
<div class="4月">
<img src="c.jpg">
<img src="d.jpg">
</div>
<div class="5月">
<img src="e.jpg">
</div>
</div>
<div class="夏">
<div class="6月">
<img src="f.jpg">
</div>
</div>
このとき夏と6月のグループがイコールになりますが、
これは「たまたま1枚しかなかった」という理由のためです。
今回されようとしている方法は「たまたま」ではないですよね。
<div class="夏">
<div class="6月">
<div class="何のグループ?">
<div class="何のグループ?">
<img src="f.jpg">
</div>
</div>
</div>
</div>
</div>
そういうのはダメだというのがHTML+CSSの考え方です。
> でもdivを多用しなければ、
> 例えば写真の横にテキストを配置したり、
> よこにイメージを配置したいときに
> テーブルやHTMLタグをつかわないといけないので、
> 余計ソースが汚くなるんではないでしょうか?
tableタグが汚いのではなく、デザインのためにタグが使われることが汚いのです。
<div>をデザインのためだけに使うのであれば、やってることは変わりません。
もちろん<span>でも<ul>でも同じです。
質問者さんだけが技術的にできないのか、誰がやってもできないのかは質問文からはわかりません。
本当に誰がやってもできないのであれば、それもやむを得ませんが、
デザインを目的としたタグを使わないのもきれいなHTML文書を作る第一歩だと思います。
初心者脱出を目指してがんばってください。
No.4
- 回答日時:
以下はタグの意味を理解し、HTMLのマークアップをしっかりやった上での話です。
最適化の観点から言えば使わないほうが良いのはたしかだと思います。
ですが、今のhtmlとcssの規格ではどんなレイアウトでも100%div無しでできるわけではありません。
これは現状では仕方がないことです。
それでも、divを使わずに目的のレイアウトができるのであれば削ったほうがいいと思います。
仕事の場合はシステムや管理の面から必要なくてもわざとdivを使うこともあります。
もしも本格的にhtmlとcssをやろうとされているのであれば、個人サイトに関しては、限界までdivを削るためのcssの指定方法を模索していった方が後々で役に立つように思います。
(本当にしっかりコーディングされたhtmlの1つのdivを削るのはかなり大変なので)
ここからはHTMLのマークアップをしっかりやらない時の話です。
SAYKAさんと少しかぶるところだと思いますが
>写真の横にテキスト
に関しては時と場合によります。
以下は画像の横にテキストが来る場合のHTMLです。
それぞれ状況と意味が異なっています。
■サンプル1
<dl>
<dt><img src="#" alt="" /></dt>
<dd>説明のテキスト</dd>
</dl>
■サンプル2
<p><img src="#" alt="" /></p>
<p>普通のテキスト</p>
■サンプル3
<ul>
<li>
<p><img src="#" alt="" /></p>
<p>普通のテキスト</p>
</li>
<li>
<p><img src="#" alt="" /></p>
<p>普通のテキスト</p>
</li>
</ul>
サンプル1は画像とそれに関する説明が横に並ぶ場合、サンプル2は画像と普通のテキストの場合、サンプル3は画像と普通のテキストが規則的に複数存在し、まとめられる場合です。
それぞれの持つ意味によってHTMLの書き方が違いますよね?
タグが入れ子になればなるほど、divはわざわざ追加する必要がなくなってきます。
サンプル2で
<div>
<p><img src="#" alt="" /></p>
<p>普通のテキスト</p>
</div>
のようにdivを追加しなければ不可能なレイアウトがサンプル3ではdivを追加することなく実現が可能です。
ですが、これはどんなものでもわざと多くタグを使う型にはめれば良いという例ではありません。
あくまでちゃんとマークアップしない結果としてdivを多様することは避けるべきという例です。
ご回答ありがとうございます。
dlタグをつかうところですが、
これはリストタグだと思いますが、
これをすると横に並びなくてたてに並びますよね。
これは別でCSSで設定すればよいということですか?
よろしければどのようなCSSになるのか教えていただきたいです。
No.3
- 回答日時:
「ださいだの、わかってないだと書いてあります。
」の言葉だけを捕らえて、非難したり、どうして・・というのは問題です。
そのセリフが出る背景には
「tableで配置するのは間違っているから、divで配置する」という思考では、確かにHTML上は正しくても、おかしいんじゃないの・・・という意味で使われていると思います。
>でもdivを多用しなければ、例えば写真の横にテキストを配置したり、よこにイメージを配置したいときにテーブルやHTMLタグをつかわないといけないので、余計ソースが汚くなるんではないでしょうか?
という考え方の根本は、やはりおかしいです。
それならdivはひとつもいらないし、いってもひとつ。
はじめにデザインありきで、内容が伴ってない。HTMLはそもそも文書構造を記述するもので、デザインのためではない。
ただ、欠点もあって、XML/XHTMLと異なり、使える要素が限られているので、
<Picture><img src=*** /><message>****</message></Picture>なんてかけないのですから、無理からぬところはあります。
たとえば、
<dl class="photoList main">
<dt class="photo"><img src=""></dt>
<dd>この写真は</dd>
<dd>撮影日</dd>
<dt class="photo"><img src=""></dt>
<dd>この写真は***</dd>
<dd>撮影日</dd>
</dl>
<dl class="photoList sub">
<dt class="photo"><img src=""></dt>
<dd>この写真は</dd>
<dd>撮影日</dd>
<dt class="photo"><img src=""></dt>
<dd>この写真は***</dd>
<dd>撮影日</dd>
</dl>
と書かれているHTMLにおいて、下のdl(定義リスト)をページの左端に200pxで表示し、それらは説明文は写真下に撮影条件はその下に小さな文字で、
次のdlについては、中央に、適当な幅で表示し、説明を写真の右に、撮影条件を写真下に右寄せで・・なんて配置をしようとすると、子孫セレクタや兄弟セレクタ、属性セレクタを活用すると、divなんてひとつもいらないですよね。
「divを多用するなというのは、divを使わなくて済むところにdivを使うな」という意味ですよ。
No.2
- 回答日時:
全然問題ないんじゃないかな
ただ、divがblock要素だって事を認識していないで沢山使っているというなら問題が有るね。
パーツとして配置するというなら通常はspanを用いる方が良いけれど、多分使い勝手はdivの方が上だろうね。
あと、画像の横にテキスト配置なんてそれこそinline要素の使い方。(区切り線が無いなら の話)
ソースの綺麗汚い以前に、目的の配置ができる事の方がまず重要。
(tableで画像を巧みに配置する古い技は見た目重視だったからに他ならない)
伝えるのが目的。その構築方法を整理するのは余裕があったらやれば良いんじゃないかな。
>あと、画像の横にテキスト配置なんてそれこそinline要素の使い方。(区切り線が無いなら の話)
これってインライン要素なんですか?spanとかのことですよね。
もしするとしたらどのようなタグになるんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS HTML、cssのatomつぅーやつで 課題Ex1ってやつを表示させたいのですが、 私は課題Ex1が 2 2022/12/15 16:56
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS サルワカさんの吹き出しのスタイルシートについて。 https://saruwakakun.com/h 2 2022/10/28 22:55
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
idの中のid指定
-
個別にリンクの色を変える方法
-
CSSに同じclass名がいっぱい‥。...
-
1ページ内で2種類のリンク文字...
-
HTML要素のid/class名の長さに...
-
リンク文字の 一部だけ色を変...
-
divの入れ子を多用してページを...
-
サイトにjQueryが使用されてい...
-
CSSの適用を一部だけ除外したい。
-
一部のリンクの下線を消す
-
<span>で2重にかけているものを...
-
CSSでテキストリンクの色を複数...
-
最近、HTMLのヘッダーをIDで定...
-
CSS, リンクの色を一部変えるに...
-
liリストタグの背景色に色がつ...
-
CSSのクラス名・ID名の指定でワ...
-
htmlの文字が縦書きになる
-
超音波で洗脳。
-
HTML属性での「""」 「''」違い
-
<div id="container">の使いか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別にリンクの色を変える方法
-
htmlのid属性って必要なの?
-
最近、HTMLのヘッダーをIDで定...
-
HTML要素のid/class名の長さに...
-
CSSに同じclass名がいっぱい‥。...
-
liリストタグの背景色に色がつ...
-
CSSのクラス名・ID名の指定でワ...
-
サイトにjQueryが使用されてい...
-
ページの左右の余白(枠外)に...
-
CSS, リンクの色を一部変えるに...
-
透過背景を解除するにはどうす...
-
<span>で2重にかけているものを...
-
idの中のid指定
-
display:table-cell内でこんな...
-
CSSが効かずどのように指定すれ...
-
スタイルシートで、id属性の中...
-
【VBA/HTML】IE画面内のページT...
-
brにクラスをつけてcssでdispla...
-
外部css定義したclassをht...
-
CSS内で使われる山括弧の意味が...
おすすめ情報