我有以下“顶栏”,其中包含用户数据的一部分。它也将包含他的名字。代码如下:
html, body, ul, li, a, input { box-sizing: border-box; outline: 0px solid transparent; }
.title-bar {
border-bottom: 1px solid white;
height: 128px;
width: 100%;
background-color: #999;
float: left;
}
.user-info {
width: 128px;
height: 100%;
align-items: center;
border-left: 1px solid white;
background-color: inherit;
display: flex;
justify-content: space-between;
flex-flow: column nowrap;
float: right;
text-align: center;
}
.user-info span {
overflow: hidden;
text-overflow: '.';
}
.user-info .circle {
border: 2px solid #369;
border-radius: 50%;
display: inline-block;
flex: 0 0 auto;
height: 32px;
margin: 8px 8px;
overflow: hidden;
transition: border 0.15s ease-out;
width: 32px;
}
.user-info .circle:hover { border-width: 4px; }
.user-info .container {
border-top: 1px solid white;
display: flex;
justify-content: center;
margin-top: 6px;width: 100%;
}
<div class="title-bar">
<div class="user-info">
<a href="#" class="circle"></a>
<span>Johnny B. Testname</span>
<div class="container">
<a href="#" class="circle"></a>
<a href="#" id="log-off" class="circle first" title="Log Off">
</a>
</div>
</div>
</div>
正如你所看到的,“Johnny B. Testname”在底部切断了。这是因为我在跨度上设置了overflow: hidden;
(否则会推动其他我不想要的弹性项目。)
我一直在寻找“动态改变字体大小”的解决方案,但我认为这看起来并不好(而且我找不到任何可行的方法)。我找到了text-overflow;
,你可以看到,我把它设置为`text-overflow:'。';
唯一的问题是:它没有达到需要文本溢出的程度。我已经尝试设置flex-shrink: 1;
(这不是默认值),display: inline;
(我绝望了)和其他CSS样式,但没有一个能解决问题。我不想设置height
或width
因为我仍然希望span
是动态的。
也许我使用文本溢出错误,但我认为我按照MDN specs使用。我也为这个问题做了fiddle。
谢谢。
答案 0 :(得分:1)
.user-info span {
overflow: hidden;
text-overflow: ellipsis; /* for getting the end dots */
display: inline-block; /* for making span a block (inline-block) so that it accepts max-width */
max-width: 90%; /* specify the width */
white-space: nowrap; /* for keeping text in single line */
}