在弹性框中获取文本溢出功能

时间:2016-08-26 23:37:37

标签: html css flexbox

我有以下“顶栏”,其中包含用户数据的一部分。它也将包含他的名字。代码如下:

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样式,但没有一个能解决问题。我不想设置heightwidth因为我仍然希望span是动态的。

也许我使用文本溢出错误,但我认为我按照MDN specs使用。我也为这个问题做了fiddle

谢谢。

1 个答案:

答案 0 :(得分:1)

DEMO

.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 */
}