センタリングさせるデザインで「absolute」が使えない【CSS】
1年以上前の記事です。内容が古い可能性があります。
先日、CSSでセンタリングさせる方法を説明しました。
実は、この記事は今回の記事のための布石に過ぎなかったりします。
「absolute」(絶対位置指定)はデザインをする上で非常に便利です。
好きな場所にオブジェクト(タグ)を移動させることができますものね。
ただ、センタリングさせたデザインで、その配下にあるオブジェクト(タグ)に対して「absolute」(絶対位置指定)をするとHTML全体を基準にしてしまうため、画面を大きくしたときにレイアウトに崩れが起きてしまうことがあります。
今回説明するのはこれを解決させるための方法。
なんとも過去にはこんな記事も書いてました。
□プルダウンメニューを全体的にセンタリングさせる方法
これも、これから紹介する方法を使えばCSSだけで解決させることができます。
さっそく前回のソースを活用してHTMLを作ってみましょう。
まずは、前回のソースをひとつにまとめてHTMLにしてみます。
CSSをリンクファイルでなくHEAD部に書き写せばOK。
ID等が微妙に違っちゃってるのはお許しください。
なお、実際はリンクファイルでも問題ありません。分かりやすくするためにまとめています。
こんな感じ。
<title>センタリング+絶対位置指定</title>
<style type="text/css">
<!--
#test {
background-color: #6699FF;
height: 300px;
width: 300px;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
}
-->
</style>
</head>
<body>
<div id="test">ここに内容
</div>
</body>
</html>
つぎに、最上位DIVの配下にDIVを配置し「absolute」で絶対位置指定をします。
なお、今回は簡略化したかったので配下のDIVにID指定はしていません。
こんな感じ。
<title>センタリング+絶対位置指定</title>
<style type="text/css">
<!--
#test {
background-color: #6699FF;
height: 300px;
width: 300px;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
}
#test div {
background-color: #FFCCCC;
margin: 0px;
padding: 0px;
height: 100px;
width: 100px;
position: absolute;
top: 50px;
right: 50px;
}
-->
</style>
</head>
<body>
<div id="test">
<div>ここがabsolute</div>
</div>
</body>
</html>
この状態でソース上は完成しているように感じます。
が、しかし実際見てみると
□ 上記ソースのHTML
変なところに下位オブジェクトが表示されちゃってるし、ウインドウの広さを変えるとレイアウトにズレが生じてしまいます。
どうすればこの問題が解決するか?
さっそく解答。こんな感じ。
<title>センタリング+絶対位置指定</title>
<style type="text/css">
<!--
#test {
background-color: #6699FF;
height: 300px;
width: 300px;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
position: relative;
}
#test div {
background-color: #FFCCCC;
margin: 0px;
padding: 0px;
height: 100px;
width: 100px;
position: absolute;
top: 50px;
right: 50px;
}
-->
</style>
</head>
<body>
<div id="test">
<div>absolute</div>
</div>
</body>
</html>
どこが違うか分かりましたか?(太字にしています)
実は「absolute」を入れたDIVではなくその上位に位置するDIV(今回は「ID=”test”」のDIV)に「position: relative」を入れてあげればOK。
これは、上位オブジェクトのpositionをしっかり指定してあげないと。「absolute」がどこを基準にしていいか分からなくなってしまうからのようです。
□ 上記ソースのHTML
覚えておきましょう。
アドセンス広告メイン
関連記事
-
-
イベント支援ツール「ATND(アテンド)」でイベントに参加する方法
1年以上前の記事です。内容が古い可能性があります。そもそも、ATND(アテンド) …
-
-
「カエレバ」が便利そうなので色々なアフィリエイトに手を出してみた(Yahoo!ショッピング編)
1年以上前の記事です。内容が古い可能性があります。「もしも」に引き続き、「カエレ …
-
-
CSS2.1まとめ書き-list-style編(HTML・CSSリファレンス)
1年以上前の記事です。内容が古い可能性があります。CSS2.1まとめ書きは今回の …
-
-
「NISA(ニーサ)」とは「NEET(ニート)」とも「ニーソ」とも違う投資非課税制度だった
1年以上前の記事です。内容が古い可能性があります。新語・流行語大賞で初めて聞いた …
-
-
「iOS5」にしたら通知がうるさくなくなった【iPhone】
1年以上前の記事です。内容が古い可能性があります。iOS5にしたらシリーズ第3弾 …
-
-
アメブロ(アメーバブログ)をちょっといじってみた
1年以上前の記事です。内容が古い可能性があります。先日、アメブロを本格的に始めた …
-
-
ITの意味
1年以上前の記事です。内容が古い可能性があります。7月7日に「ITはエコです。」 …
-
-
各種ECサイト(ショッピングサイト)料金比較一覧 (11/3追記)
1年以上前の記事です。内容が古い可能性があります。過去にやってるかなぁと思ってい …
-
-
独自ドメインのWORDPRESS(ワードプレス)ブログを半日で作る方法(前編)
1年以上前の記事です。内容が古い可能性があります。ブログ移転後最初の記事はまさに …
-
-
鼻毛を抜くと死ぬことがある。白髪以外の鼻毛は抜かずに切りましょう
1年以上前の記事です。内容が古い可能性があります。ソースがWikipediaなん …
- PREV
- 2010熊谷うちわ祭まとめ #2
- NEXT
- 2010年7月のヒットキーワードとヒットページ