2016-09-06 11 views
3

を必要なときに、私は私が1行に希望の三つのフィールド持つテキスト・オーバーフローを強制:防止フロートと

<div><span class="name">Blue Widgets Over Miami</span><span class="size"> large </span><span class="price">$9.99</span></div> 

を私は.nameのが好きで、その行の左側にあることを.sizeたいです右に.price、各フィールドの間には常にスペースが必要です。

ここでも難しい部分です。画面が本当に狭い場合は、divをラップまたはオーバーフローさせたくありません。代わりに、.nameを省略記号としてテキストオーバーフローさせたいと思います。画面が狭い場合

div{background:#abcdef;white-space:nowrap} 
.name{text-overflow:ellipsis} 
.size{} 
.price{float:right} 

は今、その後.priceは(私はしたくない)二行目に低下し、画面がdivの.nameのと.sizeオーバーフローその後、でも狭い場合(これはIまた望ましくない)、.nameは省略記号で切り捨てられません。

私は間違っていますか?

答えて

1

使用フレキシボックス:

div { 
 
    background: #abcdef; 
 
    display: flex; 
 
} 
 
.name { 
 
    text-overflow: ellipsis; 
 
    overflow: hidden; 
 
    white-space: nowrap; 
 
} 
 
.size { 
 
    margin: 0 .5em; 
 
} 
 
.price { 
 
    margin-left: auto; 
 
}
<div> 
 
    <span class="name">Blue Widgets Over Miami</span> 
 
    <span class="size">large</span> 
 
    <span class="price">$9.99</span> 
 
</div> 
 
<br /> 
 
<div> 
 
    <span class="name">Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami Blue Widgets Over Miami</span> 
 
    <span class="size">large</span> 
 
    <span class="price">$9.99</span> 
 
</div>

+0

ありがとう、これは素晴らしいです!私はマージンを持つ.sizeのファンではなかったので、私はラインを変更して終わりました:

Blue Widgets Over Miami large $9.99
。スペースのエンティティ名を使用することで解決される、私の意図したスペースを切り捨てるフレックスの奇妙さに加えて、これは素晴らしい作品です! – GFL

+1

@GFL「 」はあまり意味がありません。マージンが必要ない場合は、 '.size :: before、.size :: after {content: '';ホワイトスペース:プレ; } ' – Oriol

+0

フォントが同じサイズでない場合、フレックスボックスが原因でテキストアラインメントの問題が発生しています。 .nameと.priceより大きい.nameを持つ場合、すべてのテキストが同じベースラインを共有することは可能ですか? – GFL

3

私は左のテキストがない以上となるように、親のdivにpadding-rightを添加し、山車を取り除き、右の絶対位置にそれを変更し、これはあなたがhttps://jsfiddle.net/kvb5hb6f/14/

のために行くしているものだと思います右の価格をラップしてから、text-overflow: ellipsis;を親部門に追加してください。

div { 
    background: #abcdef; 
    white-space: nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis; 
    padding-right: 50px; 
} 

.price { 
    position: absolute; 
    right: 0; 
} 
+0

はありがとう、それは常に.size見えており、唯一の省略記号として.nameのオーバーフローを持つことが可能でしょうか?動的なのでコンテナの幅を指定せずにこれを行うことも可能ですか? – GFL