疑似インラインフレームを中央に配置する方法
疑似インラインフレームを画面中央に配置する方法を教えてください。
ちなみに、以下のような記述を試してみたのですが…。
【css】
body {
text-align: center;
margin-top: 100px;
color: #555555;
font-size: 10px;
font-family: "MS Pゴシック";
}
*{
margin:0px;
border:0px;
padding:0px;
line-height:100%;
}
.box{
text-align: center;
padding-bottom: 50px;
}
.box_scroll{
text-align: center;
width: 300px;
height: 200px;
padding: 10px 10px;
overflow: auto;
}
【xhtml】
<div class="box">
<img src="img.jpg" width="100" height="50" alt="img" />
</div>
<div class="box">
<div class="box_scroll">
---文章---
</div>
</div>
初めの<div class="box">は中央に配置されるのですが、疑似インラインの部分は左に寄ってしまいます。
他にも他の方の質問を参考に試してみたのですが、初心者の為いまいちよくわからず、うまくいきませんでした。
どうか回答よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
******************************************
罫線で見やすくしています。BOX間に改行を
入れています。
margin-autoでセンタリングしています。
text-alignは、中身のインライン要素をセンタリング
するものです。
******************************************
<div class="box">
<img src="img.jpg" width="100" height="50" alt="img" />
</div>
<br />
<div class="box_scroll">
<p>---文章---</p>
</div>
***********************************************
body {
margin-top: 100px;
color: #555555;
font-size: 10px;
font-family: "MS Pゴシック";
}
*{
margin:0px;
border:0px;
padding:0px;
}
.box{
margin-right: auto;
margin-left: auto;
clear: both;
width: 100px;
background-color: #FFFFCC;
height: 50px;
border: 1px solid #FFCC33;
}
.box_scroll{
width: 300px;
height: 200px;
padding: 10px;
overflow: auto;
margin-right: auto;
margin-left: auto;
border: 1px solid #FF0000;
}
No.3
- 回答日時:
スタイルシートでは、*は全称セレクタで、詳細度0ですから、他のセレクタで要素が一つでも指定されれば、*の位置に関わらず上書きされますから、記述の順番には関係ありません。
★詳細度が同じなら後からの記述で上書きされます。
^^^^^^^^^^^^^^^^
とはいっても*全称セレクタで、paddingやmarginを0にリセットするのは感心しません。dlやol,ulなどがあると、いちいち指定する必要が出てきます。せいぜいbodyとhtmlに対してのみ指定しましょう。
ページモデル(media=printなど)でない限りスクロール可能な端末にはheightは表示サイズを参照できません。したがって
>画面中央に配置する方法を教えてください。
は縦方向に関しては無理です。あくまで「横方向の中央」です。
div(汎用ブロック要素)はブロック要素ですから、内部に非置換要素を含む場合はheightは指定する必要があります。横方向関しては、widthを指定して、margin-left,margin-widthをautoにすると中央に表示されなければならないのですが、IE6以前は、それを含むボックス要素にtext-align:centerとしないと左によるバグがあります。
下記サンプルは、divを重ねてありますが重ねなくても良いはずです。また印刷時はheightは無効になってすべて印刷されます。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<style type="text/css">
<!--
ht,l,body{margin:0px;padding:0px;}
body{
text-align:center; /* for Old IE */
}
div.article{
border: solid 1px blue;
}
@media screen{
body{background-color:gray}
div.article{
width:80%;
margin-right:auto;
margin-left:auto;
}
div.article div{
background-color: white;
width: 300px;
height: 100px;
margin: auto;
padding: 10px;
overflow: auto;
}
}
@media print{
body{
width: 180mm;
height: 260mm;
border: solid 1px gray;
}
div.article{
text-align:left;
width: 80%;
margin-left: auto;
margin-right: auto;
border: solid 1px gray;
}
div.article div{
width:100%;
}
-->
</style>
<title>サンプル</title>
</head>
<body>
<h1>サンプル</h1>
<p class="title"><img src="img.jpg" width="100" height="50" alt="画像" /></p>
<div class="article">
<h2>見出し</h2>
<p>ここから段落が続く</p>
<div>
<p>---文章---</p><p>---文章---</p><p>---文章---</p><p>---文章---</p>
<p>---文章---</p><p>---文章---</p><p>---文章---</p><p>---文章---</p>
<p>---文章---</p><p>---文章---</p><p>---文章---</p><p>---文章---</p>
</div>
</div>
</body>
</html>
この回答への補足
丁寧な回答、ありがとうございました。
参考にさせていただき、解決できました。
> *全称セレクタで、paddingやmarginを0にリセットするのは感心しません。
これは、違ったブラウザでもできるけ見た目が変わらないように記述したものです。
勉強不足で「bodyとhtmlだけ」という考えがなかったのですが、bodyとhtmlだけという方法でも上記のような効果が得られますか?
もしそちらの方が良いようであれば、書き変えたいと思うのですが…。
>縦方向に関しては無理です。あくまで「横方向の中央」です。
説明不足ですみませんでした。
「横方向での中央」についてお聞きしたかったのです。
No.2
- 回答日時:
CSSのみ変更しました。
*{
margin:0px;
border:0px;
padding:0px;
line-height:100%;
}
body {
text-align: center;
margin-top: 100px;
color: #555555;
font-size: 10px;
font-family: "MS Pゴシック";
}
.box{
text-align: center;
padding-bottom: 50px;
}
.box_scroll{
text-align: center;
width: 300px;
height: 200px;
padding: 10px 10px;
overflow: auto;
margin: 0 auto; ←追記
}
---
なお、*とbodyの順番を入れ替えています。
*は「全ての要素」という意味を持つので、
bodyでマージンなどを設定しても直後の「*」で打ち消されてしまっています。
回答、ありがとうございました。
参考にさせていただき、解決できました。
ちなみに、*とbodyの順番は、当初の順番でも特に問題はありませんでした。
でも、もうちょっと勉強してみます。
ご指摘、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSS、width100%でもできる余白
-
cssで「下よせ」ってどうやって...
-
CSS(0の単位)について
-
ページを拡大縮小でborderが消...
-
<div>と<div>の間の10px程の...
-
floatした画像の下揃えについて
-
CSSの角丸での質問です。 今、C...
-
スクロールボックスを中央に配...
-
定義リスト dl dd dt
-
余分な縦スクロールバーが出て...
-
heaerとfooterに背景画像が難し...
-
Flexslider2のカーセルスライダ...
-
CSSでボックスのheightが0になる
-
【スタイルシート?】同行内で...
-
テーブル内の文字が揃わない
-
【CSSについて】リストをフロー...
-
リストを全体的に右寄せにしたい。
-
CSSで余白とパディングに”0”を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
表示倍率を変えるとレイアウト...
-
CSSがなぜかfont-sizeだけ効か...
-
CSS、width100%でもできる余白
-
W3Cのソースコードの検証サービ...
-
CSS:animation開始位置の設定
-
CSSで指定した背景画像にリンク...
-
<div>と<div>の間の10px程の...
-
余分な縦スクロールバーが出て...
-
CSSでボックスのheightが0になる
-
【CSS】ヘッダーの高さが不明の...
-
スクロールボックスを中央に配...
-
li 黒丸含んで移動する方法
-
border-style:solidで文字がずれる
-
【HTML&CSS】フッター下部の余...
-
Media Queries 4 で 非推奨とな...
-
初心者html・CSS ウィンドウを...
おすすめ情報