2017-11-23 6 views
3

私はこの単純な使用例を持っています:項目のタイトルと説明。タイトルは説明の上に表示され、タイトルは「列」全体の幅、「説明」行の幅を決定します。列の幅を特定のグリッド項目の幅に制限します

CSSグリッドで可能ですか?その場合はどうすればよいですか?

これは、所望の出力です:

demo of desired output

そして、それはコードですが、基本的には:

.grid-container { 
 
    display: grid; 
 
    grid-template-columns: 1fr; 
 
}
<div class="grid-container"> 
 
    <div class="A"> 
 
    DIV A contains the TITLE 
 
    </div> 
 
    <div class="B"> 
 
    DIV B has much more text but I want its text to wrap to the width of div.A (no cut of words, just wrapping) 
 
    </div> 
 
</div>

答えて

3

代わりの1frに列幅を設定し、min-contentを使用しています。

min-contentの場合、列はとなり、改行(テキスト折り返し)の機会はすべてになります。

基本的には、列が最も長い単語の幅に達するまですべてのテキストをラップします。

.grid-container { 
 
    display: grid; 
 
    grid-template-columns: min-content; /* formerly 1fr */ 
 
}
<div class="grid-container"> 
 
    <div class="A"> 
 
    DIV A contains the TITLE 
 
    </div> 
 
    <div class="B"> 
 
    DIV B has much more text but I want its text to wrap to the width of div.A (no cut of words, just wrapping) 
 
    </div> 
 
</div>
その後

、タイトルボックスに改行を抑制:

.grid-container { 
 
    display: grid; 
 
    grid-template-columns: min-content; 
 
} 
 

 
.A { 
 
    white-space: nowrap; 
 
    background-color: lightgreen; /* just for illustration */ 
 
}
<div class="grid-container"> 
 
    <div class="A"> 
 
    DIV A contains the TITLE 
 
    </div> 
 
    <div class="B"> 
 
    DIV B has much more text but I want its text to wrap to the width of div.A (no cut of words, just wrapping) 
 
    </div> 
 
</div>

参考文献:

+1

スーパー!それは美しく働いた!私はCSS Gridの初心者で、普通の古いCSSの専門家はほとんどいません。他の人のコメント:Angular 5 + Material 2ではこれをやっています。これは現在、空白を与えています:デフォルトではすべてのmat-nav-listに適用されます。その場合、手動で2番目の段落の空白を通常に戻すまで、上記は機能しません。 私はまだ欠けているもの - 「タイトル」グリッド項目(最初のもの)でテキストが長すぎる場合、「省略記号」を表示しません。グリッドコンテナのコンテナがグリッド全体のスペースを制限している場合、これを達成できますか?再度、感謝します! –

+1

ようこそ。省略記号の問題を試してみましょう: –

+1

実際、私のユースケースはより複雑なので、これは省略記号ですが、私はここから取り出せると思います。迅速な支援に感謝します! –

1

私は(グリッドでこれが可能であるとは思いませんか明示的に幅を設定せずに他のCSS表示タイプ)。

https://css-tricks.com/snippets/css/complete-guide-grid/

私はあなたがCSSのソリューションを求めて知っているが、念のためにあなたがここでそれを見つけることができませんjQueryのソリューションです:CSS-トリックは、あなたがそれに興味がある場合は、グリッド上の包括的なガイドがあります。

$(document).ready(function() { 
 
\t $('.B').outerWidth($('.A').outerWidth()).show(); 
 
});
.A{ 
 
    display: table; 
 
} 
 
.B{ 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="grid-container"> 
 
    <div class="A"> 
 
    DIV A contains the TITLE 
 
    </div> 
 
    <div class="B"> 
 
    DIV B has much more text but I want its text to wrap to the width of div.A (no cut of words, just wrapping)  
 
    </div> 
 
</div>

関連する問題