目录

前言

一、效果展示

二、主要代码

1.wxml主要代码:

2.wxss主要代码

3.js主要代码

4.app.js主要代码

三、实现思路及注意点

1.洗牌功能实现方法

2.翻牌功能实现方式

3.分享页面获取抽奖次数实现方式

4.为何将Times和MyPrices设置为全局变量

说明



前言

利用css动画完成重新洗牌以及翻牌的动画效果,能够通过分享页面获取翻牌次数,以及查看获得的奖品

一、效果展示

二、主要代码

1.wxml主要代码:

<view class="LUCKY-TEXT"><view class="LUCKY-TEXT-Nav"><text decode>翻牌赢大奖&nbsp;</text></view>              <view class="LUCKY-TEXT-Box"><text class="LUCKY-TEXT-Times" decode>&nbsp;翻牌次数:&nbsp;{{times}}次&nbsp;</text><text class="LUCKY-TEXT-Times" style="color: rgb(236, 143, 21);" decode bindtap="GETMORETIMES">&nbsp;获取次数&nbsp;</text><text class="LUCKY-TEXT-PRICES" decode bindtap="ShowLuckyBox">&nbsp;我的奖品&nbsp;</text></view>
</view>
<view class="Restart" bindtap="ReStartCard" style="background: {{RSB1}};"><text style="color: {{RST1}};">重新发牌</text>
</view>
<view class="LUCKY-BOX"><block wx:for="{{9}}"><view class="LBOX {{Position[index].PC}} {{Position[index].FZ}}" style="background-image: {{BGColor[index].color}}; top: {{Position[index].top}}; left: {{Position[index].left}}" bindtap="CLICKCARD" data-id="{{index}}">  <text class="LBOX-TEXT" wx:if="{{Position[index].TIF}}">点我翻牌</text>         <image src="{{NowPresent[index].src}}" class="LBOX-IMA" wx:if="{{NowPresent[index].IF}}"></image>    </view></block></view>
<view class="LUCKY-PRICES-BOX" wx:if="{{MyPrices_Box}}"><image src="/images/20-57-13.png" class="LPB-IMA1"></image><image src="/images/none.png" class="LPB-IMA2"></image><image src="/images/QUIT.png" class="LPB-IMA3" bindtap="CloseLuckyBox"></image><text class="LPB-Title" decode>&nbsp;获奖记录&nbsp;</text><view class="LPB-Scroll-Box"><scroll-view class="LPB-Scroll" scroll-y><block wx:if="{{MyPrices.length == 0}}"><text>暂无获奖数据</text></block><block wx:else><view wx:for="{{MyPrices}}"><text>{{item}}</text></view></block></scroll-view></view>
</view>

2.wxss主要代码

