仿网易严选微信小程序

351 阅读2分钟

仿网易严选微信小程序

项目截图

![商品图](a1.qpic.cn/psc?/V10LaH… ''商品图'') ![商品图](a1.qpic.cn/psc?/V10LaH… ''商品图'')

前言

学习了几天小程序,这是自己动手做的第一个微信小程序,希望通过这个项目,给学习的小程序的你提供一点帮助。本着学习和分享的目的,来分析小程序中的各个功能,希望能给学习小程序的你带来一点帮助

开发前准备

  • VScode代码编辑器。
  • 微信开发者工具
  • 酷狗音乐小程序(提供了一些思路)
  • 数据(我的都是自己写的假数据)
  • (阿里巴巴矢量图标库)提供一些图标icon
  • github完整代码

第一个商品(goods)页面

<!-- 头部轮播图 -->
<view class="swiper" style="width:750rpx">
  <swiper style="height:45vh" autoplay="{{true}}">
    <swiper-item class="swiper-item" wx:for="{{myswiper}}" wx:key="index">
      <image mode="widthFix" src="{{item}}" data-index='{{index}}' bindtap='previewImg'/>
    </swiper-item>
  </swiper>
</view>
<!-- 上半部的文字 -->
<view class="content-word">
  <view class="content-word__price">¥427</view>
  <view class="content-word__fenqi">支持3/6/12期分期,每期低至38.3元(每天1.3元)</view>
  <view class="content-word__name">D.Va可动人偶 守望先锋</view>
  <view class="content-word__reason">推荐理由</view>
</view>
<!-- 推荐理由 -->
<view style="position:relative">
  <view class="triangle"></view>
</view>
<view class="reasons">
  <view class="reasons-word">
    <view class="word1">
      <image src="../../images/1.png" />
      <text>正版授权 质量可靠</text>
    </view>
    <view class="word2">
      <image src="../../images/2.png" />
      <text>精致做工 细节出众</text>
    </view>
    <view class="word3">
      <image src="../../images/3.png" />
      <text>精美手办 高度还原</text>
    </view>
  </view>
</view>
<!-- 邮费地址 -->
<view class="address">
  <view class="youfei" bind:tap="showPostage">
    <view class="text1">
      <text>邮费</text>
    </view>
    <view class="text2">
      <text>满99免邮</text>
    </view>
    <view>
      <image src="../../images/向右.png" />
    </view>
  </view>
  <view class="youfei">
    <view class="text1">
      <text>已选</text>
    </view>
    <view class="text2">
      <text>D.va x1</text>
    </view>
    <view>
      <image src="../../images/向右.png" />
    </view>
  </view>
  <view class="gave" bind:tap="hiddenAddress">
    <view class="peisong">
      <text>配送</text>
    </view>
    <view>
      <view class="text4">
        <text>{{bindAddress}}</text>
      </view>
      <view class="time">
        <text>19:00前完成支付,预计(明天)7月26日送达</text>
      </view>
    </view>
    <view>
      <image src="../../images/向右.png" />
    </view>
  </view>
  <view class="wyad">
    <view>
      <image src="../../images/点.png" />
    </view>
    <view>
      <text>网易自营品牌</text>
    </view>
    <view>
      <image src="../../images/点.png" />
    </view>
    <view>
      <text>不支持无忧退换</text>
    </view>
  </view>
</view>
<!-- 固定的半屏弹窗 来查看邮费-->
<view class="postage" style="display:{{myshowpostage}};">
  <view class="postage-title"><text>邮费</text><image bind:tap="showPostage" src="../../images/X .png" /></view>
  <view>
    <view class="postage-no"><image src="../../images/点.png" /><text>满99免邮</text></view>
    <view class="postage-word"><text>单笔订单金额(不含邮费),大陆地区满99元免邮</text></view>
    <view class="postage-word"><text>不满99元收取10元邮费;港澳台地区满500元免邮</text></view>
    <view class="postage-word"><text>不满500元收取30元邮费;海外地区以下单页提示邮费为准</text></view>
    <!-- <view><text>满99免邮</text></view> -->
  </view>
