效果图
https://raw.githubusercontent.com/expo/react-native-read-more-text/master/example.gif
<div class="multi-text-content" ref="textContainer" v-if="!needShowExpande">
{{ getHomeworkData.requireContent }}</div>
<div class="training_project_date" v-else>
<div class="multi-text-flex" v-if="!isExpanded">
<div class="multi-text-wrap">
<div class="multi-text-btn" @click="expandContent">{{ $t('app_show') }}
<i class="iconfont icon" :class="'icon-xialaxiaojiantou'"></i>
</div>
<div class="multi-text-content training_project_date">
{{ getHomeworkData.requireContent }}</div>
</div>
</div>
<div class="multi-text-flex" v-else>
<div class="multi-text-all">
<div class="multi-text-content">
{{ getHomeworkData.requireContent }}
<div class="multi-text-collapse" @click="collapseContent">{{ $t('app_hide') }}
<i class="iconfont icon" :class="'icon-shouqijiantou'"></i>
</div>
</div>
</div>
</div>
</div>
const isExpanded = ref(false)
const needShowExpande = ref(false)
const textContainer = ref()
## 接口中
nextTick(() => {
if (textContainer.value.offsetHeight > 103) {
needShowExpande.value = true
} else {
needShowExpande.value = false
}
})
## 展开 收起
const expandContent = () => {
isExpanded.value = true
}
const collapseContent = () => {
isExpanded.value = false
}
.multi-text- {
&flex {
display: flex;
.iconfont {
font-size: 8px;
margin-top: 8px;
}
}
&wrap {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
&:before {
content: '';
float: right;
height: 100%;
margin-bottom: -20px;
}
}
&all {
display: -webkit-box;
&:after {
content: '';
float: left;
height: 100%;
margin-bottom: -20px;
}
}
&collapse {
float: right;
clear: both;
margin-right: 10px;
}
&btn {
float: right;
clear: both;
margin-right: 10px;
margin-top: 4px;
}
}
RN
使用第三方库实现