我需要创建一个设计,其中最终用户将看到一行文本,其中包含两个组件。 text-align:left div 可以有任意长度的文本。 text-align:right div 通常会有大约9或10个字符的长度,但它可能会高达20多个字符。
以下是最终用户需要看到的方式:
- text-align:left 文本应使用省略号来隐藏在单行文本中不适合屏幕的任何文本。 - text-align:right 文本应始终位于同一行的屏幕上。 - text-align:left div 的宽度应等于浏览器窗口的宽度减去 text-align:right 文本的 div 的宽度。 - text-align:right div 的宽度应等于其中的文本加上其水平 padding。 - 文本需要在行的中间垂直居中。
我可以考虑在这里使用JQuery,并根据
以前我尝试使用
那么有没有一种纯CSS的方法来解决这个问题呢?
以下是最终用户需要看到的方式:
- text-align:left 文本应使用省略号来隐藏在单行文本中不适合屏幕的任何文本。 - text-align:right 文本应始终位于同一行的屏幕上。 - text-align:left div 的宽度应等于浏览器窗口的宽度减去 text-align:right 文本的 div 的宽度。 - text-align:right div 的宽度应等于其中的文本加上其水平 padding。 - 文本需要在行的中间垂直居中。
我差点在fiddle中实现了这个,但是我需要为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,并根据
text-align:right
的div
的宽度设置两个div
的width
,但如果可能的话,我真的更喜欢用CSS解决这个问题。以前我尝试使用
display:table
和display:table-cell
来实现这一点,但我遇到了使用table-cell
的各种问题。使用table-layout:fixed
不能正确显示ellipsis
,display:block
和设置max-width
也不能。如果可以的话,我很乐意使用table-cell
。那么有没有一种纯CSS的方法来解决这个问题呢?