更新的想法
这是我在下面的原始想法的改进版本,但尝试使用额外的 wrap 创建您在聊天中提到的固定宽度的容器和一般外观div
。我认为这可以完全由 css 工作的唯一方法是让您事先知道您的“徽章”区域的最大宽度可能是多少,然后将您max-width
的文本区域设置为容器的宽度减去该潜力徽章区域的最大宽度。这是下面的修改代码和小提琴示例,我假设一个200px
容器,最多100px
徽章区域宽度。您最终会“过早地”截断一些文本(如,它似乎可以变得更宽,但我们将其限制在一定的空间内;参见小提琴中的第三行)。
HTML
<h3 class="container">
<div>
<span>[elem]</span>
<a>dynamic text</a>
</div>
</h3>
CSS
.container {
width: 200px; /* this defines your right edge */
background-color: cyan;
overflow: hidden;
}
.container > div {
float: left;
clear: left;
position: relative;
padding-right: .1em;
white-space: nowrap;
}
.container span {
position: absolute;
left: 100%;
white-space: nowrap;
}
.container a {
display: block;
/* the following assumes the span "badge" area is 100px max,
so it is 200px - 100px = 100px in width */
max-width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
创见
也许这会奏效。
.container {
float: left; /* this collapses the container around the 'a' tag */
position: relative; /* this is going to position the 'span' */
padding-right: .1em; /* gap to element 'span' */
white-space: nowrap;
}
.container span {
position: absolute;
left: 100%; /* push behind 'a' tag */
white-space: nowrap; /* keep this from wrapping */
}
.container a {
display: block;
max-width: 100px; /* set your max width for the 'a' tag only */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
看一个小提琴的例子。