项目总结
最近做了个项目 购韩泰轮胎赢西班牙皇马之旅
附上链接:http://luckydraw.dmeww.com//wechat/index.aspx?access_token=14_-YmKTTFyLT5zQQ6PzrZWEp62EivAu0VINsOvToBJVJxwkvUNgUkwhPOhXIHD1UJE1GMOgwX1_27Xx30AZclIrQ&openid=o6SZI0xrdpBNsR2PDHJ9iMuwaalw
只支持微信端打开
总结下项目里的几个点:
1.文件上传 css input[type=file] 样式美化,input上传按钮美化
input file上传按钮的美化思路是,先把之前的按钮透明度opacity设置为0,然后,外层用div包裹,就实现了美化功能。
代码如下:
DOM结构:
<a href="javascript:;" class="a-upload">
<input type="file" name="" id="">点击这里上传文件
<span class="filename"></span>
</a>
<a href="javascript:;" class="file">选择文件
<input type="file" name="" id="">
</a>
CSS样式1:
/*a upload */
.a-upload {
padding: 4px 10px;
height: 20px;
line-height: 20px;
position: relative;
cursor: pointer;
color: #888;
background: #fafafa;
border: 1px solid #ddd;
border-radius: 4px;
overflow: hidden;
display: inline-block;
*display: inline;
*zoom: 1
}
.a-upload input {
position: absolute;
font-size: 100px;
right: 0;
top: 0;
opacity: 0;
filter: alpha(opacity=0);
cursor: pointer
}
.a-upload:hover {
color: #444;
background: #eee;
border-color: #ccc;
text-decoration: none
}
样式2:
.file {
position: relative;
display: inline-block;
background: #D0EEFF;
border: 1px solid #99D3F5;
border-radius: 4px;
padding: 4px 12px;
overflow: hidden;
color: #1E88C7;
text-decoration: none;
text-indent: 0;
line-height: 20px;
}
.file input {
position: absolute;
font-size: 100px;
right: 0;
top: 0;
opacity: 0;
}
.file:hover {
background: #AADFFD;
border-color: #78C3F3;
color: #004974;
text-decoration: none;
}
修改后如下:
样式二:
备注:对于HTML5之input:file,还可以控制上传的类型的,但是这个是html5的,低版本浏览器不支持,详情请看:HTML5的 input:file上传类型控制 http://www.haorooms.com/post/input_file_leixing
美化后显示文件名
上面美化,把默认显示的文件名也给隐藏掉了,那么如何显示文件名称呢?没关系,我们可以用jquery来获取文件的文件名。
我们可以写个change事件
$(".a-upload").on("change","input[type='file']",function(){
var filePath=$(this).val();
if(filePath.indexOf("jpg")!=-1 || filePath.indexOf("png")!=-1){
$(".fileerrorTip").html("").hide();
var arr=filePath.split('\\');
var fileName=arr[arr.length-1];
$(".showFileName").html(fileName);
}else{
$(".showFileName").html("");
$(".fileerrorTip").html("您未上传文件,或者您上传文件类型有误!").show();
return false
}
})
这里主要实现两点 一是按钮样式的自定义 二是自定义样式之后显示上传的文件名
接着说第三点 文件上传代码
function fileUpload() {
var formData = new FormData();
formData.append("myfile", document.getElementById("car-ticket").files[0]);
$.ajax({
url: "http://luckydraw.dmeww.com/wechat/api.ashx/UploadFile",
type: "POST",
data: formData,
contentType: false,//必须false才会自动加上正确的Content-Type
/**
* 必须false才会避开jQuery对 formdata 的默认处理
* XMLHttpRequest会对 formdata 进行正确的处理
*/
processData: false,
success: function (data) {
data = $.parseJSON(data);
if (data.Status == 1) {
toast("上传成功");
localStorage.setItem('fileCode', data.Data);
}
//if (data.status == "error") {
// alert(data.msg);
//}
//$("#imgWait").hide();
},
error: function (res) {
debugger;
alert("上传失败!");
//$("#imgWait").hide();
}
});
}
知识点二:video标签
1.点击播放会自动全屏
解决办法
<video src="../images/video.mp4" controls="controls" webkit-playsinline="" playsinline="" x5-playsinline="" x-webkit-airplay="allow" class="video" id="video">
2.播放后层级太高,这个试了几个办法,最终发现video播放时的层级无法用z-index遮住,最后解决办法是当弹层出现时设置video标签为none
3。用自己自定义的按钮实现播放功能,发现这个只能用js实现,jq没有用,不知道是不是我代码别的地方的原因
var myVideo = document.getElementById("video");
function playVid() {
myVideo.play();
}
4.当用户点击视频自带的播放按钮时,自定义按钮消失,监听播放事件
document.querySelector('video').onplay = function () {
document.querySelector('#play').style.display = "none";
};
微信分享功能,这里主要是调用微信的sdk 引用jweixin-1.0.0.js,这里帖下自己的代码
$(function () {
var title = "购韩泰轮胎,赢西班牙皇马之旅!";
var desc = "";
var link = "http://luckydraw.dmeww.com/wechat/index.html"//$.ActivityUrl + 'index.aspx';
var shareicon = "";//$.ActivityUrl + 'images/shareicon.jpg';
$.ajax({
url: 'http://luckydraw.dmeww.com/wechat/api.ashx/jssdk?para=jsapi&apiurl=' + encodeURIComponent(location.href),
type: 'POST',
data: {},
dataType: 'html',
success: function (result) {
//result = JSON.parse(result);
result = $.parseJSON(result);
if (result.Status === 1) {
var json = result.Data;
wx.config({
debug: true,
appId: json.appId,
timestamp: json.timestamp,
nonceStr: json.nonceStr,
signature: json.signature,
jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareWeibo", "scanQRCode"]
});
wx.ready(function () {
wx.onMenuShareTimeline({ //分享朋友圈
title: title,
desc: desc,
link: link,
imgUrl: shareicon,
success: function () {
},
cancel: function () {
alert("分享好友圈取消")
}
});
wx.onMenuShareAppMessage({ //分享给朋友
title: title,
desc: desc,
link: link,
imgUrl: shareicon, // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
},
cancel: function () {}
});
});
wx.error(function (res) {
alert(res);
});
}
}
});
});
4.微信扫一扫功能 这里主要是调用微信的sdk 引用jweixin-1.0.0.js,这里帖下自己的代码
$("#btn_scan1").click(function () {
var that = $(this);
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
$("#car-ma1").val(result);
}
});
})
5.获取url参数
$.getQueryString = function (name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
做的过程是各种不耐烦 做过之后其实你会发现那一段不太顺利的时期其实都是你经历的增值期,很多时候我觉得我没有什么天分,所以就要督促自己多联系多总结,与君共勉。