首页 > 小程序教程 > 微信小程序天天快拍拍活动赢奖金首页设计制作开发教程

微信小程序天天快拍拍活动赢奖金首页设计制作开发教程

上一篇 下一篇
本文给大家带来的是微信小程序天天快拍拍活动赢奖金首页设计制作开发教程,制作好以后效果图如下:
一、wxml页面代码如下:
<import src="../../components/load/load.wxml"></import>
<import src="../../components/slider/slider.wxml"></import>
<import src="../../components/fall-layout/fall-layout.wxml"></import>

<!-- 头部:日期选择  -->
<view class="head">
    <navigator class="pre" wx:if="{{ date.pre == 0 }}" url="../../pages/about/about">了解快拍</navigator>
    <view class="pre" wx:else bindtap="getPre" data-pre="{{ date.pre }}">前一天</view>
    <picker mode="date" bindchange="getSelect" value="{{ date.current }}" start="{{ date_range.start }}" end="{{ date_range.end }}">
        <view class="picker">
            <text>{{ date.current_month }}月{{ date.current_date }}日</text>
            <text>周{{ date.current_day }}</text>
            <image src="../../images/btn_find_calendar@3x.png"></image>
        </view>
    </picker>
    <navigator class="next" wx:if="{{ date.next == 0 }}" url="../../pages/about/about">了解快拍</navigator>
    <view class="next" bindtap="getNext" data-next="{{ date.next }}" wx:else>后一天</view>
</view>

<!-- top1 -->
<navigator class="top-photo" wx:if="{{ top_photo.photos.length > 0 }}" url="../../pages/work-details/work-details?id={{ top_photo.id }}" hover-class="none">
    <!-- top1日期  -->
    <view class="top-photo-date" wx:if="{{ date.next == 0 }}">{{ date.pre_month }}月{{ date.pre_date }}日TOP1</view>
    <view class="top-photo-date" wx:else>{{ date.current_month }}月{{ date.current_date }}日TOP1</view>

    <!-- top1图片展示 -->
    <view class="top-photo-main" catchtap="openSlider" id="{{ top_photo.id }}">
        <view class="top-photo-rewards">
            <image src="../../images/icon_find_reward@3x.png"></image>
            <view class="rewards">¥{{ top_photo.rewards }}</view>
        </view>
        <view wx:if="{{ top_photo.photos.length == 1 }}" class="photos photos-{{top_photo.photos.length}}">
            <image src="{{ top_photo.photos[0].src + '!720w.jpg' }}" mode="{{ 2/3 < item.scale < 2/3 ? 'widthFix' : 'aspectFill'}}"></image>
        </view>
        <view wx:else class="photos photos-{{top_photo.photos.length}}">
            <block wx:for="{{ top_photo.photos }}" wx:key="item" wx:for-item="photo" wx:for-index="idx">
                <image src="{{ photo.src+ '!720w.jpg' }}" mode="aspectFill" data-idx="{{ idx + 1 }}"></image>
            </block>
        </view>
    </view>

    <!-- top1详细信息  -->
    <view class="top-photo-details">
        <view class="top-photo-author">作者: {{ top_photo.author }}</view>
        <view class="top-photo-location" wx:if="{{ top_photo.location !== '未知' }}">地点: {{ top_photo.location }}</view>
        <view class="top-photo-des" wx:if="{{ top_photo.des !== '' }}">说明: {{ top_photo.des }}</view>
        <view class="top-photo-opinion"><text>点评:</text>{{ top_photo.opinion }}</view>
    </view>

    <!-- 加入讨论  -->
    <view class="join-review" catchtap="joinReview">加入讨论({{ top_photo.comment_count }})</view>
</navigator>

<!-- 投稿作品  -->
<view class="main">
    <!-- 投稿作品:头部banner  -->
    <view class="banner">
        <image src="../../images/icon_find_gao@3x.png"></image>
        <text> {{ date.current }}投稿作品</text>
    </view>

    <!-- 瀑布流展示作品  -->
    <view class="photos-wrap">
        <block wx:for="{{ photos }}" wx:key="item" wx:if="{{ 0 < photos.length < 9 }}">
            <navigator class="work" url="../../pages/work-details/work-details?id={{ item.id }}">
                <view class="work-head">
                    <image class="work-head-avatar" src="{{ item.avatar }}"></image>
                    <view>{{ item.nickname }}</view>
                </view>
                <view class="work-cover">
                    <image class="work-cover-photo" src="{{ item.cover }}!720w.jpg" mode="widthFix"></image>
                    <view class="work-cover-count">{{ item.count }}</view>
                </view>
                <view class="work-des">{{ item.des }}</view>
            </navigator>
        </block>
    </view>
