2009-04-25 15 views
5

私はこのようなヘッダを持っているウェブデザインの要件を持っている:"float:left"と "float:right" divの両方に "text-overflow:省略記号"を付けるには?

+-------------------------------------------------------------+ 
| +---------------------+ +-------++------------------------+| 
| | float left DIV A | | DIV C || float right DIV B  || 
| +---------------------+ +-------++------------------------+| 
+-------------------------------------------------------------+ 

ヘッダは、3つの部分があります事業部A、B、C DIV AはDIV B及びCであるのに対し、左側にフロートであるが右から浮かべる。 DIV AとDIV Bに長いテキストが含まれている可能性があります。したがって、オーバーフローしたテキストは省略記号として切り捨てられます。 DIV Cには短いテキストが含まれていますが、その内容は切り詰められません。

私は以下のようなHTMLを作ってみました:

<html> 
    <head> 
     <style> 
      .header 
      { 
       width: 100%; 
       border: 2px red; 
       overflow: hidden; 
      } 
      .DivA 
      { 
       float: left; 
      } 
      .DivC 
      { 
       float: right; 
       white-space:nowrap; 
      } 
      .DivB 
      { 
       float: right; 
      } 
      .clear 
      { 
       clear: both; 
      } 
      .DivA, .DivB 
      { 
       width: 40%; 
       overflow: hidden; 
       text-overflow: ellipsis; 
       white-space: nowrap; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="header"> 
      <div class="DivA"> 
       Hello world 1 Hello world 2 Hello world 3 
       Hello world 1 Hello world 2 Hello world 3 
       Hello world 1 Hello world 2 Hello world 3 
      </div> 
      <div class="DivB"> 
       Good bye Good bye 
       Good bye Good bye 
       Good bye Good bye 
      </div> 
      <div class="DivC"> 
       No Ellipsis 
      </div> 
      <div class="clear"> 
      </div> 
     </div> 
    </body> 
</html> 

テキストオーバーフロー:DIV AおよびDIV Bは、幅が(私の場合、私は45%であることをそれらを設定)している場合、省略記号のみ動作します。

しかし、DIV Cには1つの問題があります.DIV Cの幅は、ローカリゼーションごとに異なる可能性があるため、その幅を明示的に設定することはできません。ブラウザウィンドウを絞り込むと、div Cを次の行に折り返すことができます。これは悪く見えます。

DIV AとDIV Bをそれぞれオーバーフロー省略記号で左と右に浮動させる方法はありますか?それと同時に、DIV Cは最適な幅に適応できますか?あなたがここで行うに必要なもの

答えて

2

は、例えば下記取るのdiv#aとのdiv#B

の幅と一致する#cをDIVするためのマージンを適用することです。

<style> 
.DivA {width:250px; float:left;} 
.DivB {width:150px; float:right;} 
.DivC {margin-left:260px; margin-right:160px;} 
</style> 

<div class="DivA" /> 
<div class="DivB" /> 
<div class="DivC" /> 

あなたは私が各幅に余分10pxのを追加していることに気づいただろう、これはちょうどより多くの要素の間に間隔を可能にすることで、もちろんあなたも理想的にも、これらをクリアする必要があります。

これにより、空き領域を占める固定要素と固定要素の2つの固定列が得られます。

+0

を参照してくださいBの1と重複するようになりますwhite-space: nowrap;を追加することができ、「センターは」次へ押し下げられ、ブラウザウィンドウが狭い場合は、 –

+0

実際、これは非常に真実です。そのため、コンテナーや.DivCに最小幅を使用することをお勧めします。 いつでも浮動小数点数を使用すると、ある時点で固定幅を使用しない限り、常にレイアウトを破るポイントにブラウザのサイズを変更することができます。 – Phunky

0

これは非常に古いものです(09 ')が、私のように検索から来た人にはお答えします。

AとBはそれぞれ40%なので、ヘッダーは100%であるため、最大Cは20%です。したがって、max-width:20%;を追加すると、Cは次の行に壊れません。しかし、ブラウザウィンドウが狭くなると、必要に応じてテキストが折り返されます。この動作をしない場合は

、あなたがCのテキストが

このようにhttp://jsfiddle.net/fxLVQ/

関連する問題