微信小程序实现文本的展开与收起

致谢 https://www.jianshu.com/p/9458083214cc

1、效果图

 

 

2、js代码

 //  pages/volunteer/active/info/activeInfo.js 
const app = getApp();
Page({
/* *
* 页面的初始数据
*/ data: {
active:{},
// 活动详情 val: false }, /* *
* 生命周期函数--监听页面加载
*/ onLoad: function (options) {
let id
= options.id; // 获取活动详情 console.info("onReady" ) this .getActiveData(id);
},
/* *
* 生命周期函数--监听页面初次渲染完成
*/ onReady: function () {
},
/* *
* 生命周期函数--监听页面显示
*/ onShow: function () {
console.info(
"onshow" )
},
/* *
* 生命周期函数--监听页面隐藏
*/ onHide: function () {

console.info(
"onHide" )
},
/* *
* 生命周期函数--监听页面卸载
*/ onUnload: function () {

console.info(
"onUnload" )
},
/* *
* 页面相关事件处理函数--监听用户下拉动作
*/ onPullDownRefresh: function () {

console.info(
"onPullDownRefresh" )
},
/* *
* 页面上拉触底事件的处理函数
*/ onReachBottom: function () {

console.info(
"onReachBottom" )
},
/* *
* 用户点击右上角分享
*/ onShareAppMessage: function () {

},
// 获取推荐 getActiveData: function (id){
console.info(
"***getActiveData****************************" + id);
let _this
= this ;
wx.request({
url: app.globalData.serverIp
+ 'vol/active/getActiveInfo' ,
method:
"GET" ,
data: {
id: id,
},
success:
function (res) {
console.info(
"getActiveData**********************" )
console.info(res)
if (res.data.code == 200 ) {
_this.setData({
active: res.data.data,
})
}
},
fail:
function () {
console.log(
"fail" )
}
})
},

checkboxChange(e) {
this .setData({
val:
! this .data.val
})
}


})

 

3、html代码

 <  view  class  ="page"  > 

   <  view  class  ="pannel"  > 
    
     <  view  class  ="pan-box"  > 
       <!--  顶部图片  --> 
       <  view  class  ="img-box"  ></  view  > 

       <!--  中部详情  --> 
       <  view  class  ="mid-box"  > 

         <  view  class  ="layer4"  > 
           <  view  class  ="layer5"  ></  view  > 
           <  text  lines  ="1"  class  ="word2"  > 学习宣扬贯彻党的十九大 </  text  > 
         </  view  > 

         <  view  class  ="wrapper"  > 
           <  view  class  ="text {{val?'atv':''}}"  > 
             <  label  class  ="btn {{val?'atv_label':''}}"  bindtap  ="checkboxChange"  ></  label  >  学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大学习宣传贯彻党的十九大  </  view  > 
         </  view  > 

         <  view  class  ="layer7"  > 
           <  view  class  ="group1"  > 
             <  text  lines  ="1"  class  ="info2"  > 发起部门: </  text  > 
             <  text  lines  ="1"  class  ="txt1"  > 组织部 </  text  > 
           </  view  > 
         </  view  > 

         <  view  class  ="layer8"  > 
           <  view  class  ="layer9"  > 
             <  text  lines  ="1"  class  ="info3"  > 活动时间: </  text  > 
             <  text  lines  ="1"  decode  ="true"  class  ="word3"  > 2019-08-11 &nbsp; 09:30 &nbsp;&nbsp; ~ &nbsp;&nbsp; 2019-08-12 &nbsp; 09:30 </  text  > 
           </  view  > 
         </  view  > 

         <  view  class  ="bm"  > 
             <  view  class  ="bm-con"  > 
               <  text  lines  ="1"  class  ="bm-1"  > 报名人数: </  text  > 
               <  text  lines  ="1"  class  ="bm-2"  > 5/10 </  text  > 
             </  view  > 
         </  view  > 

         <  a  href  ="#"  class  ="abs"  > 分享@ </  a  > 
       </  view  > 
      
       <!--  底部活动安排  --> 
       <  view  class  ="layer10"  > 
         <  text  lines  ="1"  class  ="word5"  > 活动安排 </  text  > 
       </  view  > 

       <  view  class  ="layer11"  > 
         <  view  class  ="icon1"  ></  view  > 
         <  text  lines  ="1"  class  ="info4"  > 为提高市民文明出行素质为主线 </  text  > 
       </  view  > 

       <  p  class  ="paragraph2"  > 组织开展以改善社区环境生为主要内容的志愿活动,组织志愿者广泛参与 </  p  > 

       <  view  class  ="layer12"  > 
         <  view  class  ="icon1"  ></  view  > 
         <  text  lines  ="1"  class  ="info5"  > 解决影响道路交通安全 </  text  > 
       </  view  > 

       <  p  class  ="infoBox1"  > 卫生大扫除、清洗乱涂画和“小广告”、清理卫生死角、捡拾垃圾(果皮、纸屑)等活动 </  p  > 

     </  view  > 
    
     <!--  尾部立即报名  --> 
     <  view  class  ="bottom_button"  > 
       <  text  lines  ="1"  class  ="button"  > 立即报名 </  text  > 
     </  view  > 

   </  view  > 

 </  view  >  

 

