因为整个头部是flex布局,detail为右侧占flex:3 1 1,并没有设置固定的宽度,当box设置不换行时,拿到的宽度是整个box的宽度,会导致如下样式超出问题
所以需要把detail设置width:0,并且超过一行部分省略号显示。
全体源码如下:
<template>
<view class="houseInfo">
<view class="top">
<view class="title">委托房屋</view>
<view class="btn" @tap="editHouse" v-if="showEditBtn">修改坐落</view>
</view>
<view class="info">
<view class="box">
<view class="label">楼盘</view>
<view class="value">{{ houseDetail.communityName }} </view>
</view>
<view class="box">
<view class="label">楼栋号</view>
<view class="value">{{ houseDetail.comBuildingName || "-" }}</view>
</view>
<view class="box">
<view class="label">房间号</view>
<view class="value">{{ houseDetail.roomNo || "-" }}</view>
</view>
</view>
</view>
</template>
<script>
export default {
props: ["houseDetail", "showEditBtn"],
data() {
return {};
},
created() {},
mounted() {},
methods: {
editHouse() {
this.$emit("editHouse");
},
},
};
</script>
<style lang="less" scoped>
.houseInfo {
width: 622rpx;
height: 168rpx;
background: #ffffff;
border-radius: 12rpx;
.top {
display: flex;
justify-content: space-between;
.title {
margin-bottom: 24rpx;
font-size: 36rpx;
font-weight: bold;
color: #303133;
line-height: 54rpx;
}
.btn {
color: #247257;
font-size: 28upx;
}
}
.info {
display: flex;
justify-content: space-between;
align-items: center;
.box {
width: 0;
&:nth-child(1) {
flex: 3;
margin-right: 32rpx;
border-right: 1rpx solid #f0f2f5;
}
&:nth-child(2) {
margin-right: 32rpx;
flex: 1;
}
&:nth-child(3) {
flex: 1;
}
.label {
margin-bottom: 8rpx;
font-size: 28rpx;
color: #909199;
line-height: 42rpx;
}
.value {
font-size: 32rpx;
font-weight: bold;
color: #303133;
line-height: 48rpx;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
}
}
</style>
小插曲:四边阴影设置box-shadow: 0 8rpx 26rpx 0 rgba(0, 0, 0, 0.13);