Bootstrap

flex模式文字溢出问题

方案1:问题:使用flex布局,左边自适应,右边固定 

左边的文字太长了,需求是显示一行,超长显示… 

一般做法:

text-overflow: ellipsis; 
overflow: hidden; 
white-space: nowrap; 
但是这个做法的前提是固定宽度,比如width:200px

现在左边是自适应,使用的方法是父元素加上:max-width: calc(100% - 120px);

然后给它本身增加一个width:100% 

方案2:

<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

<div class="main">
    <div class="content">
        <h4 class="name">a namea namea namea namea</h4>
    </div>
    <div class="content">
         <h4 class="name">b namea namea namea namea </h4>
    </div>
    <div class="content">
         <h4 class="name">c namea</h4>
    </div>
</div>

<style type="text/css">
.main {
    display: flex;
}
.content {
    overflow: hidden;  /*也可以用 width:0 代替*/
    flex: 1;   /*关于flex的属性值请看官网,这里相当于 flex-grow */
    border:1px solid red;
}
.name {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
</style>

以上的盒子都是固定的长度,如果你想设置不同的长度,就分开改各自的flex属性即可。

<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">

<div class="main">
    <div class="long">
        <h4 class="name">a namea namea namea namea</h4>
    </div>
    <div class="short">
         <h4 class="name">b namea namea namea namea </h4>
    </div>
    <div class="short">
         <h4 class="name">c namea</h4>
    </div>
</div>

<style type="text/css">
.main {
    display: flex;
}
.long {
    overflow: hidden;
    flex: 2;  //这里控制长度
    border:1px solid red;
}
.short {
    overflow: hidden;
    flex: 1;
    border:1px solid red;
}
.name {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
</style>

;