首先flex1是根据flex-basis:0 进行伸缩的,元素内容本并不会影响,但是对于“一连串英文字符或者是数字”,html是会将他们识别成一体的,会被他们强行撑开宽度。
那么可以预选设置一个宽度width:0,这样盒子就不会被“一连串英文字符或者是数字”撑开,而保持flex:1分配的宽度了。除此之外还有一个文字原本的宽度,所以我们还需要设置word-wrap: break-word;文本换行。
例子如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.flex-scarf {
display: flex;
width: 600px;
background-color: pink;
}
.flex-scarf .flex-item {
flex: 1;
height: 50px;
border: solid 1px black;
background-color: violet;
}
.flex-scarf .flex-item:nth-of-type(2) {
border-left: none;
border-right: none;
width: 0;
}
.flex-scarf .flex-item .content {
background-color: orangered;
height: 25px;
}
.flex-scarf .flex-item .content2 {
background-color: blue;
/* 换行 */
word-wrap: break-word;
}
</style>
</head>
<body>
<div class="flex-scarf">
<div class="flex-item">
<div class="content content1"></div>
</div>
<div class="flex-item">
<div class="content content2">
11111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111
二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二
</div>
</div>
<div class="flex-item">
<div class="content content3"></div>
</div>
</div>
</body>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="module" src="./mian.js"></script>
</html>