</view>
<!-- 固定的3/4屏,来获取地址 -->
<view class="fixedAddress" style="display:{{hiddenMyAddress}}">
  <view class="fixedAddress-title"><text>配送至</text><text style="display:inline-block;margin-left:20rpx;">{{addressInformation}}</text><text style="display:inline-block;float:right;padding-right:20rpx;color:{{mychangeColor}}" bind:tap="saveAddress" bind:tap="hiddenAddress">确定</text></view>
  <view class="fixedAddress-city">
    <scroll-view scroll-y="{{true}}" style="height: 65vh;">
      <!-- 城市 -->
      <view data-index="{{index}}" bind:tap="choseCity" wx:for="{{city}}" wx:key="index" style="display:{{showCity}}">
        <text>{{item.city}}</text>
      </view>
      <view data-index="{{index}}" bind:tap="choseBlock" wx:for="{{blockList}}" data-classify="{{item}}" wx:key="index" style="display:{{showBlock}};color:{{index===myBlockColor?'red':'black'}}"><text>{{item}}</text></view>
    </scroll-view>
  </view>
</view>
<!-- 中间的轮播图 -->
<view class="centerswiper">
  <swiper style="height:20vh" autoplay="{{true}}">
    <swiper-item class="swiper-item" wx:for="{{myswiperad}}" wx:key="index">
      <image src="{{item}}" />
    </swiper-item>
  </swiper>
</view>
<!-- 用户评价部分 -->
<view class="evaluate">
  <view class="person-evaluate">
    <text>用户评价(17)</text>
  </view>
  <view class="viewAll">
    <text>查看全部</text>
  </view>
  <view>
    <image src="../../images/向右.png" />
  </view>
</view>
<!-- 评论区 -->
<view class="comment">
  <view class="comment-wrapper">
    <image class="touxiang" src="{{comment[0]}}" />
    <view class="comment-wrapper__name">
      <text>****心</text>
    </view>
    <image class="vipfive" src="../../images/vip5.png" />
  </view>
  <view class="comment-word">
    <text>不错!</text>
  </view>
</view>
<!-- 你可能还喜欢 -->
<view class="wrapper-like">
  <view class="wrapper-like__content">
    <view class="wrapper-like__like" bind:tap="changeWrapperLike" wx:if="{{mychangewrapper}}" style="color:red">
      <text>你可能还喜欢</text>
    </view>
    <view class="wrapper-like__like" bind:tap="changeWrapperLike" wx:else>
      <text>你可能还喜欢</text>
    </view>
    <view class="wrapper-like__hot" bind:tap="changeWrapperHot" wx:if="{{mychangewrapper}}">
      <text>24小时热销</text>
    </view>
    <view class="wrapper-like__hot" bind:tap="changeWrapperHot" wx:else style="color:red">
      <text>24小时热销</text>
    </view>
  </view>
</view>
<!-- 一条红线 -->
<view class="line" style="transform:translate({{translateX}},0);" bind:tap="changeWrapperLike"></view>

<!-- 底部滑动块1/2存在 -->
<view class="bottom-swiper" wx:if="{{mychangewrapper}}">
  <swiper class="bottom-swiper__swiper" indicator-dots="true">
    <swiper-item  class="bottom-swiper__swiper__item" wx:for="{{goods}}" wx:key="index">
      <view class="bottom-swiper__block" wx:for="{{item}}" wx:key="index">
        <image src="{{item.url}}" />
        <view class="bottom-swiper__title">{{item.title}}</view>
        <view class="bottom-swiper__price">{{item.price}}</view>
        <view class="bottom-swiper__discount">{{item.discount}}</view>
      </view>
    </swiper-item>
  </swiper>
</view>
<!-- 底部滑动块1/2存在 -->
<view class="bottom-swiper" wx:else>
  <swiper class="bottom-swiper__swiper" indicator-dots="true">
    <swiper-item  class="bottom-swiper__swiper__item" wx:for="{{goods2}}" wx:key="index">
      <view class="bottom-swiper__block" wx:for="{{item}}" wx:key="index">
        <image src="{{item.url}}" />
        <view class="bottom-swiper__title">{{item.title}}</view>
        <view class="bottom-swiper__price">{{item.price}}</view>
        <view class="bottom-swiper__discount">{{item.discount}}</view>
      </view>
    </swiper-item>
  </swiper>
</view>
  • js部分 有切换bar采用了css动画,让切换不会很生硬,利用 wx.setStorageSync()保存并且传输两个页面之间的数据,下拉触底添加数据等功能,应该对正在学小程序的你有所帮助,详细可以看GitHub