/* pages/FanPai/FanPai.wxss */
page{background-image: linear-gradient(45deg, #45b7da, #13eb49);
}.LUCKY-TEXT{width: 100%;height: 200rpx;margin-top: 50rpx;
}.LUCKY-BOX{position: relative;width: 600rpx;height: 600rpx;margin: 0 auto;border-radius: 50rpx;box-shadow: 4rpx 4rpx 8rpx 6rpx rgba(85, 85, 85, 0.40);-webkit-box-shadow: 2px 2px 4px 3px rgba(85, 85, 85, 0.40); background: rgba(121,45,179,0.2);  overflow: hidden;margin-top: 50rpx;
}.LBOX{position: absolute;width: 180rpx;height: 180rpx;border-radius: 50rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.40);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.4);overflow: hidden;
}.CHOUJIANG{width: 170rpx;height: 170rpx;
}.LB-IMA{width: 100rpx;height: 100rpx;margin-top: 35rpx;margin-left: 35rpx;
}.LUCKY-TEXT-Nav{width: 430rpx;height: 105rpx;margin: 0 auto;position: relative;top: 15rpx;border-radius: 30rpx;background-image: linear-gradient(45deg, #cde981, #1ce4a1);box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.40);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.4);
}.LUCKY-TEXT-Nav text{color: rgb(243, 247, 13);font-size: 80rpx;font-style:oblique;font-weight: bold;text-shadow: 5px 5px 5px #e25542;position: relative;top: -10rpx;
}.LUCKY-TEXT-Box{position: relative;width: 100%;height: 55rpx;top: 35rpx;
}.LUCKY-TEXT-Times{font-size: 28rpx;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;font-weight: bold;color: red;margin-left: 15rpx;border-radius: 15rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.40);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.4);
}.LUCKY-TEXT-PRICES{font-size: 28rpx;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;font-weight: bold;color: rgb(38, 155, 233);float: right;margin-right: 15rpx;border-radius: 15rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.40);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.4);
}.LUCKY-PRICES-BOX{width: 300rpx;height: 400rpx;background: white;position: absolute;top: 250rpx;left: 225rpx;border-radius: 30rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.40);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.4);overflow: hidden;z-index: 10;
}.LPB-IMA1{position: absolute;top: 0rpx;right: 0rpx;width: 221rpx;height: 220rpx;
}.LPB-IMA2{position: absolute;bottom: 0rpx;width: 300rpx;height: 210rpx;
}.LPB-IMA3{position: absolute;top: 10rpx;right: 10rpx;width: 34rpx;height: 34rpx;
}.LPB-Title{position: relative;top: 23rpx;left: 70rpx;color: #20B2AA;font-size: 36rpx;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;font-weight: bold;border-radius: 30rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.50);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.5);
}.LPB-Scroll-Box{width: 70%;height: 65%;position: relative;top: 15%;left: 15%;
}.LPB-Scroll{width: 100%;height: 100%;text-align: center;color: #B0C4DE;border-radius: 20rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.70);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.7);
}.LPB-Scroll text{color: #778899;font-size: 26rpx;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}.Restart{width: 300rpx;height: 100rpx;margin: 0 auto;border-radius: 20rpx;box-shadow: 4rpx 4rpx 16rpx 8rpx rgba(85, 85, 85, 0.10);-webkit-box-shadow: 2px 2px 8px 4px rgba(39, 38, 38, 0.1);text-align: center;
}.Restart text{font-size: 40rpx;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;font-weight: bold;position: relative;top: 20rpx;
}.contin0{animation: contin0 alternate linear 2 0.5s;}@keyframes contin0{from {top: 15rpx;left: 15rpx;}to {top: 210rpx;left: 210rpx;}}.contin1{animation: contin1 alternate linear 2 0.5s;}@keyframes contin1{from {top: 15rpx;left: 210rpx;}to {top: 210rpx;left: 210rpx;}}.contin2{animation: contin2 alternate linear 2 0.5s;}@keyframes contin2{from {top: 15rpx;left: 405rpx;}to {top: 210rpx;left: 210rpx;}}.contin3{animation: contin3 alternate linear 2 0.5s;}@keyframes contin3{from {top: 210rpx;left: 15rpx;}to {top: 210rpx;left: 210rpx;}}.contin5{animation: contin5 alternate linear 2 0.5s;}@keyframes contin5{from {top: 210rpx;left: 405rpx;}to {top: 210rpx;left: 210rpx;}}.contin6{animation: contin6 alternate linear 2 0.5s;}@keyframes contin6{from {top: 405rpx;left: 15rpx;}to {top: 210rpx;left: 210rpx;}}.contin7{animation: contin7 alternate linear 2 0.5s;}@keyframes contin7{from {top: 405rpx;left: 210rpx;}to {top: 210rpx;left: 210rpx;}}.contin8{animation: contin8 alternate linear 2 0.5s;}@keyframes contin8{from {top: 405rpx;left: 405rpx;}to {top: 210rpx;left: 210rpx;}}.fanzhuan{animation: fanzhuan 1.2s;}@keyframes fanzhuan{0% {transform: rotateY(0deg);} 50% {transform: rotateY(0deg);} 100% {transform: rotateY(179.9deg);}}.LBOX-TEXT{position: absolute;top: 70rpx;left: 23rpx;color: white;font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;font-size: 34rpx;
}.LBOX-IMA{width: 70rpx;height: 70rpx;position: absolute;top: 55rpx;left: 55rpx;
}

