3カラム→2カラムになる、html・cssの書き方について、ご教授お願いします。
ブログで、左サイド(サブ)、センター(メイン)、右サイド(サブ)を制作しています。
トップページは3カラム校正。
詳細記事(2階層目)に入ると、右サイドはなくして、その分センターを右に伸ばしたいと思っています。
※文章だとわかりづらいので、図にしてみました。
http://kiyu0228.web.fc2.com/sample.gif
このように制作したい場合、html・cssをどのように書くのが最適でしょうか?
ちなみに、SEO対策のため、htmlでのdivの書き順は、
センター(メイン)→左サイド(サブ)→右サイド(サブ)で書き表したいです。
また、なるたけ右サイドをコメントオフ、または削除するだけで、反映される書き方が望ましいです。
いろいろと条件が多くて申し訳ござません…。
ご教授いただけると、幸いです。
どうぞよろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
あなたの書かれたスタイルシートも見ました。
あんな書き方はしません。
同じプロパティが何度も登場します。たとえばwidth:160px;とかborderとか・・。同じような対象に対しては一度で済ませること。セレクタはグループ化できます。
デザインのためにidやclassは付けない。あくまで文書構造に従った一般的なもの・・HTML5で導入されるsection(章),article(記事),aside(傍書き),footer(脚注),header(見出し),hgroupなどが、一般的に使われるclass名です。そういうclass名だと、検索エンジンはきちんと文意を理解してくれる。
デザインのためにidでマークアップすると、詳細度やセレクタで上書きできないから、またidを振るという悪循環に陥ります。
配置によるclass名をつけると、右においていたものを左に置くデザインに変更するとき混乱する。CSSだけ読んで、何をどうしたかわかるようにすること。
たとえばannotation(注釈)の中のheadは関連項目、footはそうではないとか、もちろんaside(脇書き)とかfooterでもよい。
HTMLの基本は、文書構造にしたがってマークアップすること。(デザインのためじゃない)
CSSの基本は、詳細度やセレクタなどのカスケーディングです。(プロパティなんて二の次でよい)
そうしてあれば、いかようにも配置の変更ができます。
ご回答ありがとうございます。
書き方については、レイアウトのサンプル用にパパっと書き出したものだったので、特にヒドイものだったと思います…。すみません。
自分の知識がかなり偏ったものと、みなさんのアドバイスでわかりましたので、もう一度、css自体を勉強し直してみます。
それでもわからなかったら…、その時に改めてご質問させてください!
いろいろとありがとうございました。
No.3
- 回答日時:
3カラムを2カラムにするのは、比較的基本的なことです。
HTML&CSSを理解していれば簡単です。
質問の趣旨は「HTML&CSSとは?」というところから全部分からないということでしょうか。
その場合は、ここで質問の前に、リファレンスを読んだ上で「ここまでは理解できるが、ここからがわからない」などの具体的な質問を投げたほうが、質問する側も回答する側も効率的です。
今回の質問だと、「自分で調べるの面倒だから誰かにやってもらおう」的な捉え方をされても不思議ではないですよ。
当然ですが、あなたが面倒がっている自分の尻を拭くことを、誰かに期待するのはとても乱暴です。
まずは、分からないなりにリファレンスを読むことをおすすめします。
「HTML CSS 2カラム」などのキーワードで検索するだけなのですから。
ご回答、ありがとうございます!
独学で進めてきたため、html・cssをどこからどこまで理解しているのか…
自分でもお答えできないのが現状です。
なので、乱暴な質問になってしまったようで、申し訳ありません…。
技術的には、一応、MTくらいなら、自分で組める程度です。
もう一度、自分で勉強しなおしてみます。
ご指導、ありがとうございました。
No.2
- 回答日時:
>ちなみに、SEO対策のため、htmlでのdivの書き順は、
これは誤解です。
SEOは、きちんとHTMLがマークアップされていたら問題はありません。
また、No.1さんへの補足にスタイルシートはひとつでと言うのは、本当はまずいです。メンテナンスを考えれば複数に分けたほうが良いです。
そもそもSEOと言いながら、wraper,main,right,leftは、とってもおかしいでしょう。
私が良く行うのは・・・構造化要素が増えたHTML5的に・・・DOMの解釈的に書くと
Element class id
<body> column2|column3
<div> header top
<h1>
<div> section bodyText
<h2>
<p>
<p>
<div> section article
<h3>
<p>
<div> aside What
<h3>
<div> section annotation
<div> head
<div> nav Navigation
<div> memo
<div> foot
<div> footer
<div> memo Document_Information
<dl>
<div> memo copyright
<div> nav site_map
とかになるでしょう。
基本的にスタイルシートは最低でも3つ書きます。(印刷が相対されるページや携帯端末でのアクセスが期待される場合は、その数増えます。
固定スタイルシート
default.css --- font-familyとかp{text-indent:1em;},line-heightとか
優先スタイルシート title="標準"
shape.css------ 形
color.css------ 色
代替スタイルシート(ALTERNATE STYLESHEET)
bigfont.css---- 視覚障害者用とか title="大きな文字"
revers.css----- 反転表示 title="反転"
印刷用 @media:print
携帯端末用 @media:handheld
とか。
で、もちろんニ分割と三分割は、スタイルシート一枚でも良いです。たとえばbodyのclassに、[column2|column3]としておき、
div.annotation,
body.column3 div.annotation div.head,
body.column3 div.annotation div.foot
{position:absolute;}
div.annotation{top:200px;}
body.column3 div.annotation div.foot,
body.column3 div.annotation div.head{width:200px;top:0;}
body.column3 div.annotation div.foot{right:0;}
body.column3 div.annotation div.head{left:0;}
body.column2 div.annotation div.foot,
body.column2 div.annotation div.head{width:300px;}
基本的には、これだけでよい。
>また、なるたけ右サイドをコメントオフ、または削除するだけで、反映される書き方が望ましいです。
文書構造上おかしいです。(当然SEO的にも)
bodyを二つのクラスに分けるのが良いでしょう。いわゆる脚注(annotation)を本文に関係するhead note(頭注)と、直接関係しないfoot note脚注に区別できるはずです。
長い本文で、本文に関わる脚注は個別に<div class="section">をrelativeにでもしておいて、absoluteさせることも良いでしょう。スタイルシートに追加になります。その場合、
body.column3 div.section div.foot{top:0;right:0;}
とか・・詳細度、カスケーディングをうまく使いましょう。
いろいろとご指摘、ありがとうございます!
独学で進めてきたため、かなり偏った知識を身につけてしまったようです…。
いただいたアドバイスを参考に、組みなおしてみます。
ありがとうございました。
No.1
- 回答日時:
どうも。
アフィリエイトで食ってるものです。外部スタイルシートを使えばいいのでは?
スタイルーシートファイル別に内容を変えて、
必要なページに関連付けるだけだと思いますよ。
例えばindexのmainにはフロートでleft、ボックスでwidthが必要ですが、
そうではないページ、つまり2カラムになるページではleftもwidthも不要ですよね。
仮に#mainというIDにしましょう。
indexに#mainに対してleftとwidthを設定した外部スタイルシートを紐付けし、
他のページには#mainに対してleftとwidthを設定しない外部スタイルシートを使えばいいです。
ページごとに別々のスタイルシートをいくつでも指定できるのですから簡単ですよ。
もちろん図にあるrightというdivは、HTML上で扱って下さい。
これ、CSSで見えなくすることもできますけど、するとスパム扱いです。
ですから、コメントオフでrightをHTML上で消して、
mainのレイアウトは外部スタイルシートで。というのが正解。
この回答への補足
さっそくのご回答、ありがとうございます!
ご指摘の通り、ページごとにcssを別で読み込めば、問題は解決するのですが…
なるたけ、cssの数は増やさず1つのcssで管理したいと思っています。
以下は、自分で組んだサンプルです。
htmlの<div id="right"></div>を、cssでdisplay:noneか、htmlでコメントアウトするだけで、centerが伸びるようにしたいのです。
▼サンプルhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>3カラムレイアウト</title>
</head>
<body>
<div id="wrapper">
<div id="main">
<div id="center">id "center" の内容がここに入ります</div>
<div id="left"> id "left" の内容がここに入ります</div>
<!-- /main --></div>
<div id="right"> id "right" の内容がここに入ります</div><br clear="all" />
<div id="footer">footerです。</div>
<!-- /wrapper --></div>
</body>
</html>
▼サンプルcss
body,td,th {
font-size: medium;
}
#wrapper {
width: 950px;
border: 1px solid #CCC;
padding: 20px;
margin: 50px auto;}
#main {
width: auto;
float: left;
padding: 0;
margin: 0; }
#center {
width: auto;
float: right;
border: 1px solid #CCC;
padding: 20px;
margin: 0;
}
#left {
width: 160px;
float: left;
border: 1px solid #CCC;
padding: 20px;}
#right {
width: 160px;
float: right;
border: 1px solid #CCC;
padding: 20px;}
#footer {
clear: both;
text-align: center;
border: 1px solid #CCC;
padding: 20px;
margin: 20px auto 0 auto;
}
ややこしくて申し訳ありませんが…問題を解決できる方法は、ありますでしょうか?
どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- gooブログ GOOブログ(有料版)内の本文以外の右サイド部分の項目の上下を入れ替えたいのですが。 1 2022/04/08 10:03
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- モニター・ディスプレイ 詳しい方教えて下さい。 Windows11でデュアルモニターにしようとしています。 メインモニターの 1 2022/05/02 15:19
- 日本語 漢字の書き順 9 2023/02/11 07:51
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- MySQL SQLでカラムを追加し、条件に合致した場合にフラグ(レコード)を付与する方法 2 2022/05/18 23:54
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTML属性での「""」 「''」違い
-
<div id="container">の使いか...
-
htmlのolやulなどlistにtitleや...
-
インラインフレームのページ内...
-
スペースを使わず文字位置を揃...
-
複数のボタンを等間隔に、かつ...
-
HTML5 iframe の代わり
-
横並びdivで一部の初期高さがず...
-
<!-- #BeginLibraryItemとは
-
div要素が重なってします
-
HEADタグとheaderタグ
-
divとpの使いわけ
-
標題<h1>に、網掛けはできますか?
-
htmlの見出しタグ(<h1>)の次...
-
画面を縮小するとカラムが落ち...
-
フッターがウインドウの一番下...
-
CSSで、contentsがfooterに重な...
-
特定範囲内のCSSの継承を断ち切...
-
セクションをdivで囲むと見出し...
-
背景画像に全体または部分的に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
div要素が重なってします
-
<div id="container">の使いか...
-
複数のボタンを等間隔に、かつ...
-
html の divとtable の役割
-
divとpの使いわけ
-
ヘッダーとフッターだけ背景を...
-
min-heightとheightの違いについて
-
セクションをdivで囲むと見出し...
-
画面を縮小するとカラムが落ち...
-
ヘッダーを左右に二分割する方...
-
1時間30分を簡単に表したいで...
-
スペースを使わず文字位置を揃...
-
CSSで、contentsがfooterに重な...
-
h1に自分自身へのリンクを張...
-
divの中に外部のHTMLを埋め込む
-
divを横に並べる方法
-
hタグの右横に画像を表示
-
h1のテキストサイズよりh2の方...
おすすめ情報