【小程序】小程序swiper组件实现间距轮播

swiper组件实现不同效果间距轮播

先不急着看实现过程,先看看三种效果图,如果是你想要的效果那请看下面的过程,不是的话也不浪费大家的时间(就是这么体贴唉)。
常见问题
小程序swiper有时候滑动,滑来滑去会卡在中间,跳转到别的页面在跳转回来还是一样的卡在哪里,猜测是轮播图下标的问题,所以,就在onshow哪里,跳转回来的时候,初始化下标就可以解决问题

this.setData({
      current: 1,
    })
效果图一 利用css

在这里插入图片描述

效果图二 利用css

在这里插入图片描述

效果图三 利用css 和 js实现两边小 中间大

在这里插入图片描述
如果有你想要的效果,那就继续往下看,没有那就出门右(别)拐(走)吧。

一开始想着如果和swiper.js一样,那就好了,看了下文档就放弃了。网上找了一下还是没找到具体实现方法,就开始自己倒腾,就想到几个办法,看客们讲究着试试吧。

第一种效果 普通的间隔轮播

1:wxml

<view class='test'>
    <swiper  display-multiple-items='1'>    // 这里是设置显示一张
      <block wx:for="{{imgUrls}}">             // 遍历js中的图片
        <swiper-item>									// box外层swiper
          <view class='box'>						// 重点处理box
            <image src='{{item}}'></image>
            <view class='content'>
              <text>测试</text>
            </view>
          </view>
        </swiper-item>
      </block>
    </swiper>
</view>

2:wxss

.test{
  width: 100%;
  height: 100vh;
  box-sizing: border-box;
}
swiper{
  height: 100%;
}
.content{
  font-size: 16px;
  color: #333;
  padding: 20rpx 40rpx;
}
swiper-item{							// 此时的swiper-item是占据一个页面的
  text-align: center;				   // 让其中的内容居中显示
}
swiper-item image{
  width: 100%;
}
.box{								// box设置宽高(更具设计稿自定义吧)
  width: 80%;
  height: 700rpx;
  display: inline-block;
  margin-top: 40px;
  box-sizing: border-box;
  box-shadow: 0 0 4px 4px #f2f2f2;  // 给box添加阴影效果更显著
}

这种实现是利用css来间接达到轮播间距的效果:

  • swiper利用display-multiple-items='1’属性 一次展示一张
  • swiper-item添加内容居中
  • 内容设置宽高
  • 最后就可以得到一次一张且有间距的轮播图

第二种效果 带边界的间隔轮播

依旧按照上面的css不用大改,改已改box的宽度即可,按照你想要的效果去设置大小。

.box{
  width: 90%;
  }

只需要在swiper组件上加两个属性,来达到预留空间给里面box。在加上circular属性衔接滑动(无缝连接)。
在这里插入图片描述

第三种效果 两边小中间大动画轮播

1:wxml

<view class='test'>
    <swiper  display-multiple-items='1' circular previous-margin='50px' next-margin='50px' bindchange='change' current='{{current}}'>
      <block wx:for="{{imgUrls}}" wx:key='{{index}}'>
        <swiper-item>
          <view class="box" data-index='{{index}}' animation="{{index == current?animationData:animationData2}}">
            <image src='{{item}}'></image>
            <view class='content'>
              <text>测试</text>
              <text>测试</text>
            </view>
          </view>
        </swiper-item>
      </block>
    </swiper>
</view>

2:wxss

.test{
  width: 100%;
  height: 100vh;
  box-sizing: border-box;
}
swiper{
  height: 100%;
}
.content{
  font-size: 16px;
  color: #333;
  padding: 20rpx 40rpx;
}
swiper-item{
  text-align: center;
}
swiper-item image{
  width: 100%;
}
.box{
  width: 90%;
  height:600rpx;
  display: inline-block;
  margin-top: 40px;
  box-sizing: border-box;
  box-shadow: 0 0 4px 4px #f2f2f2;
  position:relative;
  top:33%;
  transform:translateY(-45%);
}

3.js 利用animate来过渡动画,当下标相同的额时候执行放大的动画

Page({
  /**
   * 页面的初始数据
   */
  data: {
    imgUrls: [
      'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',
      'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',
      'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'
    ],
    current: 0,
    animationData: {},
    animationData2: {}
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.stretch(350)
  },
  change(e){
    this.setData({
      current: e.detail.current
    })
    this.stretch(350)
    
    this.shrink(300)
  },
  // 收缩
  stretch(h){
    var animation = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    })
    this.animation = animation
    animation.height(h).step()
    this.setData({
      animationData: animation.export(),
    })
  },
  // 展开
  shrink(h){
    var animation2 = wx.createAnimation({
      duration: 1000,
      timingFunction: 'ease',
    })
    this.animation2 = animation2
    animation2.height(h).step()
    this.setData({
      animationData2: animation2.export()
    })
  },
})

以上就是三种轮播实现的方式,如果有疑问的可以下面留言,或者你有更好的方法,可以留言,邮箱发送

  • 20
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
### 回答1: 要调整微信小程序中文字的间距,可以在对应的 CSS 文件中加入以下代码: ``` text { letter-spacing: 2px; /* 2px为文字间距大小,可以根据需要调整 */ } ``` 也可以使用 `line-height` 属性来调整行间距,例如: ``` text { line-height: 1.5; /* 1.5为行间距大小,可以根据需要调整 */ } ``` 注意,这些样式代码需要在对应的页面或组件的 CSS 中添加才能生效。 ### 回答2: 微信小程序的文字间距是指文字之间的空隙大小。在小程序中,文字间距设置可以通过样式属性来实现。 在样式中,可以使用letter-spacing属性来控制文字间距的大小。该属性的取值可以是一个固定值,表示固定的间距大小;也可以是一个百分比值,表示相对于文字大小的间距大小。 例如,设置文字的间距为2像素可以使用letter-spacing: 2px;而设置间距为文字大小的50%可以使用letter-spacing: 50%。 通过调整文字间距,可以改变文字排版的紧密程度。较小的间距可以使文字紧凑排列,适合于一些需要节约空间的页面;而较大的间距则可以使文字之间有一定的距离,使得阅读更加清晰和舒适。 需要注意的是,微信小程序的文字间距设置是相对于整个小程序页面而言的,而不是相对于单个文字元素。因此,对于不同的文字元素,如果需要设置不同的间距大小,需要分别设置它们的样式属性。 综上所述,微信小程序的文字间距可以通过设置letter-spacing属性来实现,可以根据实际需求调整间距大小,以达到更好的阅读体验。 ### 回答3: 微信小程序中的文字间距可以通过调整字体的样式来实现。开发者可以在小程序中使用CSS样式表或在组件中使用属性来设置文字的间距。 在CSS样式表中,可以使用letter-spacing属性来设置文字的间距。该属性可以接受一个数值作为参数,表示字母之间的间距大小。数值越大,间距越宽,数值越小,间距越窄。例如,可以使用以下样式设置一个段落中文字的间距为2像素: ```css p { letter-spacing: 2px; } ``` 在小程序组件中,可以使用text组件的属性space来设置文字的间距。space属性可以接受一个字符串作为参数,表示文字的间距类型。常用的取值有"default"(默认间距)、"normal"(正常间距)、"large"(较大间距)等。例如,可以使用以下代码将一个文本组件中的文字间距设置为较大间距: ```html <text space="large">这是一段文字</text> ``` 需要注意的是,微信小程序中的文字间距设置可能会受到系统和设备的限制,具体的效果可能会因不同的设备和操作系统而有所差异。为了提供更好的用户体验,建议在调整文字间距时进行适当的测试和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值