2012-03-25 4 views
4

私は小さな段落のテキストを含む一連のdivを持っています。私は同じ高さのすべてのdivを作って段落に合うように幅を変えたいと思います。利用可能な最大の高さを使用するように段落を設定する

これを垂直方向に行う場合は、divの幅を設定するだけです。しかし、高さを設定すると段落は1行になり、できるだけ幅の広いボックスになります。高さは、私は段落が、残された高さは、ホワイトスペースとで満たされているためmin-height:100pxを使用してみましたが

を必要に応じて、次に幅に増加できるようになりますように私はできるだけ多くのラインを持っている段落を強制する方法

テキストは1行に残ります。

ここでは、私がやろうとしていることの一例を示します。あなたが見ることができるように、テキストは1行にとどまっています。箱を広くする前にボックスを垂直にファイルにしたいと思います。

jsfiddleリンク:ここhttp://jsfiddle.net/Kj49B/

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="style.css" /> 
</head> 
<body> 
<ul class="container"> 
    <li class="item"> 
     <a href="" class="title" target="_blank">Title 1</a> 
     <br/> 
     <p>A summit aimed at reducing the risk of nuclear terrorism and involving some 50 countries is about to open in South Korea's capital, Seoul</p> 
    </li> 
    <li class="item"> 
     <a href="" class="title" target="_blank">A long title</a> 
     <br/> 
     <p>Watch the latest news summary from BBC World News. International news updated 24 hours a day</p> 
    </li> 
    <li class="item"> 
     <a href="" class="title" target="_blank">A much much longer title</a> 
     <br/> 
     <p><img src="http://www.montrealgazette.com/6355281.bin" align="left"/>Freshly crowned NDP leader Thomas Mulcair has vowed to make Prime Minister Stephen Harper's Tories his main adversary and he moved quickly to assure his own party that there won't be a housecleaning of staff</p> 
    </li> 
    <li class="item"> 
     <a href="" class="title" target="_blank">A long title that goes on and on until it is very very long</a> 
     <br/> 
     <p>Pope Benedict XVI condemns drug-trafficking and corruption at a huge open-air Mass in central Mexico as part of his first visit to the country</p> 
    </li>  
</ul> 
</body> 
</html> 

はそれで行くCSSです:

body 
{ 
    font-family:sans-serif; 
} 

.container 
{ 
    width:95%; 
    margin-left:auto; 
    margin-right:auto; 
    align:center; 
} 

.item 
{ 
    margin-left:auto; 
    margin-right:auto; 
    display:inline-block; 
    color:#000033; 
    font-size:14px; 
    height:180px; 
    line-style:none; 
    float:left; 
    margin:20px; 
    padding:20px; 
    vertical-align:middle; 
    border:1px solid #000033; 
    border-radius: 50px; /*w3c border radius*/ 

    -webkit-border-radius: 50px; /* webkit border radius */ 
    -moz-border-radius: 50px; /* mozilla border radius */ 
} 

.title 
{ 
    color:#000033; 
    text-decoration:none; 
    font-size:22px; 
    margin:0px; 
    padding:0px 
    line-height:1; 
} 

img 
{ 
    height:90px; 
    margin: 5px; 
} 

p 
{ 
    display:block; 
    margin:5px; 
    width:minimum; 
    padding:0px; 
    min-height:80px; 
    line-height:1.2; 
    word-wrap:true; 
} 
+2

あなたはおそらくあなたが強制したい場合は、最大高さの代わりに、最小の高さを使用したいと思うが要素がある値より高くならないようにします。 –

+0

何を試しましたか?コードを投稿するか、フィドルを作成してください(http:// jsfiddle。net) – HerrSerker

+0

これは、テーブルよりも難しいです。たとえば、http://www.positioniseverything.net/articles/onetruelayout/equalheightを参照してください。 – leonbloy

答えて

-1

あなたはこれを持っている必要があります。

div {max-height:100px;} 
p {height:100%;} 

は、未指定の幅を残します。もちろん、必要に応じてdivやpをidsやクラスに簡単に置き換えることもできます。

私はこの回答を投稿した後にあなたのコードサンプルを見たので、私の答えは有効ではない可能性があります。何か助けになるかもしれないので、私はこれをここに残しておきます。

+0

これは、段落が1行に広がるのを止めるものではありません。私はそれがボックスの完全な高さを占めるようにテキストを折り返したい。 –

2

CSSを使用することはできません。これをネイティブにサポートするCSS3でも私が今までに出会ったことはありません。あなたは何を求めているのですかwidth:autoheight:autoのように振る舞いますが、自動高さはラインボックスのコンセプトに基づいており、(テキストはグリッドではないので)「カラムボックス」のようなものはありません。

高さの固定されたセルを持つテーブルが最も近いですが、上記のコメントでは、他の理由であなたに合わないと言います。それでも、その動作は特に一貫性があり、制御が容易ではないことがわかります。

これは、javascriptを使用して特定の高さを超えるボックスを検出し、それ以外のボックスを徐々に広げていくことで可能です。 javascriptがオプションでない場合、私はあなたがオプションから外れていると信じています。

+0

ご協力いただきありがとうございます。私はそれがおそらく私がやっていたポイントだと思った。私はjavascriptのアプローチを行ってみましょう。 –

+0

個人的に私は別のデザインに行くだろう。ブラウザが各サイズ変更後にページを再計算する必要があるので、javascriptの手法はコストがかかることになります。また、複数のボックスがあるので、ブラウザが変更の間に再描画しようとすると、ロード時間が長くなり、CPU使用率が高くなり、フリックが発生する可能性があります。あなたがそれについて考えているなら、おそらくそれがなぜネイティブサポートがないのかを説明する助けになるでしょう。あなたが主張するならば、最小幅から始めて、あなたの増分を大きくしてみてください(20pxなど)。 – SpliFF

+0

私はもう一回見ました。ブラウザはブラウザのサイズが変更されたときに新しい行にジャンプするだけで、再調整する必要はありません。最後に、段落内の文字数に基づいて幅を調整し、サーバー側で必要に応じてクラスを追加しました。 –

1

こんにちは、幅&高さ自動あなたのCSSにあなたの要件に応じて正常に動作します与える必要があります。

あなたの更新CSS参照してください。 -

body 
{ 
    font-family:sans-serif; 
} 

.container 
{ 
    width:auto; 
    margin-left:auto; 
    margin-right:auto; 
    align:center; 
} 

.item 
{ 
    margin-left:auto; 
    margin-right:auto; 
    display:inline-block; 
    color:#000033; 
    font-size:14px; 
    line-style:none; 
    float:left; 
    margin:20px; 
    padding:20px; 
    height:auto; 
    vertical-align:middle; 
    border:1px solid #000033; 
    border-radius: 50px; /*w3c border radius*/ 
    -webkit-border-radius: 50px; /* webkit border radius */ 
    -moz-border-radius: 50px; /* mozilla border radius */ 
} 

.title 
{ 
    color:#000033; 
    text-decoration:none; 
    font-size:22px; 
    margin:0px; 
    padding:0px 
    line-height:1; 
} 

img 
{ 
    height:90px; 
    margin: 5px; 
} 

p 
{ 
    display:block; 
    margin:5px; 
    width:minimum; 
    padding:0px; 
    line-height:1.2; 
    word-wrap:true; 
    height:auto; 
} 

ORフィドルを参照してください: -http://jsfiddle.net/Kj49B/7/

関連する問題