一、效果图
二、代码模块
1、js
data:{
showAme:true,//展开收起状态
ame:'实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的实习目的',
ame2:'',//实习目的展示内容
ameover:false,//实习目的文字是否超出
},
//实习目的
reasonShows(){
this.setData({
showAme:!this.data.showAme
});
if(!this.data.showAme){
this.setData({
ame2:this.data.ame
});
}else{
this.setData({
ame2:this.Cutsubstr(this.data.ame,98)
});
}
},
//超出字符显示省略号,str是字符串内容,len是长度
Cutsubstr(str, len) {
if (!str || !len) {
return '';
}
var build = "";
for (var i = 0; i < str.length && len > 0; i++) {
build += str.substr(i, 1);
len -= str.charCodeAt(i) > 127 ? 2 : 1;
}
if (build.length < str.length)
build += "...";
return build;
},
onShow() {
var fonts=this.data.ame;
console.log(fonts.length);
if(fonts.length<50){
this.setData({
ame2:fonts,
})
}else{
var fonts2=this.Cutsubstr(fonts,98);
this.setData({
ame2:fonts2,
ameover:true
})
}
},
2、xml内容
<view class="reason">
{{ame2}}
<view class="btn_con2" wx:if="{{ameover}}">
<view bindtap="reasonShows">{{showAme?'展开':'收起'}} <image class="sicon" src="{{showAme?'../images/sicon1.png':'../images/sicon2.png'}}" mode=""/> </view>
</view>
</view>
3、css
.reason{
width: 532rpx;
text-align: justify;
position: relative;
word-break: break-all;
}
.btn_con2{
position: absolute;
bottom: 0rpx;
right: 0;
color: #2FC1C2;
display: flex;
align-items: center;
}