3.js主要代码

// pages/FanPai/FanPai.js
var app = getApp();
Page({/*** 页面的初始数据*/data: {BGColor: [{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},{color: "linear-gradient(45deg, #0081ff, #1cbbb4);"},],Position:[{top: "15rpx", left: "15rpx", PC: "", PC1: "contin0", FZ: "", TIF: true},{top: "15rpx", left: "210rpx", PC: "", PC1: "contin1", FZ: "", TIF: true},{top: "15rpx", left: "405rpx", PC: "", PC1: "contin2", FZ: "", TIF: true},{top: "210rpx", left: "15rpx", PC: "", PC1: "contin3", FZ: "", TIF: true},{top: "210rpx", left: "210rpx", PC: "", PC1: "contin4", FZ: "", TIF: true},{top: "210rpx", left: "405rpx", PC: "", PC1: "contin5", FZ: "", TIF: true},{top: "405rpx", left: "15rpx", PC: "", PC1: "contin6", FZ: "", TIF: true},{top: "405rpx", left: "210rpx", PC: "", PC1: "contin7", FZ: "", TIF: true},{top: "405rpx", left: "405rpx", PC: "", PC1: "contin8", FZ: "", TIF: true},],Present: [{src: "/images/08-55-33.png", text: "谢谢惠顾", flag: false, IF: false},{src: "/images/08-55-33.png", text: "谢谢惠顾", flag: false, IF: false},{src: "/images/08-55-33.png", text: "谢谢惠顾", flag: false, IF: false},{src: "/images/09-10-01.png", text: "一筐胡萝卜 * 1", flag: false, IF: false},{src: "/images/09-10-25.png", text: "鸿星尔克跑鞋 * 1", flag: false, IF: false},{src: "/images/09-10-34.png", text: "三元红包 * 1", flag: false, IF: false},{src: "/images/09-10-34.png", text: "五元红包 * 1", flag: false, IF: false},{src: "/images/09-01-58.png", text: "博物馆门票 * 1", flag: false, IF: false},{src: "/images/09-24-08.png", text: "随机纪念品 * 1", flag: false, IF: false},],Flag: false,     //标志位,表示还未开始翻牌times: 0,        //当前抽奖次数MyPrices: [],     //获得的奖品NowPresent: [],        //每张票背后的奖品(重新发牌后)MyPrices_Box: false,RSB1: "#8470FF",RST1: "#FFD700"},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {//获取全局的翻牌次数以及获奖记录this.setData({times: app.globalData.Times,MyPrices: app.globalData.MyPrices,NowPresent: this.data.Present})//打乱奖品var a = []for(let i = 0; i < 9; i++){let flag = true;let num = -1;while(flag){num = parseInt(Math.random() * 9);if(this.data.Present[num].flag == false){var S = this.data.Present[num];a.push(S);flag = false;var temp = "Present[" + num + "].flag";this.setData({[temp]: true})}}}this.setData({NowPresent: a})for(let i = 0; i < 9; i++){var temp = "Present[" + i + "].flag";this.setData({[temp]: false})}},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {wx.hideHomeButton()     //隐藏默认返回按钮},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {var T = this.data.times + 3;this.setData({times: T})app.globalData.Times = T;   //更新全局变量return {title: "翻牌赢大奖",    //转发的标题,默认是小程序的名称desc: "转发赢大奖",path: "/pages/FanPai/FanPai"    // 默认是当前页面,必须是以‘/’开头的完整路径,分享当前页面}},GETMORETIMES() {wx.showToast({          //提示中奖信息title: '分享该页面获取更多次数',icon: 'none',duration: 5000})},ShowLuckyBox() {this.setData({MyPrices_Box: true})},CloseLuckyBox() {this.setData({MyPrices_Box: false})},ReStartCard() {for(let i = 0; i < 9; i++)          //初始化{var T1 = "Position[" + i + "].FZ";var T2 = "BGColor[" + i + "].color";var T3 = "Position[" + i + "].TIF";var T4 = "NowPresent[" + i + "].IF";this.setData({[T1]: "",[T2]: "linear-gradient(45deg, #0081ff, #1cbbb4)",[T3]: true,[T4]: false})}this.setData({Flag: false})var that = this;this.setData({RSB1: "#FFD700",RST1: "#8470FF"})for(let i = 0; i < 9; i++){var temp = "Position[" + i + "].PC";var S = this.data.Position[i].PC1;this.setData({[temp]: S,})}setTimeout(function () {that.setData({RSB1: "#8470FF",RST1: "#FFD700"})for(let i = 0; i < 9; i++){var temp = "Position[" + i + "].PC";that.setData({[temp]: "",})}         }, 1000)//打乱奖品var a = []for(let i = 0; i < 9; i++){let flag = true;let num = -1;while(flag){num = parseInt(Math.random() * 9);if(this.data.Present[num].flag == false){var S = this.data.Present[num];a.push(S);flag = false;var temp = "Present[" + num + "].flag";this.setData({[temp]: true})}}}this.setData({NowPresent: a})for(let i = 0; i < 9; i++){var temp = "Present[" + i + "].flag";this.setData({[temp]: false})}},CLICKCARD(e) {if(this.data.Flag == true)      //如果已经翻了牌return ;if(this.data.times <= 0){wx.showToast({title: '次数不足',icon: 'error',duration: 3000})return ;}var TIMES = this.data.times - 1;this.setData({times: TIMES})app.globalData.QFTimes = TIMES;var that = this;let index = e.currentTarget.dataset.id;var temp1 = "Position[" + index + "].FZ";var temp2 = "BGColor[" + index + "].color";var textIF = "Position[" + index + "].TIF";var IMAIF = "NowPresent[" + index + "].IF";this.setData({          //翻转选中的牌[temp1]: "fanzhuan",Flag: true})setTimeout(function() {     //延时变色that.setData({[temp2]: "linear-gradient(45deg, #e1e41b, #e9260d)",[textIF]: false})}, 800)setTimeout(function() {     //延时显示图片that.setData({[IMAIF]: true})}, 1200)setTimeout(function() {for(let i = 0; i < 9; i++){if(i != index){var temp3 = "Position[" + i + "].FZ";that.setData({[temp3]: "fanzhuan"})}}}, 1300)setTimeout(function() {for(let i = 0; i < 9; i++){if(i != index){var textIF2 = "Position[" + i + "].TIF"var temp4 = "BGColor[" + i + "].color";that.setData({[temp4]: "linear-gradient(45deg, #cde981, #1ce4a1);",[textIF2]: false})}}}, 2100)setTimeout(function() {for(let i = 0; i < 9; i++){if(i != index){var IMAIF2 = "NowPresent[" + i + "].IF";that.setData({[IMAIF2]: true})}}}, 2700)setTimeout(function() {if(that.data.NowPresent[index].text == "谢谢惠顾"){wx.showToast({title: '很遗憾您未中奖',icon: 'error',duration: 3000})}else{wx.showToast({          //提示中奖信息title: '恭喜您获得: '+ that.data.NowPresent[index].text,icon: 'none',duration: 5000})var S = that.data.NowPresent[index].text;var prices = that.data.MyPrices;prices.push(S);that.setData({MyPrices: prices})app.globalData.MyPrices = prices;       //更新全局变量}}, 2800)}
})

4.app.js主要代码

​​

// app.js
App({onLaunch() {// 展示本地存储能力const logs = wx.getStorageSync('logs') || []logs.unshift(Date.now())wx.setStorageSync('logs', logs)// 登录wx.login({success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionId}})},globalData: {userInfo: null,Times: 0,        //当前翻牌次数MyPrices: [],    //翻牌获得的奖品}
})

三、实现思路及注意点

1.洗牌功能实现方法

洗牌功能实现的主要思路是给9个“牌”设置css样式,通过设置点击事件,动态改变“牌”的class属性(利用数据动态绑定实现),通过改变“牌”的位置,实现洗牌时四周的牌向中间靠拢。

例如:

.contin0{animation: contin0 alternate linear 2 0.5s;
}
@keyframes contin0{from {top: 15rpx;left: 15rpx;}to {top: 210rpx;left: 210rpx;}
}

当左上角的“牌”的class属性切换为contin0,将实现“牌”从左上角向中间移动,再回到左上角,完成洗牌后,再将class属性切换为其他样式(只有切换样式时,才会产生动画效果,如果不改变样式,下次洗牌时,contin0切换成contin0将无法实现动画效果)

2.翻牌功能实现方式

翻牌功能则是通过3D转换,将“牌”翻转。

当翻了一张“牌”后,通过设置setTimeout定时器延时显示奖品(当然也可以在.fanzhuan属性中设置perspective属性,使其子元素获得透视效果,这样在翻转“牌”的过程中,奖品不会显示出来,不过当牌翻转完成后,奖品会有个镜像翻转的过程,使用定时器延时显示奖品则可以避免)。

最后,再设置setTimeout延时翻转其他“牌”,并延时显示奖品。

3.分享页面获取抽奖次数实现方式

通过在js界面定义onShareAppMessage函数,实现分享页面获取抽奖次数

/*** 用户点击右上角分享*/
onShareAppMessage: function () {var T = this.data.times + 3;this.setData({times: T})app.globalData.Times = T;   //更新全局变量return {title: "翻牌赢大奖",    //转发的标题,默认是小程序的名称desc: "转发赢大奖",path: "/pages/FanPai/FanPai"  // 默认是当前页面,必须是以‘/’开头的完整路径,分享当前页面}
}

4.为何将Times和MyPrices设置为全局变量

由于一个完整的微信小程序有许多页面,如果设置为局部变量,当从翻牌赢大奖页面切换到其他页面,再切换回该页面时,翻牌次数和奖品记录将被重新初始化。如果设置为全局变量,每次载入翻牌赢大奖页面时,通过onLoad函数获取app.js中的Times和Myprices,获取之前的翻牌次数和奖品记录,防止记录丢失(当然直接写入数据库比较方便,此处不讨论数据库的存取)。

onLoad: function (options) {//获取全局的翻牌次数以及获奖记录this.setData({times: app.globalData.Times,MyPrices: app.globalData.MyPrices,NowPresent: this.data.Present})//打乱奖品var a = []for(let i = 0; i < 9; i++){let flag = true;let num = -1;while(flag){num = parseInt(Math.random() * 9);if(this.data.Present[num].flag == false){var S = this.data.Present[num];a.push(S);flag = false;var temp = "Present[" + num + "].flag";this.setData({[temp]: true})}}}this.setData({NowPresent: a})for(let i = 0; i < 9; i++){var temp = "Present[" + i + "].flag";this.setData({[temp]: false})}
}

说明

本人学习微信小程序时间尚短(只有暑假十多天的课外实训学习),该功能是我的微信小程序结课项目中的一个部分,对于微信小程序还没有足够的学习,部分地方可能写的不对,欢迎大佬们纠错指正。

微信小程序——翻牌抽奖功能相关推荐

  1. IVX低代码平台开发——微信小程序实现抽奖功能

    写在前面 通过利用可视化编程实现微信小程序的抽奖功能,带大家初步了解 iVX 的强大之处. 文章目录 写在前面 iVX开发 抽奖功能实现 iVX开发 基本介绍 iVX是一个 "零代码&quo ...

  2. 黯然微信小程序杂记(三):微信小程序实现倒计时功能 附讲解教学 附源码

    黯然微信小程序杂记(三):微信小程序实现倒计时功能 附超详细注释 附源码 一.功能描述 二.界面展示 三.test.wxml代码 四.test.js代码(注释很详细 很易懂) CSDN私信我,有关微信 ...

  3. 微信小程序实战 购物车功能

    代码地址如下: http://www.demodashi.com/demo/12400.html 一.准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com ...

  4. 微信小程序实现语音识别功能

    原标题:微信小程序实现语音识别功能 使用小程序实现语音识别功能,由于语音识别可以直接使用各厂家的API接口,并且小程序为腾讯所有,因此考虑到可能的低延时,采用了腾讯提供的免费API接口,准确讲是腾讯语 ...

  5. 微信小程序语音识别java_微信小程序实现语音识别功能

    原标题:微信小程序实现语音识别功能 使用小程序实现语音识别功能,由于语音识别可以直接使用各厂家的API接口,并且小程序为腾讯所有,因此考虑到可能的低延时,采用了腾讯提供的免费API接口,准确讲是腾讯语 ...

  6. 微信小程序拼团功能页面展示

    微信小程序拼团功能页面展示 一.拼团功能 拼团就是让消费者在优惠价格的吸引下,自发邀请好友组团,以优惠的价格购买商品的促销活动 二.拼团功能的作用 1.与纯粹的购物相比,这种营销方式迎合了大多数用户的 ...

  7. 微信小程序原生开发功能合集一:微信小程序开发介绍

    一.专栏介绍   本专栏主要内容为微信小程序常用功能开发过程的介绍说明,包括开发微信小程序常用组件的封装.常用功能的开发等,提供源代码.开发过程讲解视频.完整的课程等.   组件封装: 下拉选择组件. ...

  8. 微信小程序-001-抽签功能-006-我的抽签-主界面

    微信小程序-001-抽签功能-006-我的抽签-主界面 目录 一.wxml 二.js pages.chouqian.setqian.setqian 一.wxml <view wx:for=&qu ...

  9. 微信小程序与卡券功能小结

    微信小程序与卡券功能小结 前段时间公司有一个微信小程序的项目,其中有与卡券打通的功能,但是微信的官方文档实在是一言难尽...找了很多资料才解决这个问题,其中涉及到卡券的领取,卡券的核销等,在这里做一个 ...

最新文章

  1. 技术10期:什么是Kafka?【全解析】
  2. LNMP架构——OpenResty实现缓存前移(到达Nginx前端层面)
  3. nf_conntrack: table full, dropping packet 解决方案
  4. 分享Kali Linux 2016.2第36周镜像虚拟机
  5. 2021年12届蓝桥杯C++B组省赛
  6. QDoc支持衍生项目
  7. 几个常用shell脚本命令
  8. 如何让apache支持.htaccess 解决Internal Server Error The server …错误
  9. P7443-加边【博弈论】
  10. 企业开发--React 中的this使用
  11. 智睿学校网上评课系统 v8.8.4源码
  12. 论文写作——latex三线表tabular*文本居中与正文两端对齐、标题加黑
  13. WMS备货单保存后自动新增选项不勾选
  14. 基于51单片机的数字电流电压表
  15. p6spy 非常典型 启用SQL日志
  16. 重学java——倒叙遍历
  17. 2015年动漫电影观影指南值得收藏
  18. 读iOS开发进阶有感
  19. 2021 年高教社杯全国大学生数学建模竞赛 E 题 中药材的鉴别 第一题
  20. matlab机械臂运动仿真

热门文章

  1. 泰凌微8258入门教程 基础篇⑨——MAC地址的初始化
  2. 前端遇到的问题及解决办法
  3. 计算机5个函数,计算机常用函数表(5页)-原创力文档
  4. linux备份华为交换机,利用expect脚本实现备份华为交换机配置之(一)
  5. 决战平安京怎么在电脑上玩 决战平安京模拟器教程
  6. windows下cmd使用wget命令
  7. 中国著名书法家李云生作品获国内外青睐,长幅作品获拍185万
  8. oppo android9.0,OPPO新机搭载Android9.0,跑分曝光
  9. kd tree python_Python实现KNN与KDTree
  10. iOS/Android开发地图SDK列表