2017-08-24 15 views
3

見出しとテキストをそれぞれ囲む複数のdivがあります。いくつかの見出しは手動で<br />と隣接する段落のテキストを設定します。私は、テキストの幅を見出しの最も広い部分と同じにします。テキストの見出しの幅を一致させる幅

純粋にCSSでこれを行うにはどうすればよいですか?

enter image description here

.flex-text { 
 
     align-items: center; 
 
     display: flex; 
 
     justify-content: start; 
 
     color: #007990; 
 
     flex-direction: column; 
 
    } 
 
    
 
    .flex-text p { 
 
     color: #545641; 
 
     text-align: justify; 
 
    }
<div class='flex-text'> 
 
     <h3>Supercool heading <br />done nicely</h3> 
 
     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
    </div>

+0

は 'div'でそれを入れて、' 'その後、MAX-width'をdiv'置くことを与えますテキストがそこにあります。 – Sand

+0

最も簡単なのは、おそらく両方が同じコンテナ( 'div'または何でも好きなもの)に座って、そのコンテナに固定幅を与えることでしょう。あなたが探している動的ソリューションではありません。しかし、あなたがしようとしていることがCSSだけで可能かどうかはわかりません。 – domsson

+0

私は少し質問を変更し、スタックスニペットを作成しようとします。 – Hedge

答えて

3

あなたは、この使用してCSSのテーブルを行うことができ、あなただけの1%や小さな何かに親要素と設定幅にdisplay: tableを設定し、見出しをwhite-space: nowrapを使用する必要があります。

このように見出しは、brタグを使用した行とブレークラインにとどまり、テキストはこの場合最も広い要素または見出しと同じ幅になります。この最大幅は、あなたは、単にタイトルとコンテンツの両方を囲むラッパーでこれを行うと、そのラッパーにmax-width

を与えることができ、コメントになり示唆された

div { 
 
    text-align: center; 
 
    border: 1px solid black; 
 
    display: table; 
 
    margin: 0 auto; 
 
    width: 1%; 
 
} 
 
h1 { 
 
    white-space: nowrap; 
 
}
<div> 
 
    <h1>Lorem ipsum dolor sit amet <br> consectetur.</h1> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci fugit minus, ad dicta ullam odio temporibus optio voluptatibus nisi, voluptatum molestias at. Molestiae maiores molestias ducimus praesentium vero, iusto laboriosam.</p> 
 
</div>

+0

ニース!私は 'display:table'に触れていないので、これが可能であるかどうかは分かりませんでした。同様のアプローチは、 ''インラインブロック ''やフレックスでも可能でしょうか? – domsson

+1

これは実際に素晴らしい動作します。ブラウザのサポートも約97%です! – Hedge

0

あなたのヘッダーが何であっても等しい。ヘッダは手動で既に設定されているので、これはあなたのケースではうまくいくはずです。

.flex-text { 
 
     align-items: center; 
 
     display: flex; 
 
     justify-content: start; 
 
     color: #007990; 
 
     flex-direction: column; 
 
    } 
 

 
    .item { 
 
     max-width: 153px; 
 
    } 
 
    
 
    .flex-text p { 
 
     color: #545641; 
 
     text-align: justify; 
 
    }
<div class='flex-text'> 
 
     <h3 class="item">Supercool heading <br />done nicely</h3> 
 
     <p class="item">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
    </div>

+0

このアプローチでは、 '
'を使用した手動の改行は考慮されません。元の投稿にStackスニペットを追加しました。 – Hedge

+0

実際には、それがうまくいかない理由は、幅を制御しているブレークを手動で制御しているため、設定できるからです。私はあなたのもので私の答えを更新します。 – Johannes

0

使用このコード

.flex-text{ 
 
    max-width:270px; 
 
    margin:0 auto; 
 
} 
 
.flex-text h3{ 
 
    text-align:center; 
 
    color: #545641; 
 
    font-size:32px; 
 
    line-height:100%; 
 
} 
 
.flex-text p{ 
 
    text-align:justify; 
 
}
<div class='flex-text'> 
 
    <h3>Supercool heading done nicely</h3> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
</div>

+1

このアプローチは、 'max-width'が高い値(例えば600px)に設定されてもはや機能しません。テキストが広すぎるだけです。 – Hedge

関連する問題