方案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>