以下のheader
のようなグリッドレイアウトがあります。幅が1fr
のdivにテキストがあります。 div内のテキストが長すぎる場合は切り捨ててほしい。 ellpsis
としてtext-overflow
を追加しても機能しません。それを行う方法はありますか?
グリッドでなければならず、それを変更する方法はありません。
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
body {
display: flex;
}
.container {
display: flex;
flex-direction: column;
flex: 1;
}
content {
flex: 1;
background-color: red;
}
header {
background-color: limegreen;
display: grid;
grid-template-columns: 0fr 1fr 0fr;
}
header div {
border: 1px solid orange;
}
.long {
text-overflow: Ellipsis;
}
<div class="container">
<header>
<div>Left</div>
<div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Right</div>
</header>
<content>
</content>
</div>
.long cssを以下に変更
.long {
text-overflow: Ellipsis;
white-space: nowrap;
overflow: hidden;
}
ホワイトスペースとオーバーフローを追加する必要がある理由は以下のとおりです。
white-space: nowrap
を使用すると、テキストの長さがブロック幅を超えたときに折り返さないようにブラウザに指示する必要があります。white-space
プロパティのデフォルト値は通常であり、折り返すことができるため、テキストがオーバーフローする状況はありません。overflow
のデフォルト値は表示されます。テキストが包含ブロックを超えると表示されるだけなので、overflow
をhidden
に設定した場合にのみ、表示するテキストをオーバーフローする必要はありません。次に、テキストを完全に表示できない場合は、text-overflow
プロパティを使用します。追加 overflow: hidden
およびwhite-space: nowrap
を使用したときtext-overflow
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
body {
display: flex;
}
.container {
display: flex;
flex-direction: column;
flex: 1;
}
content {
flex: 1;
background-color: red;
}
header {
background-color: limegreen;
display: grid;
grid-template-columns: 0fr 1fr 0fr;
}
header div {
border: 1px solid orange;
}
.long {
text-overflow: Ellipsis;
white-space: nowrap;
overflow: hidden;
}
<div class="container">
<header>
<div>Left</div>
<div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Right</div>
</header>
<content>
</content>
</div>
1)
text-overflow: Ellipsis;
を使用する場合は、overflow: hidden;
も使用する必要があります。2)
white-space: nowrap;
新しい行でのテキストの区切りを許可しません。
だから、このように変更:
.long {
text-overflow: Ellipsis;
overflow: hidden;/*/<------------new/*/
white-space: nowrap;/*/<---------new/*/
}
高さを定義し、white-space
からnowrap
およびoverflow: hidden
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
body {
display: flex;
}
.container {
display: flex;
flex-direction: column;
flex: 1;
}
content {
flex: 1;
background-color: red;
}
header {
background-color: limegreen;
display: grid;
grid-template-columns: 0fr 1fr 0fr;
}
header div {
border: 1px solid orange;
}
.long {
height: 20px;
white-space: nowrap;
overflow: hidden;
text-overflow: Ellipsis;
}
<div class="container">
<header>
<div>Left</div>
<div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Right</div>
</header>
<content>
</content>
</div>