【问题标题】:white-space: nowrap; and flexbox did not work in chrome空白:nowrap;并且 flexbox 在 chrome 中不起作用
【发布时间】:2016-04-28 08:06:36
【问题描述】:

Chrome 的最新更新在 overflow: hidden 元素上使用 text-overflow: ellipsis; 打破了 white-space: nowrap。如何在不为name 类添加硬编码宽度的情况下解决此问题..

<h1>problem</h1>
<div class="container">
  <div class="name">
    <div class="firstname">
      test
    </div>
    <div class="lastname">
      as kjldashdk ja asdjhk ashdjk ashdjk asdjasdkajsdh akjsd asd asd asd asd asd asd as das da asdas dasd asda sdasd as dasd asd asd as dasd a
    </div>
  </div>  
  <div class="side">
    options
  </div>
</div>

结构不应该改变,因为我在我的应用程序的其他地方重用了.name 部分。

.container {
  width: 800px;
  height: 80px;
  display: flex;
  border: solid 1px black;
  margin: 10px;
}
.name {
  display: flex;
}
.firstname {
  width: 100px;
  background-color: grey;
}
.lastname {
  flex-grow: 1;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
.side {
  flex-grow: 0;
}
.side, .firstname, .lastname {
  align-self: center;
  padding: 0 20px;
}

http://codepen.io/anon/pen/xZpMYg

【问题讨论】:

  • 我相信要让text-overflow: ellipsis 工作,您还必须指定width(或flex-basis)。这就是您的 .lastname 课程中缺少的内容。

标签: css overflow flexbox ellipsis nowrap


【解决方案1】:

参考 - https://drafts.csswg.org/css-flexbox-1/#min-size-auto

弹性项目的初始设置是min-width: auto。所以,为了 每个物品要留在容器内,我们需要给min-width: 0

添加min-width: 0;。这是您的情况的简单解决方法。

那是

name {
  display: flex;
  min-width: 0;
}

片段

.container {
  width: 800px;
  height: 80px;
  display: flex;
  border: solid 1px black;
  margin: 10px;
}
.name {
  display: flex;
  min-width: 0;
}
.firstname {
  width: 100px;
  background-color: grey;
}
.lastname {
  flex-grow: 1;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  display: flex;
}
.side {
  flex-grow: 0;
}
.side, .firstname, .lastname {
  align-self: center;
  padding: 0 20px;
}
<h1>problem</h1>
<div class="container">
  <div class="name">
    <div class="firstname">
      test
    </div>
    <div class="lastname">
      as kjldashdk ja asdjhk ashdjk ashdjk asdjasdkajsdh akjsd asd asd asd asd asd asd as das da asdas dasd asda sdasd as dasd asd asd as dasd a
    </div>
  </div>  
  <div class="side">
    options
  </div>
</div>

<h1>expected result</h1>

<div class="container">
  <div class="name">
    <div class="firstname">
      test
    </div>
    <div class="lastname">
      as kjldashdk ja asdjhk ashdjk ashdjk asdjasdkajsdh akjsd asd asd asd asd sa dad...
    </div>
  </div>  
  <div class="side">
    options
  </div>
</div>

【讨论】:

【解决方案2】:

text-overflow: ellipsiswidth 属性一起使用

.lastname { 
  width: 525px;
  flex-grow: 1;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

【讨论】:

    【解决方案3】:

    text-overflow: ellipsis 的其他变体 当内容width 必须是动态的时

    html, body{
      width: 100%;
      padding: 0;
      margin: 0;
      }
      
    body{
      padding-top: 10px
      }
      
    
    .container{
      display: flex;
      justify-content: space-between;
      align-items: stretch;
      box-sizing: boder-box;
      width: 100%;
      padding-bottom: 10px;
      margin-bottom: 10px;
      border-bottom: 1px solid #ddd
      }
      
    .title{
      display: flex;
      flex: 0 0 auto;
      justify-content: center;
      align-items: center;
      padding: 10px;
      background-color: #ddd
      }
      
    .content{
      display: flex;
      flex-grow: 1;
      align-items: center;
      padding: 0 10px;
      overflow: hidden
      }
      
    .wrapper{
      width: 100%;
      overflow: hidden;
      text-overflow: ellipsis
      }
    
    .area{
      display: flex;
      flex: 0 0 auto;
      flex-grow: 0;
      padding: 0 10px;
      align-items: center;
      background-color: #ddd
      }
    <div class="container">
      <div class="title">
          Title
      </div> 
      <div class="content">
        <div class="wrapper">
          Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
        </div>
      </div>
      <div class="area">
        Options
      </div>
    </div>
    
    <div class="container">
      <div class="title">
          Title
      </div> 
      <div class="content">
        <div class="wrapper"> Lorem_Ipsum_isssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
        </div>
      </div>
      <div class="area">
        Options
      </div>
    </div>
    
    <div class="container">
      <div class="title">
          Title 1 | Title 2
      </div> 
      <div class="content">
        <div class="wrapper">
          Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
        </div>
      </div>
      <div class="area">
        Options 1 | Options 2
      </div>
    </div>
    
    <div class="container">
      <div class="title">
          Title 1 | Title 2
      </div> 
      <div class="content">
        <div class="wrapper"> Lorem_Ipsum_isssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
        </div>
      </div>
      <div class="area">
        Options 1 | Options 2
      </div>
    </div>

    示例:https://codepen.io/Norfild/pen/KozJzg

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 2016-11-08
      • 2015-09-08
      • 2023-03-21
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多