2013-04-02 9 views
13

私はcssを初めて使っています。 div要素の位置を絶対値に変更すると、div要素の幅が変わるのはなぜですか? Chrome v25.0.1364.172mとIE9で試してみましたが、両方とも同じ結果が得られました。絶対位置は幅に影響しますか?

簡単な例:

<!doctype html/> 
<html> 
<head> 
    <title>test</title> 
    <style> 
     div { 
      position:relative; 
      border-width: 1px; 
      border-style: solid; 
      border-color: black; 
     } 
    </style> 
</head> 
<body> 
    <div>test</div> 
</body> 
</html> 
+0

実際のコードのdivに幅と高さを適用しましたか? – XTGX

+0

絶対位置に変更すると、[ブロック書式設定](http://www.w3.org/TR/CSS2/visuren.html#block-formatting)がトリガーされます。 – thgaskell

+0

XTG、他のコードはありません。 – lee23

答えて

23

絶対配置の要素はブロックレベルとして 要素に動作していないと<div>はない通常のように互いの後に流れないからです。

divに含まれる内容に応じて、絶対配置されるdivの幅と高さを設定する必要があります。

あなたの絶対位置要素は、それがでそう、単純な例である第一の親要素に相対的な位置になる:。

シンプルな「落とし穴」に設定されていない親要素が持っているposition: relative;

<!-- I'm a parent element --> 
<div style="width: 500px; height: 500px; position: relative; border: 1px solid blue;"> 

    <!-- I'm a child of the above parent element --> 
    <div style="width: 150px; height: 150px; position: absolute; left: 10px; top: 10px; border: 1px solid red;"> 
     I'm positioned absolutely to my parent. 
    </div> 

</div> 
+1

申し訳ありませんしかし、私はまだ答えを理解していません。配置は要素を配置する場所を意味しないので、なぜそれが幅に影響しますか? – lee23

+1

あなたの要素がブロックレベルの要素である場合、それは内容に基づいて親を埋めるでしょう。したがって、普通のdiv内に段落テキストがたくさんある場合、段落テキストはCSSスタイルに基づいてdivのサイズを決定します。絶対配置はブロックレベルではないので、それはしません。 – SMacFadyen

+0

大丈夫、説明をありがとう。 – lee23

0

絶対位置を与える要素は親からの幅をとり、ブロック要素として振る舞いませんでした。

関連する問題