4、css代码

 .page { position : relative ; width : 100vw ; height : 100vh ; overflow : hidden ; display : flex ; flex-direction : column ; background-color : #FFFFFF ;
} .pannel { width : 100% ; height : 100% ;
} .bottom_button { z-index : 35 ; height : 88rpx ; border : 1px  rgba(226,226,226,1) ; background-color : #F24C4E ; background-size : 756rpx 94rpx ; display : flex ; flex-direction : column ; padding-left : 318rpx ; width : 750rpx ; position : fixed ; left : 0rpx ; bottom : 0rpx ; justify-content : center ;
} .button { width : 114rpx ; height : 28rpx ; overflow-wrap : break-word ; color : rgba(255,255,255,1) ; font-size : 30rpx ; font-family : SourceHanSansCN-Regular ; text-align : right ; white-space : nowrap ; line-height : 30rpx ; display : block ;
} .pan-box { width : 98% ; margin : 0 auto ;
} .img-box { width : 710rpx ; height : 375rpx ; margin : 0 auto ; margin-top : 40rpx ;
   /*  background: url(https://lanhu.oss-cn-beijing.aliyuncs.com/ps503qxduaqopoznzu7hvvey4jeyzpsoyff7217094-3137-40c5-b07d-a244ed812390) -18rpx 0rpx no-repeat;  */ 
   /*  background-size: 750rpx 375rpx;  */  background-color : #F24C4E ; display : flex ; flex-direction : column ; border-radius : 15rpx ;
} .layer4 { width : 430rpx ; height : 35rpx ; flex-direction : row ; display : flex ; justify-content : space-between ; margin : 30rpx 0 0 35rpx ;
} .layer5 { background-color : rgba(206,4,2,1.000000) ; border-radius : 50% ; width : 16rpx ; height : 16rpx ; margin-top : 9rpx ; display : flex ; flex-direction : column ;
} .word2 { width : 393rpx ; height : 35rpx ; overflow-wrap : break-word ; color : rgba(51,51,51,1) ; font-size : 36rpx ; font-family : SourceHanSansCN-Bold ; text-align : left ; white-space : nowrap ; line-height : 36rpx ; display : block ; font-weight : bold ;
} .layer7 { width : 687rpx ; height : 26rpx ; flex-direction : row ; display : flex ; justify-content : space-between ; margin : 13rpx 0 0 35rpx ;
} .group1 { width : 191rpx ; height : 23rpx ; overflow-wrap : break-word ; font-size : 0rpx ; font-family : SourceHanSansCN-Light ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .info2 { width : 191rpx ; height : 23rpx ; overflow-wrap : break-word ; color : rgba(51, 51, 51, 1) ; font-size : 24rpx ; font-family : SourceHanSansCN-Light ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .txt1 { width : 191rpx ; height : 23rpx ; overflow-wrap : break-word ; color : black ; font-size : 24rpx ; font-family : SourceHanSansCN-Regular ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .layer8 { width : 693rpx ; height : 25rpx ; flex-direction : row ; display : flex ; justify-content : space-between ; margin : 12rpx 0 0 35rpx ;
} .layer9 { width : 531rpx ; height : 23rpx ; overflow-wrap : break-word ; font-size : 0rpx ; font-family : SourceHanSansCN-Light ; text-align : left ; white-space : nowrap ; line-height : 24rpx ; margin-top : 2rpx ;
} .info3 { width : 531rpx ; height : 23rpx ; overflow-wrap : break-word ; color : rgba(51, 51, 51, 1) ; font-size : 24rpx ; font-family : SourceHanSansCN-Light ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .word3 { width : 531rpx ; height : 23rpx ; overflow-wrap : break-word ; color : black ; font-size : 24rpx ; font-family : SourceHanSansCN-Regular ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .bm { width : 687rpx ; height : 26rpx ; flex-direction : row ; display : flex ; justify-content : space-between ; margin : 13rpx 0 0 35rpx ;
} .bm-con { width : 191rpx ; height : 23rpx ; overflow-wrap : break-word ; font-size : 0rpx ; font-family : SourceHanSansCN-Light ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .bm-1 { width : 191rpx ; height : 23rpx ; overflow-wrap : break-word ; color : rgba(51, 51, 51, 1) ; font-size : 24rpx ; font-family : SourceHanSansCN-Light ; text-align : left ; white-space : nowrap ; line-height : 24rpx ; margin-right : 360rpx ;
} .bm-2 { width : 191rpx ; height : 23rpx ; overflow-wrap : break-word ; color : black ; font-size : 24rpx ; font-family : SourceHanSansCN-Regular ; text-align : left ; white-space : nowrap ; line-height : 24rpx ;
} .mid-box { position : relative ;
   /*  border: 1px solid black;  */ 
} .abs { text-decoration : none ; display : block ; width : 86rpx ; height : 40rpx ; color : rgb(235, 10, 10) ; font-size : 24rpx ; position : absolute ; bottom : 0rpx ; right : 10rpx ;
   /*  border: 1px solid black;  */ 
} .layer10 { border-radius : NaNrpx ; height : 69rpx ; display : flex ; flex-direction : column ; width : 195rpx ; margin : 20rpx 0 0 4rpx ; padding : 10rpx 0 0 29rpx ;
} .word5 { width : 143rpx ; height : 42rpx ; overflow-wrap : break-word ; color : rgba(255,255,255,1) ; font-size : 26rpx ; background-color : rgba(242,76,78,1.000000) ; border-radius : 20rpx 0 20rpx 0 ; font-family : SourceHanSansCN-Bold ; text-align : center ; line-height : 42rpx ; display : block ; justify-content : center ; text-align : center ;
} .layer11 { width : 444rpx ; height : 30rpx ; flex-direction : row ; display : flex ; justify-content : space-between ; margin : 1rpx 0 0 35rpx ;
} .icon1 { width : 9rpx ; height : 20rpx ; margin-top : 6rpx ; background-color : red ;
} .info4 { width : 419rpx ; height : 30rpx ; overflow-wrap : break-word ; color : rgba(36,45,57,1) ; font-size : 30rpx ; font-family : SourceHanSansCN-Bold ; text-align : left ; white-space : nowrap ; line-height : 30rpx ; display : block ; font-weight : bold ;
} .paragraph2 { width : 624rpx ; color : rgba(36,45,57,1) ; font-size : 28rpx ; font-family : SourceHanSansCN-Normal ; text-align : left ; display : block ; margin : 15rpx 0 0 60rpx ;
} .layer12 { width : 324rpx ; height : 30rpx ; flex-direction : row ; display : flex ; justify-content : space-between ; margin : 42rpx 0 0 35rpx ;
} .label2 { width : 9rpx ; height : 20rpx ; margin-top : 6rpx ;
} .info5 { width : 300rpx ; height : 30rpx ; overflow-wrap : break-word ; color : rgba(36,45,57,1) ; font-size : 30rpx ; font-family : SourceHanSansCN-Bold ; text-align : left ; white-space : nowrap ; line-height : 30rpx ; display : block ; font-weight : bold ;
} .infoBox1 { width : 642rpx ; color : rgba(36,45,57,1) ; font-size : 28rpx ; font-family : SourceHanSansCN-Normal ; text-align : left ; display : block ; margin : 15rpx 0 0 60rpx ;
} .wrapper { display : flex ; margin : 15rpx auto ; width : 677rpx ; overflow : hidden ;
} .text { margin : 0 auto ; padding : 0 ; font-size : 24rpx ; color : rgba(153, 153, 153, 1) ; overflow : hidden ; text-overflow : clip ; text-align : left ; position : relative ; line-height : 39rpx ; max-height : 80rpx ;
} .text::before { content : '' ; height : calc(100% - 23px) ; float : right ;
} .btn {
   /*  border: 1rpx solid black;  */  position : relative ; float : right ; clear : both ; margin : 0 ; font-size : 24rpx ; padding : 0 ;
   /*  padding-top: 1rpx;  */  line-height : 38rpx ; height : 30rpx ; color : rgb(233, 16, 16) ;
} .btn::before { content : '' ; position : absolute ; left : -5rpx ; color : rgb(10, 1, 1) ; transform : translateX(-100%) } .btn::after { content : '[展开]' } .atv { max-height : none ;
} .atv_label::after { content : '[收起]' } .atv_label::before {
   /*  在展开状态下隐藏省略号  */  visibility : hidden ;
}

 



 

标签: Javascript

添加新评论