2013-07-12 51 views
10

別のdiv内にdivを配置する必要があります。他のdiv内にdivを配置する方法

ここでは、CSSの関連するスニペット(full example on cssdesk)です:

 .textblock-container { 
      width: 500px; 
      height: 500px; 
      border: 1px solid red; 
     } 
     div.textblock { 
      width: 100px; 
      height: 100px; 
      line-height: 100px; 
      border: 1px solid black; 
      position: absolute; 
      text-align: center;    
      background: rgb(0, 150, 0); /* Fall-back for browsers that don't 
           support rgba */ 
      background: rgba(0, 150, 0, .5); 
     } 

とhtmlの関連するスニペット:

<div id='blockdiv1' class='textblock-container'> 
     <div id='blockdiv2' class='textblock'><span>foo (NW)</span></div> 
     <div id='blockdiv3' class='textblock'><span>bar (NE)</span></div> 
     <div id='blockdiv4' class='textblock'><span>baz (SW)</span></div> 
     <div id='blockdiv5' class='textblock'><span>quux (SE)</span></div> 
    </div> 

問題がfoo /バー/バズ/ quuxブロックが配置されているということですブラウザウィンドウに対して、親要素には相対的ではありません。

私は間違っていますが、どうすれば修正できますか?

答えて

23

position: relativeを親の.textblock-container divに加える。

絶対配置要素は、その最も近い位置の親(absoluteまたはrelativeの位置に例えば最も近い親要素)に対して配置されているので、彼らは何も明示的に配置され、両親を(デフォルトの位置はstaticで)持っていない場合、彼らはからの相対になります窓。

+0

大丈夫窓の絶対配置されます。どうして? –

+0

は簡単な説明を追加しました:) – Ennui

+1

オフセット値( 'top'、' bottom'、 'left'、' right'プロパティ)に関しても、絶対配置された要素は、その最も近い位置の左上相対位置付けされた要素は、ページフロー内の元の位置に対してオフセットされています(まさに位置付けされた子孫の「アンカー」位置の外で、 'position:relative'の目的を理解するだけです)@JasonS – Ennui

4

はこれを試してみてください:

.textblock-container { 
width: 500px; 
height: 500px; 
border: 1px solid red; 
position: relative; 
} 

div.textblock { 
width: 100px; 
height: 100px; 
line-height: 100px; 
border: 1px solid black; 
position: absolute; 
text-align: center;    
background: rgb(0, 150, 0); 
background: rgba(0, 150, 0, .5); 
} 

は、実際には、あなただけの親のdivのためposition: relative propertieを追加する必要があります。あなたが親コントローラにposition: relative;を追加しない限り

7

divが働い

関連する問題