我需要创建一个设计,最终用户将在其中看到包含两个组件的单行文本。text-align:left
div
可以有任意长度的文本。通常text-align:right
div
大约有 9 或 10 个字符长,但可以想象它可能高达 20 多个字符。
以下是它需要向最终用户显示的方式:
text-align:left
文本应该用于隐藏任何不适合屏幕的ellipsis
文本在单行文本中。text-align-right
文本应始终在同一行中显示在屏幕上。- 的宽度
text-align:left
div
应该等于浏览器窗口的宽度减去text-align:right
文本的宽度div
。 - 的宽度
text-align:right
div
应该等于其中文本的宽度加上它的水平padding
。 - 文本需要垂直居中在行的中间。
我几乎把它搞定了,但我需要为text-align:right
div
. 这是HTML:
<body>
<div id="wrap">
<div id="left">Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left Left</div>
<div id="right">Right</div>
</div>
</body>
这是CSS:
* {border:0; margin:0; padding:0;}
html, body {background-color:gray; height:100%; width:100%}
#left, #right {padding:5px;}
#left {
background-color:red;
float:left;
text-align:left;
width:calc(100% - 120px); /* deducted amount = width of #right + total horizontal padding*/
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
#right {
background-color:orange;
float:right;
text-align:right;
white-space: nowrap;
width:100px;
}
可以想象,我可以在这里跳转到 JQuery 并让它根据s的宽度设置width
两个 s 的s ,但如果可能的话,我真的更喜欢用 CSS 来解决这个问题。div
text-align:right
div
以前我尝试使用display:table
anddisplay:table-cell
来实现这一点,但我遇到了使用ellipsis
with的各种问题table-cell
。使用table-layout:fixed
没有正确显示ellipsis
,也没有display:block
,也没有设置 amax-width
。如果可以的话,我很乐意使用table-cell
。
那么有没有办法使用纯 CSS 来做到这一点?