</view>

<!-- 加载更多  -->
<template is="load" data="{{ loadStyleData }}"></template>

<!-- 查看大图 -->
<template is="slider" data="{{ slider }}"></template>

<!-- 快拍  -->
<view class="btn-fastphoto" bindtap="uploadPhoto">快拍</view>
 
二、wxss样式文件代码如下:
@import '../../components/nine-photo-layout/nine-photo-layout.wxss';
@import '../../components/load/load.wxss';
@import '../../components/slider/slider.wxss';

page {
    padding-top: 80rpx;
    background: #f5f5f5;
}
/* 头部:日期选择  */
.head {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 80rpx;
    background: #05272e;
    display: flex;
    justify-content: space-around;
    align-items: center;
    color: #adc9d1;
    font-size: 24rpx;
    z-index: 1;
}
.head .picker {
    position: relative;
    top: -5rpx;
}
.head .picker image {
    position: relative;
    top: 5rpx;
    width: 15px;
    height: 30rpx;
}
.head .picker text:nth-child(2) {
    margin-left: 10rpx;
    margin-right: 15rpx;
} 
/* top1  */
.top-photo {
    position: relative;
    padding-bottom: 164rpx;
    background: #fff;
    border-bottom: 2px solid #f5f5f5;
}
/* top1:加入讨论按钮 */
.top-photo .join-review {
    position: absolute;
    bottom: 50rpx;
    left: 50%;
    transform: translateX(-50%);
    width: 240rpx;
    height: 62rpx;
    line-height: 62rpx;
    text-align: center;
    box-sizing: border-box;
    border: 1px solid #88b3dd;
    border-radius: 4px;
    color: #88b2e2;
    font-size: 28rpx;
}
/* top1:日期 */
.top-photo-date {
    height: 80rpx;
    line-height: 80rpx;
    font-size: 30rpx;
    color: #32798d;
    text-align: center;
}
/* top1:作品图片  */
.top-photo-main {
    position: relative;
}
.top-photo-rewards {
    position: absolute;
    top: 0;
    left: 0;
    color: #fffaf0;
    font-size: 18rpx;
}
.top-photo-rewards image {
    width: 110rpx;
    height: 110rpx;
}
.top-photo-rewards .rewards {
    position:absolute;
    left:50%;
    transform:translateX(-50%);
    bottom:18rpx;
    width:70%;
    text-align:center;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
/* top1:作品详细信息 */
.top-photo-details {
    padding: 0 30rpx;
    font-size: 28rpx;
    color: #666;
}
.top-photo-details view {
    margin-top: 20rpx;
}
.top-photo-author,
.top-photo-location {
    color: #333;
}
.top-photo-des,
.top-photo-opinion {
    line-height: 1.4;
    word-wrap: break-word;
}
.top-photo-opinion text {
    color: #88b3e2;
    margin-right: 20rpx;
}
/* 投稿作品 */
.main {
    position: relative;
    background: #f5f5f5;
}
/* 投稿作品:头部banner  */
.main .banner {
    height: 80rpx; 
    display: flex;
    align-items: center;
    padding-left: 30rpx;
    background: #fff;
    color: #333;
    font-size: 30rpx;
    margin-bottom: 12rpx;
}
.main .banner image {
    width: 50rpx;
    height: 50rpx;
    margin-right: 12rpx;
}
/* 投稿作品:瀑布流展示  */
.main .photos-wrap {
    padding: 20rpx 20rpx 0;
    column-count: 2;
    -webkit-column-count: 2; /* Chrome, Safari, Opera */
    -moz-column-count: 2; /* Firefox */
    
    column-gap: 10rpx;
    -webkit-column-gap: 10px; /* Chrome, Safari, Opera */
    -moz-column-gap: 10px; /* Firefox */
}
.main .photos-wrap .work {
    color: #666;
    font-size: 24rpx;
    background: #fff;
    margin-bottom: 20rpx;
    display: inline-block;
    border-radius: 6rpx;
    width: 100%;
}
.main .photos-wrap .work-head {
    height: 156rpx;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;
}
.main .photos-wrap .work-head-avatar {
    height: 80rpx;
    width: 80rpx;
    border-radius: 80rpx;
}
.main .photos-wrap .work-cover {
    position: relative;
}
.main .photos-wrap .work-cover-photo {
    width: 100%;
    display: inline-block;
}
.main .photos-wrap .work-cover-count {
    position: absolute;
    top: 10rpx;
    right: 10rpx;
    width: 40rpx;
    height: 40rpx;
    line-height: 40rpx;
    border-radius: 40rpx;
    background: rgba(0,0,0,0.45);
    color: #fff;
    font-size: 26rpx;
    text-align: center;
}
.main .photos-wrap .work-des {
    padding: 20rpx 15rpx;
    color: #999;
    line-height: 1.4;
    word-wrap: break-word;
}

/* 快拍  */
.btn-fastphoto {
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    bottom: 40rpx;
    width: 140rpx;
    height: 60rpx;
    line-height: 60rpx;
    text-align: center;
    border-radius: 30rpx;
    color: #fff;
    font-size: 34rpx;
    box-shadow: 0px 0px 10px #1397dc;
    background: #01bef5
}
/* 加载更多 */
.finish {
    background: #f5f5f5;
}
三、js页面代码如下:
import {
  initDateRange,
  changeDate,
  getSelectDayTopPhoto, getCurrentTopPhoto, getPreTopPhoto, getNextTopPhoto,
  getSelectDayPhotos, getCurrentPhotos, getPrevPhotos, getNextPhotos
} from '../../actions'
import addPhoto from '../../util/addPhoto'
import getRoute from '../../util/getRoute'
import isEmptyObj from '../../util/isEmptyObj'
import packingRequest from '../../util/packingRequest'
import getAsynUserData from '../../util/getAsynUserData'

import Load from '../../components/load/load'
import sliderFunc from '../../components/slider/slider'

const app = getApp();
const root = app.host.root;
const root_images = app.host.root_images;

const store = app.store;
const root_reducer = store.getState();
const dispatch = store.dispatch;

const url = {
  photos: root + 'v1/fastphoto',
  top: root + 'v1/fastphoto/top'
}

let next_id;

Page({
  data: {
    top_photo: root_reducer.top_photo,
    photos: [],
    date: root_reducer.date,
    about_url: root_reducer.about_url,
    date_range: root_reducer.date_range,

    // 加载更多
    loadStyleData: {
      hide_loading: false,
      is_finish: false,
      has_no_data: false,
      tips: ''
    },
    is_finish: false,
    slider: root_reducer.slider,
  },
  onLoad: function () {
    var _this = this;

    _this.init();

    // 时间
    var now = Date.now();
    var now_obj = this.formatTimeStamp(now);
    now = now_obj.year + '-' + now_obj.month + '-' + now_obj.date;
    this.changeDate(now);

    // 初始化加载更多
    this.load = new Load(url.photos);
    this.loadingHandler = this.load.throttel(this.loadMore, 3000);

    // 下拉刷新
    this.is_pull_down_refresh = false;

  },
  init: function () {
    var _this = this;
    var loadStyleData = this.data.loadStyleData;
    // 快拍第一
    var p1 = this.loadTopPhoto('');
    // 投稿作品
    var p2 = this.loadPhotos('');

    return this.refreshData(p1, p2).then(res => {
      var top = res[0]
      var photos = res[1];
      var len = photos.length;
      loadStyleData.hide_loading = true;

      // 初始化加载没数据
      if (len == 0) {
        loadStyleData.has_no_data = true;
        loadStyleData.tips = '赶快来参加天天快拍活动,赢取奖金吧!';
      };

      _this.setData({
        loadStyleData: loadStyleData,
        top_photo: top,
        photos: photos
      });
      wx.hideLoading();

      return Promise.resolve(res);
    }, err => {
      var status_code = err.statusCode;

      loadStyleData.hide_loading = true;
      loadStyleData.has_no_data = true;
      loadStyleData.tips = status_code + '错误';

      _this.setData({
        loadStyleData: loadStyleData
      });
      wx.hideLoading();

      return Promise.reject(err);
    });
  },
  renderTopPhoto: function (obj) {
    var render_obj = {};
    if (!isEmptyObj(obj)) {
      var img_arr = [];

      if (Array.isArray(obj.details)) {
        obj.details.forEach(function (item) {
          var obj = {};
          obj.src = root_images + item.src;

          img_arr.push(obj);
        });
      }
      var des = this.trimStr(obj.subject);
      var opinion = this.trimStr(obj.fastphoto.remark);

      render_obj.rewards = obj.fastphoto.rewards;
      render_obj.photos = img_arr;
      render_obj.id = obj.id;
      render_obj.author = obj.user.nickname;
      render_obj.location = obj.location;
      render_obj.des = des;
      render_obj.opinion = opinion;
      render_obj.comment_count = obj.comment_count;
    }
    return render_obj;
  },
  trimStr: function (val) {
    if (typeof val == 'string') {
      return val.trim();
    }
    else {
      return '';
    }
  },
  renderPhotos: function (arr) {
    var render_arr = [];
    var _this = this;

    if (Array.isArray(arr)) {
      arr.forEach(function (item, index) {
        var obj = {};

        obj.id = item.id;
        obj.avatar = root_images + item.user.avatar;
        obj.nickname = item.user.nickname;
        obj.cover = root_images + item.cover;
        obj.count = item.count;
        obj.des = item.subject;

        render_arr.push(obj);
      });

    }

    return render_arr;
  },
  dateToDay: function (day) {
    switch (day) {
      case 0:
        return '日'
      case 1:
        return '一'
      case 2:
        return '二'
      case 3:
        return '三'
      case 4:
        return '四'
      case 5:
        return '五'
      case 6:
        return '六'
    }
  },
  renderDate: function (obj) {
    var render_date = {};
    if (!isEmptyObj(obj)) {
      var current = obj.works_date;
      var current_arr = current.split('-');
      var current_date = current_arr[2];
      var current_month = current_arr[1];

      var current_day = new Date(current).getDay();
      var pre = obj.relate.pre;
      current_day = this.dateToDay(current_day);
      render_date.start = obj.date_range.range_min;

      // 现在
      render_date.current = current;
      render_date.current_month = current_month;
      render_date.current_date = current_date;
      render_date.current_day = current_day;

      // 前一天
      if (typeof pre == 'string' && pre !== 0) {
        var pre_arr = pre.split('-');
        var pre_month = current_arr[1];
        var pre_date = pre_arr[2];
        if (current_arr[2] == '01' && typeof current_arr[2] == 'string') {
          pre_month = pre_month - 1;
          render_date.pre_month = pre_month;
        } else {
          render_date.pre_month = pre_month;
        }
        render_date.pre_date = pre_date;
      };
      render_date.pre = pre;

      // 后一天
      render_date.next = obj.relate.next;
    }

    return render_date;
  },
  renderDateRange: function (obj) {
    if (!isEmptyObj(obj)) {
      return {
        start: obj.range_min,
        end: obj.range_max
      }
    };
  },
  loadTopPhoto: function (date) {
    var _this = this;

    return packingRequest({
      url: url.top,
      data: {
        during: date
      }
    }).then(res => {
      var top = res.data;

      if (typeof top == 'object') {
        var render_top_photo = _this.renderTopPhoto(top.data.items);
        // 初始化选择日期范围
        if (!date) {
          var render_date = _this.renderDate(top.data);
          var render_date_range = _this.renderDateRange(top.data.date_range);
          dispatch(initDateRange(render_date_range));
          _this.setData({
            date_range: render_date_range,
            date: render_date
          });
        }

        return Promise.resolve(render_top_photo);
      }
    }, err => {
      console.log(err);
      return Promise.reject(err);
    });

  },
  loadPhotos: function (date) {
    var _this = this;
    return packingRequest({
      url: url.photos,
      data: {
        during: date,
        per_num: 10
      }
    }).then(res => {
      var photos = res.data.data;
      var len = photos.length;
      if (Array.isArray(photos)) {
        if (len) {
          next_id = photos[len - 1].id;
        }
        var render_photos = _this.renderPhotos(photos);
        
        return Promise.resolve(render_photos);
      }
    }, err => {
      console.log(err);
      return Promise.reject(err);
    });
  },
  loadMore: function () {
    var that = this;
    var photos = this.data.photos;
    var loadStyleData = this.data.loadStyleData;
    var current = this.data.date.current;

    this.load.loading(that, next_id, function (res, _this) {
      var arr = res.data.data;
      var len = arr.length;
      loadStyleData.hide_loading = true;

      // 判断是否浏览完毕
      if (!len) {
        _this.is_finish = true;
        loadStyleData.is_finish = true;

        return that.setData({
          loadStyleData: loadStyleData
        });
      }

      // 加载数据
      photos = photos.concat(that.renderPhotos(arr, root_images));
      next_id = photos[photos.length - 1].id;

      that.setData({
        loadStyleData: loadStyleData,
        photos: photos
      });

    }, current);
  },
  formatTimeStamp(timestamp) {
    var dt = new Date(timestamp);
    var year = dt.getFullYear();
    var month = dt.getMonth() + 1;
    var date = dt.getDate();
    if ((month > 0) && (month < 10)) {
      month = '0' + month;
    }
    if ((date > 0) && (date < 10)) {
      date = '0' + date;
    }
    var day = this.dateToDay(dt.getDay());
    return {
      year: year,
      month: month,
      date: date,
      day: day
    }
  },
  changeDate: function (value) {
    var _this = this;
    var end = store.getState().date_range.end;
    var start = store.getState().date_range.start;

    var current = value;

    var current_timestamp = new Date(current).getTime();
    var pre_timestamp = current_timestamp - 24 * 60 * 60 * 1000;
    var next_timestamp = current_timestamp + 24 * 60 * 60 * 1000;

    var current_obj = this.formatTimeStamp(current_timestamp);
    var current_month = current_obj.month;
    var current_date = current_obj.date;
    var current_day = current_obj.day;

    var pre_obj = this.formatTimeStamp(pre_timestamp);
    var pre = pre_obj.year + '-' + pre_obj.month + '-' + pre_obj.date;
    var pre_month = pre_obj.month;
    var pre_date = pre_obj.date;

    var next_obj = this.formatTimeStamp(next_timestamp);
    var next = next_obj.year + '-' + next_obj.month + '-' + next_obj.date;

    if (current == end) {
      next = 0;
    };
    if (current == start) {
      pre = 0;
    }

    if (typeof value == 'number') {
      next = 0;
    };

    _this.setData({
      date: {
        pre, pre_month, pre_date,
        current, current_month, current_date, current_day,
        next
      }
    });
  },
  getCurrent: function (date, type) {
    var _this = this;
    var today_obj = this.formatTimeStamp(Date.now());
    var today = today_obj.year + '-' + today_obj.month + '-' + today_obj.date;
    var loadStyleData = this.data.loadStyleData;

    wx.showLoading({
      mask: true
    });

    // 重置数据
    this.resetData();

    // 获取当前时间下的top1和photos
    var p1 = this.loadTopPhoto(date);
    var p2 = this.loadPhotos(date);
    this.refreshData(p1, p2).then(res => {
      var top = res[0]
      var photos = res[1];
      var len = photos.length;

      if (!type) {
        if (len == 0) {
          var title = date + '无作品,请选择其他日期查看'
          return wx.showToast({
            title: title
          });
        };
      }
      else {
        if (today == date) {
          _this.init();
        };

        if (len == 0) {
          return _this.circleGetCurrent(date, type);
        };
      }

      wx.hideLoading();
      _this.changeDate(date);
      _this.setData({
        top_photo: top,
        photos: photos,
        loadStyleData: loadStyleData
      });
    }, err => {
      wx.hideLoading();
      wx.showToast({
        title: err
      });
    });

  },
  circleGetCurrent: function (current, type) {
    var _this = this;
    var p1 = this.loadTopPhoto(current);
    var p2 = this.loadPhotos(current);
    var loadStyleData = this.data.loadStyleData;
    var today_obj = this.formatTimeStamp(Date.now());
    var today = today_obj.year + '-' + today_obj.month + '-' + today_obj.date;

    this.refreshData(p1, p2).then(res => {
      var top = res[0];
      var photos = res[1];
      var len = photos.length;

      if (len == 0 && isEmptyObj(top)) {
        var date;
        var timestamp = new Date(current).getTime();

        if (type == 'pre') {
          var pre_timestamp = timestamp - 24 * 60 * 60 * 1000;
          var pre_obj = _this.formatTimeStamp(pre_timestamp);

          date = pre_obj.year + '-' + pre_obj.month + '-' + pre_obj.date;
        }
        else if (type == 'next') {
          var next_timestamp = timestamp + 24 * 60 * 60 * 1000;
          var next_obj = _this.formatTimeStamp(next_timestamp);

          date = next_obj.year + '-' + next_obj.month + '-' + next_obj.date;
        }

        if (today == current) {
          _this.init();
        };

        _this.circleGetCurrent(date, type);
      }
      else {
        wx.hideLoading();
        _this.changeDate(current);
        return _this.setData({
          top_photo: top,
          photos: photos,
          loadStyleData: loadStyleData
        });
      }
    }, err => {
      wx.hideLoading();
      wx.showToast({
        title: err
      });
    });
  },
  resetData: function () {
    var _this = this;
    this.load.is_finish = false;
  },
  refreshData: function (p1, p2) {
    return Promise.all([p1, p2]).then(res => {
      return Promise.resolve(res);
    }, err => {
      return Promise.reject(err);
    });
  },
  getPre: function (e) {
    var current = e.target.dataset.pre;
    this.getCurrent(current, 'pre');
  },
  getSelect: function (e) {
    var current = e.detail.value;
    this.getCurrent(current);
  },
  getNext: function (e) {
    var current = e.target.dataset.next;
    this.getCurrent(current, 'next');
  },
  joinReview: function () {
    var id = this.data.top_photo.id;

    wx.navigateTo({
      url: '../../pages/review/review?id=' + id,
      success: function (res) {
      },
      fail: function (err) {
        console.log(err);
      }
    })
  },
  uploadPhoto: function () {
    var route = getRoute(this);
    addPhoto(route);
  },

  openSlider: sliderFunc.openSlider,
  closeSlider: sliderFunc.closeSlider,
  sliderNumChange: sliderFunc.sliderNumChange,
  toggleOpenExif: sliderFunc.toggleOpenExif,
  onUnload: function () {
    delete this.load;
  },
  onReachBottom: function () {
    this.loadingHandler();
  },
  onPullDownRefresh: function () {
        var _this = this;

        if (!this.is_pull_down_refresh) {
          this.is_pull_down_refresh = true;

          var date = _this.data.date.current;
          var loadStyleData = _this.data.loadStyleData;

          var p1 = this.loadTopPhoto(date);
          var p2 = this.loadPhotos(date);

          Promise.all([p1,p2]).then(arr => {
            var top_photo = arr[0];
            var photos = arr[1];

            if (loadStyleData.is_finish && _this.load.is_finish) {
              loadStyleData.is_finish = false;
              _this.load.is_finish = false;
            }
            this.setData({         
              top_photo: top_photo,
              photos: photos,
              loadStyleData: loadStyleData
            });

             wx.stopPullDownRefresh();
            _this.is_pull_down_refresh = false;

          }, err => {
            console.log(err);
            wx.stopPullDownRefresh();
            _this.is_pull_down_refresh = false;
          });
        };
  },
  onShareAppMessage: function () {
    var top = this.data.top_photo;

    var name = '米拍|天天快拍';
    var path = '/pages/index/index';

    if (!isEmptyObj(top)) {
      name = name + ' TOP1';
    }

    return {
      title: name,
      path: path
    }
  }
});

模板简介:该模板名称为【微信小程序天天快拍拍活动赢奖金首页设计制作开发教程】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【小程序教程】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 16,334次
  • 使用软件
  • 文件格式
  • 文件大小
  • 上传时间 07-30
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
自适应 微信公众平台 html5 单页式简历模板 响应式 微信模板 微信文章 微信图片 企业网站 微信素材
您可能会喜欢的其他模板