2011-02-09 21 views
6

利用可能なスペースを埋める、右が残りのスペースを埋める必要があり80px広い他のです。これまでのところ私が試した:はそう、彼らは私は2つのdiv要素を持っている

<!DOCTYPE html> 

<html> 
<head> 
    <title>#{get 'title' /}</title> 
    <style type="text/css"> 
     body { 
      margin: 0; 
      padding: 0; 
     } 

     #left { 
      position: relative; 
      margin-right: 80px; 
      background-color: red; 
     } 

     #right { 
      float: right; 
      position: relative; 
      text-align: left; 
      width: 80px; 
      background-color: yellow; 
     } 
    </style> 
</head> 
<body> 
<div id="left"> 
    Left 
</div> 
<div id="right"> 
    Right 
</div> 
</body> 
</html> 

しかし、右のボックスは常に左のボックスの下に入れて、それを右にされていません。私はマージンのためだと思います。私はまた余白を残してみました:右のものに-80pxしかし、これは何も変えないようです。だから、どのように右のdivが左のdivと同じ行にあるようにCSSを変更する必要がありますか?

答えて

13

は左の前に右のdivを持っています。 divは、それが常に流れを中断しますつまり、ブロック要素であるためです

<div id="right"> 
    Right 
</div> 
<div id="left"> 
    Left 
</div> 

Working Example

+0

これは動作し、提案ソリューションの最も簡単であるように思われます。ありがとうございました!私が得られないのは、なぜこれが働いているかです。理由を説明できますか? –

+0

要素が順番に描画されるため、右要素を描画するために左要素を下に移動する代わりに、右要素が前に描画され、左要素が右要素の周りに描画されます。 –

+0

私は参照してください。ありがとうございました:) –

2

。 divのdisplayinlinefloatからleftに変更することができます。

+0

'display:inline'を使うと、内容は要素の幅を定義し、'#left'要素は 'width'を使わずに右側に伸びません。 – Sotiris

1

#rightposition:relative;position:absolute;top:0;right:0;に変更することができます。 これは、要素を親の右上隅に配置します。

例:またhttp://jsfiddle.net/WaQGW/

3

、あなたはLEFTの拡大に静的な幅とRIGHTのdivのままにするのdivおよびページのサイズとの契約を探しているなら、あなたは以下のコードを使用したいです:

.left { 
    float: left; 
    position: relative; 
    width: 80px; 
    background-color: red; 
} 

.right { 
    position: relative; 
    text-align: left; 
    margin-left: 80px; 
    background-color: yellow; 
} 

そしてHTMLが...

<div class="left">Left</div> 
<div class="right">Right</div> 
1

今日ではflexで行うことができることになります。 flex

セットコンテナの(この場合はbodydisplayプロパティが、その後、100%に左divの幅を設定します。

body { 
 
    margin: 0; 
 
    padding: 0; 
 
    display: flex; 
 
} 
 

 
#left { 
 
    background-color: red; 
 
    width: 100%; 
 
} 
 

 
#right { 
 
    width: 80px; 
 
    background-color: yellow; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>#{get 'title' /}</title> 
 
</head> 
 
<body> 
 
<div id="left"> 
 
    Left 
 
</div> 
 
<div id="right"> 
 
    Right 
 
</div> 
 
</body> 
 
</html>