JavaScript常用工具方法封装
因为工作中经常用到这些方法,所有便把这些方法进行了总结。
JavaScript
1.type类型判断
isString(o){//是否字符串
returnObject.prototype.toString.call(o).slice(8,-1)==='String'
}
isNumber(o){//是否数字
returnObject.prototype.toString.call(o).slice(8,-1)==='Number'
}
isBoolean(o){//是否boolean
returnObject.prototype.toString.call(o).slice(8,-1)==='Boolean'
}
isFunction(o){//是否函数
returnObject.prototype.toString.call(o).slice(8,-1)==='Function'
}
isNull(o){//是否为null
returnObject.prototype.toString.call(o).slice(8,-1)==='Null'
}
isUndefined(o){//是否undefined
returnObject.prototype.toString.call(o).slice(8,-1)==='Undefined'
}
isObj(o){//是否对象
returnObject.prototype.toString.call(o).slice(8,-1)==='Object'
}
isArray(o){//是否数组
returnObject.prototype.toString.call(o).slice(8,-1)==='Array'
}
isDate(o){//是否时间
returnObject.prototype.toString.call(o).slice(8,-1)==='Date'
}
isRegExp(o){//是否正则
returnObject.prototype.toString.call(o).slice(8,-1)==='RegExp'
}
isError(o){//是否错误对象
returnObject.prototype.toString.call(o).slice(8,-1)==='Error'
}
isSymbol(o){//是否Symbol函数
returnObject.prototype.toString.call(o).slice(8,-1)==='Symbol'
}
isPromise(o){//是否Promise对象
returnObject.prototype.toString.call(o).slice(8,-1)==='Promise'
}
isSet(o){//是否Set对象
returnObject.prototype.toString.call(o).slice(8,-1)==='Set'
}
isFalse(o){
if(!o||o==='null'||o==='undefined'||o==='false'||o==='NaN')returntrue
returnfalse
}
isTrue(o){
return!this.isFalse(o)
}
isIos(){
varu=navigator.userAgent;
if(u.indexOf('Android')>-1||u.indexOf('Linux')>-1){//安卓手机
//return"Android";
returnfalse
}elseif(u.indexOf('iPhone')>-1){//苹果手机
//return"iPhone";
returntrue
}elseif(u.indexOf('iPad')>-1){//iPad
//return"iPad";
returnfalse
}elseif(u.indexOf('WindowsPhone')>-1){//winphone手机
//return"WindowsPhone";
returnfalse
}else{
returnfalse
}
}
isPC(){//是否为PC端
varuserAgentInfo=navigator.userAgent;
varAgents=["Android","iPhone",
"SymbianOS","WindowsPhone",
"iPad","iPod"];
varflag=true;
for(varv=0;v0){
flag=false;
break;
}
}
returnflag;
}
browserType(){
varuserAgent=navigator.userAgent;//取得浏览器的userAgent字符串
varisOpera=userAgent.indexOf("Opera")>-1;//判断是否Opera浏览器
varisIE=userAgent.indexOf("compatible")>-1&&userAgent.indexOf("MSIE")>-1&&!isOpera;//判断是否IE浏览器
varisIE11=userAgent.indexOf('Trident')>-1&&userAgent.indexOf("rv:11.0")>-1;
varisEdge=userAgent.indexOf("Edge")>-1&&!isIE;//判断是否IE的Edge浏览器
varisFF=userAgent.indexOf("Firefox")>-1;//判断是否Firefox浏览器
varisSafari=userAgent.indexOf("Safari")>-1&&userAgent.indexOf("Chrome")==-1;//判断是否Safari浏览器
varisChrome=userAgent.indexOf("Chrome")>-1&&userAgent.indexOf("Safari")>-1;//判断Chrome浏览器
if(isIE){
varreIE=newRegExp("MSIE(\\d+\\.\\d+);");
reIE.test(userAgent);
varfIEVersion=parseFloat(RegExp["$1"]);
if(fIEVersion==7)return"IE7"
elseif(fIEVersion==8)return"IE8";
elseif(fIEVersion==9)return"IE9";
elseif(fIEVersion==10)return"IE10";
elsereturn"IE7以下"//IE版本过低
}
if(isIE11)return'IE11';
if(isEdge)return"Edge";
if(isFF)return"FF";
if(isOpera)return"Opera";
if(isSafari)return"Safari";
if(isChrome)return"Chrome";
}
checkStr(str,type){
switch(type){
case'phone'://手机号码
return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
case'tel'://座机
return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
case'card'://身份证
return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
case'pwd'://密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
return/^[a-zA-Z]\w{5,17}$/.test(str)
case'postal'://邮政编码
return/[1-9]\d{5}(?!\d)/.test(str);
case'QQ'://QQ号
return/^[1-9][0-9]{4,9}$/.test(str);
case'email'://邮箱
return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
case'money'://金额(小数点2位)
return/^\d*(?:\.\d{0,2})?$/.test(str);
case'URL'://网址
return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
case'IP'://IP
return/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
case'date'://日期时间
return/^(\d{4})\-(\d{2})\-(\d{2})(\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
case'number'://数字
return/^[0-9]$/.test(str);
case'english'://英文
return/^[a-zA-Z]+$/.test(str);
case'chinese'://中文
return/^[\u4E00-\u9FA5]+$/.test(str);
case'lower'://小写
return/^[a-z]+$/.test(str);
case'upper'://大写
return/^[A-Z]+$/.test(str);
case'HTML'://HTML标记
return/<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
default:
returntrue;
}
//严格的身份证校验
isCardID(sId){
if(!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)){
alert('你输入的身份证长度或格式错误')
returnfalse
}
//身份证城市
varaCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
if(!aCity[parseInt(sId.substr(0,2))]){
alert('你的身份证地区非法')
returnfalse
}
//出生日期验证
varsBirthday=(sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2))).replace(/-/g,"/"),
d=newDate(sBirthday)
if(sBirthday!=(d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate())){
alert('身份证上的出生日期非法')
returnfalse
}
//身份证号码校验
varsum=0,
weights=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],
codes="10X98765432"
for(vari=0;i
2.Date
/**
*格式化时间
*@param{time}时间
*@param{cFormat}格式
*@return{String}字符串
*@exampleformatTime('2018-1-29','{y}/{m}/{d}{h}:{i}:{s}')//->2018/01/2900:00:00
*/
formatTime(time,cFormat){
if(arguments.length===0)returnnull
if((time+'').length===10){
time=+time*1000
}
varformat=cFormat||'{y}-{m}-{d}{h}:{i}:{s}',date
if(typeoftime==='object'){
date=time
}else{
date=newDate(time)
}
varformatObj={
y:date.getFullYear(),
m:date.getMonth()+1,
d:date.getDate(),
h:date.getHours(),
i:date.getMinutes(),
s:date.getSeconds(),
a:date.getDay()
}
vartime_str=format.replace(/{(y|m|d|h|i|s|a)+}/g,(result,key)=>{
varvalue=formatObj[key]
if(key==='a')return['一','二','三','四','五','六','日'][value-1]
if(result.length>0&&value<10){
value='0'+value
}
returnvalue||0
})
returntime_str
}
/**
*返回指定长度的月份集合
*@param{time}时间
*@param{len}长度
*@param{direction}方向:1:前几个月;2:后几个月;3:前后几个月默认3
*@return{Array}数组
*@examplegetMonths('2018-1-29',6,1)//->["2018-1","2017-12","2017-11","2017-10","2017-9","2017-8","2017-7"]
*/
getMonths(time,len,direction){
varmm=newDate(time).getMonth(),
yy=newDate(time).getFullYear(),
direction=isNaN(direction)?3:direction,
index=mm;
varcutMonth=function(index){
if(index<=len&&index>=-len){
returndirection===1?formatPre(index).concat(cutMonth(++index)):
direction===2?formatNext(index).concat(cutMonth(++index)):formatCurr(index).concat(cutMonth(++index))
}
return[]
}
varformatNext=function(i){
vary=Math.floor(i/12),
m=i%12
return[yy+y+'-'+(m+1)]
}
varformatPre=function(i){
vary=Math.ceil(i/12),
m=i%12
m=m===0?12:m
return[yy-y+'-'+(13-m)]
}
varformatCurr=function(i){
vary=Math.floor(i/12),
yNext=Math.ceil(i/12),
m=i%12,
mNext=m===0?12:m
return[yy-yNext+'-'+(13-mNext),yy+y+'-'+(m+1)]
}
//数组去重
varunique=function(arr){
if(Array.hasOwnProperty('from')){
returnArray.from(newSet(arr));
}else{
varn={},r=[];
for(vari=0;i["2018-1-26","2018-1-27","2018-1-28","2018-1-29","2018-1-30","2018-1-31","2018-2-1"]
*/
getDays(time,len,diretion){
vartt=newDate(time)
vargetDay=function(day){
vart=newDate(time)
t.setDate(t.getDate()+day)
varm=t.getMonth()+1
returnt.getFullYear()+'-'+m+'-'+t.getDate()
}
vararr=[]
if(diretion===1){
for(vari=1;i<=len;i++){
arr.unshift(getDay(-i))
}
}elseif(diretion===2){
for(vari=1;i<=len;i++){
arr.push(getDay(i))
}
}else{
for(vari=1;i<=len;i++){
arr.unshift(getDay(-i))
}
arr.push(tt.getFullYear()+'-'+(tt.getMonth()+1)+'-'+tt.getDate())
for(vari=1;i<=len;i++){
arr.push(getDay(i))
}
}
returndiretion===1?arr.concat([tt.getFullYear()+'-'+(tt.getMonth()+1)+'-'+tt.getDate()]):
diretion===2?[tt.getFullYear()+'-'+(tt.getMonth()+1)+'-'+tt.getDate()].concat(arr):arr
}
/**
*@param{s}秒数
*@return{String}字符串
*@exampleformatHMS(3610)//->1h0m10s
*/
formatHMS(s){
varstr=''
if(s>3600){
str=Math.floor(s/3600)+'h'+Math.floor(s%3600/60)+'m'+s%60+'s'
}elseif(s>60){
str=Math.floor(s/60)+'m'+s%60+'s'
}else{
str=s%60+'s'
}
returnstr
}
/*获取某月有多少天*/
getMonthOfDay(time){
vardate=newDate(time)
varyear=date.getFullYear()
varmouth=date.getMonth()+1
vardays
//当月份为二月时,根据闰年还是非闰年判断天数
if(mouth==2){
days=(year%4==0&&year%100==0&&year%400==0)||(year%4==0&&year%100!=0)?28:29
}elseif(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12){
//月份为:1,3,5,7,8,10,12时,为大月.则天数为31;
days=31
}else{
//其他月份,天数为:30.
days=30
}
returndays
}
/*获取某年有多少天*/
getYearOfDay(time){
varfirstDayYear=this.getFirstDayOfYear(time);
varlastDayYear=this.getLastDayOfYear(time);
varnumSecond=(newDate(lastDayYear).getTime()-newDate(firstDayYear).getTime())/1000;
returnMath.ceil(numSecond/(24*3600));
}
/*获取某年的第一天*/
getFirstDayOfYear(time){
varyear=newDate(time).getFullYear();
returnyear+"-01-0100:00:00";
}
/*获取某年最后一天*/
getLastDayOfYear(time){
varyear=newDate(time).getFullYear();
vardateString=year+"-12-0100:00:00";
varendDay=this.getMonthOfDay(dateString);
returnyear+"-12-"+endDay+"23:59:59";
}
/*获取某个日期是当年中的第几天*/
getDayOfYear(time){
varfirstDayYear=this.getFirstDayOfYear(time);
varnumSecond=(newDate(time).getTime()-newDate(firstDayYear).getTime())/1000;
returnMath.ceil(numSecond/(24*3600));
}
/*获取某个日期在这一年的第几周*/
getDayOfYearWeek(time){
varnumdays=this.getDayOfYear(time);
returnMath.ceil(numdays/7);
}
3.Array
/*判断一个元素是否在数组中*/
contains(arr,val){
returnarr.indexOf(val)!=-1?true:false;
}
/**
*@param{arr}数组
*@param{fn}回调函数
*@return{undefined}
*/
each(arr,fn){
fn=fn||Function;
vara=[];
varargs=Array.prototype.slice.call(arguments,1);
for(vari=0;i{
switch(type){
case1:
returna-b;
case2:
returnb-a;
case3:
returnMath.random()-0.5;
default:
returnarr;
}
})
}
/*去重*/
unique(arr){
if(Array.hasOwnProperty('from')){
returnArray.from(newSet(arr));
}else{
varn={},r=[];
for(vari=0;i-1){
arr.splice(index,1);
}
returnarr;
}
/*将类数组转换为数组的方法*/
formArray(ary){
vararr=[];
if(Array.isArray(ary)){
arr=ary;
}else{
arr=Array.prototype.slice.call(ary);
};
returnarr;
}
/*最大值*/
max(arr){
returnMath.max.apply(null,arr);
}
/*最小值*/
min(arr){
returnMath.min.apply(null,arr);
}
/*求和*/
sum(arr){
returnarr.reduce((pre,cur)=>{
returnpre+cur
})
}
/*平均值*/
average(arr){
returnthis.sum(arr)/arr.length
}
4.String字符串操作
/**
*去除空格
*@param{str}
*@param{type}
*type:1-所有空格2-前后空格3-前空格4-后空格
*@return{String}
*/
trim(str,type){
type=type||1
switch(type){
case1:
returnstr.replace(/\s+/g,"");
case2:
returnstr.replace(/(^\s*)|(\s*$)/g,"");
case3:
returnstr.replace(/(^\s*)/g,"");
case4:
returnstr.replace(/(\s*$)/g,"");
default:
returnstr;
}
}
/**
*@param{str}
*@param{type}
*type:1:首字母大写2:首页母小写3:大小写转换4:全部大写5:全部小写
*@return{String}
*/
changeCase(str,type){
type=type||4
switch(type){
case1:
returnstr.replace(/\b\w+\b/g,function(word){
returnword.substring(0,1).toUpperCase()+word.substring(1).toLowerCase();
});
case2:
returnstr.replace(/\b\w+\b/g,function(word){
returnword.substring(0,1).toLowerCase()+word.substring(1).toUpperCase();
});
case3:
returnstr.split('').map(function(word){
if(/[a-z]/.test(word)){
returnword.toUpperCase();
}else{
returnword.toLowerCase()
}
}).join('')
case4:
returnstr.toUpperCase();
case5:
returnstr.toLowerCase();
default:
returnstr;
}
}
/*
检测密码强度
*/
checkPwd(str){
varLv=0;
if(str.length<6){
returnLv
}
if(/[0-9]/.test(str)){
Lv++
}
if(/[a-z]/.test(str)){
Lv++
}
if(/[A-Z]/.test(str)){
Lv++
}
if(/[\.|-|_]/.test(str)){
Lv++
}
returnLv;
}
/*过滤html代码(把<>转换)*/
filterTag(str){
str=str.replace(/&/ig,"&");
str=str.replace(//ig,">");
str=str.replace(""," ");
returnstr;
}
5.Number
/*随机数范围*/
random(min,max){
if(arguments.length===2){
returnMath.floor(min+Math.random()*((max+1)-min))
}else{
returnnull;
}
}
/*将阿拉伯数字翻译成中文的大写数字*/
numberToChinese(num){
varAA=newArray("零","一","二","三","四","五","六","七","八","九","十");
varBB=newArray("","十","百","仟","萬","億","点","");
vara=(""+num).replace(/(^0*)/g,"").split("."),
k=0,
re="";
for(vari=a[0].length-1;i>=0;i--){
switch(k){
case0:
re=BB[7]+re;
break;
case4:
if(!newRegExp("0{4}//d{"+(a[0].length-i-1)+"}$")
.test(a[0]))
re=BB[4]+re;
break;
case8:
re=BB[5]+re;
BB[7]=BB[5];
k=0;
break;
}
if(k%4==2&&a[0].charAt(i+2)!=0&&a[0].charAt(i+1)==0)
re=AA[0]+re;
if(a[0].charAt(i)!=0)
re=AA[a[0].charAt(i)]+BB[k%4]+re;
k++;
}
if(a.length>1)//加上小数部分(如果有小数部分)
{
re+=BB[6];
for(vari=0;i=0;i--){
if(part[0].length>10){
return"";
//若数量超过拾亿单位,提示
}
vartmpnewchar=""
varperchar=part[0].charAt(i);
switch(perchar){
case"0":
tmpnewchar="零"+tmpnewchar;
break;
case"1":
tmpnewchar="壹"+tmpnewchar;
break;
case"2":
tmpnewchar="贰"+tmpnewchar;
break;
case"3":
tmpnewchar="叁"+tmpnewchar;
break;
case"4":
tmpnewchar="肆"+tmpnewchar;
break;
case"5":
tmpnewchar="伍"+tmpnewchar;
break;
case"6":
tmpnewchar="陆"+tmpnewchar;
break;
case"7":
tmpnewchar="柒"+tmpnewchar;
break;
case"8":
tmpnewchar="捌"+tmpnewchar;
break;
case"9":
tmpnewchar="玖"+tmpnewchar;
break;
}
switch(part[0].length-i-1){
case0:
tmpnewchar=tmpnewchar+"元";
break;
case1:
if(perchar!=0)tmpnewchar=tmpnewchar+"拾";
break;
case2:
if(perchar!=0)tmpnewchar=tmpnewchar+"佰";
break;
case3:
if(perchar!=0)tmpnewchar=tmpnewchar+"仟";
break;
case4:
tmpnewchar=tmpnewchar+"万";
break;
case5:
if(perchar!=0)tmpnewchar=tmpnewchar+"拾";
break;
case6:
if(perchar!=0)tmpnewchar=tmpnewchar+"佰";
break;
case7:
if(perchar!=0)tmpnewchar=tmpnewchar+"仟";
break;
case8:
tmpnewchar=tmpnewchar+"亿";
break;
case9:
tmpnewchar=tmpnewchar+"拾";
break;
}
varnewchar=tmpnewchar+newchar;
}
//小数点之后进行转化
if(Num.indexOf(".")!=-1){
if(part[1].length>2){
//alert("小数点之后只能保留两位,系统将自动截断");
part[1]=part[1].substr(0,2)
}
for(i=0;i
6.Http
/**
*@param{setting}
*/
ajax(setting){
//设置参数的初始值
varopts={
method:(setting.method||"GET").toUpperCase(),//请求方式
url:setting.url||"",//请求地址
async:setting.async||true,//是否异步
dataType:setting.dataType||"json",//解析方式
data:setting.data||"",//参数
success:setting.success||function(){},//请求成功回调
error:setting.error||function(){}//请求失败回调
}
//参数格式化
functionparams_format(obj){
varstr=''
for(variinobj){
str+=i+'='+obj[i]+'&'
}
returnstr.split('').slice(0,-1).join('')
}
//创建ajax对象
varxhr=newXMLHttpRequest();
//连接服务器open(方法GET/POST,请求地址,异步传输)
if(opts.method=='GET'){
xhr.open(opts.method,opts.url+"?"+params_format(opts.data),opts.async);
xhr.send();
}else{
xhr.open(opts.method,opts.url,opts.async);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(opts.data);
}
/*
**每当readyState改变时,就会触发onreadystatechange事件
**readyState属性存储有XMLHttpRequest的状态信息
**0:请求未初始化
**1:服务器连接已建立
**2:请求已接受
**3:请求处理中
**4:请求已完成,且相应就绪
*/
xhr.onreadystatechange=function(){
if(xhr.readyState===4&&(xhr.status===200||xhr.status===304)){
switch(opts.dataType){
case"json":
varjson=JSON.parse(xhr.responseText);
opts.success(json);
break;
case"xml":
opts.success(xhr.responseXML);
break;
default:
opts.success(xhr.responseText);
break;
}
}
}
xhr.onerror=function(err){
opts.error(err);
}
}
/**
*@param{url}
*@param{setting}
*@return{Promise}
*/
fetch(url,setting){
//设置参数的初始值
letopts={
method:(setting.method||'GET').toUpperCase(),//请求方式
headers:setting.headers||{},//请求头设置
credentials:setting.credentials||true,//设置cookie是否一起发送
body:setting.body||{},
mode:setting.mode||'no-cors',//可以设置cors,no-cors,same-origin
redirect:setting.redirect||'follow',//follow,error,manual
cache:setting.cache||'default'//设置cache模式(default,reload,no-cache)
}
letdataType=setting.dataType||"json",//解析方式
data=setting.data||""//参数
//参数格式化
functionparams_format(obj){
varstr=''
for(variinobj){
str+=`${i}=${obj[i]}&`
}
returnstr.split('').slice(0,-1).join('')
}
if(opts.method==='GET'){
url=url+(data?`?${params_format(data)}`:'')
}else{
setting.body=data||{}
}
returnnewPromise((resolve,reject)=>{
fetch(url,opts).then(asyncres=>{
letdata=dataType==='text'?awaitres.text():
dataType==='blob'?awaitres.blob():awaitres.json()
resolve(data)
}).catch(e=>{
reject(e)
})
})
}
7.DOM
$(selector){
vartype=selector.substring(0,1);
if(type==='#'){
if(document.querySelecotor)returndocument.querySelector(selector)
returndocument.getElementById(selector.substring(1))
}elseif(type==='.'){
if(document.querySelecotorAll)returndocument.querySelectorAll(selector)
returndocument.getElementsByClassName(selector.substring(1))
}else{
returndocument['querySelectorAll'?'querySelectorAll':'getElementsByTagName'](selector)
}
}
/*检测类名*/
hasClass(ele,name){
returnele.className.match(newRegExp('(\\s|^)'+name+'(\\s|$)'));
}
/*添加类名*/
addClass(ele,name){
if(!this.hasClass(ele,name))ele.className+=""+name;
}
/*删除类名*/
removeClass(ele,name){
if(this.hasClass(ele,name)){
varreg=newRegExp('(\\s|^)'+name+'(\\s|$)');
ele.className=ele.className.replace(reg,'');
}
}
/*替换类名*/
replaceClass(ele,newName,oldName){
this.removeClass(ele,oldName);
this.addClass(ele,newName);
}
/*获取兄弟节点*/
siblings(ele){
console.log(ele.parentNode)
varchid=ele.parentNode.children,eleMatch=[];
for(vari=0,len=chid.length;i
8.Storage储存操作
classStorageFn{
constructor(){
this.ls=window.localStorage;
this.ss=window.sessionStorage;
}
/*-----------------cookie---------------------*/
/*设置cookie*/
setCookie(name,value,day){
varsetting=arguments[0];
if(Object.prototype.toString.call(setting).slice(8,-1)==='Object'){
for(variinsetting){
varoDate=newDate();
oDate.setDate(oDate.getDate()+day);
document.cookie=i+'='+setting[i]+';expires='+oDate;
}
}else{
varoDate=newDate();
oDate.setDate(oDate.getDate()+day);
document.cookie=name+'='+value+';expires='+oDate;
}
}
/*获取cookie*/
getCookie(name){
vararr=document.cookie.split(';');
for(vari=0;i
9.Other其它操作
/*获取网址参数*/
getURL(name){
varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)");
varr=decodeURI(window.location.search).substr(1).match(reg);
if(r!=null)returnr[2];returnnull;
}
/*获取全部url参数,并转换成json对象*/
getUrlAllParams(url){
varurl=url?url:window.location.href;
var_pa=url.substring(url.indexOf('?')+1),
_arrS=_pa.split('&'),
_rs={};
for(vari=0,_len=_arrS.length;i<_len;i++){
varpos=_arrS[i].indexOf('=');
if(pos==-1){
continue;
}
varname=_arrS[i].substring(0,pos),
value=window.decodeURIComponent(_arrS[i].substring(pos+1));
_rs[name]=value;
}
return_rs;
}
/*删除url指定参数,返回url*/
delParamsUrl(url,name){
varbaseUrl=url.split('?')[0]+'?';
varquery=url.split('?')[1];
if(query.indexOf(name)>-1){
varobj={}
vararr=query.split("&");
for(vari=0;i0){
dom.scrollTop=restoreTop;
}
dom.focus();
dom.selectionStart=startPos+val.length;
dom.selectionEnd=startPos+val.length;
}else{
dom.value+=val;
dom.focus();
}
}
CSS
1.pc-resetPC样式初始化
/*normalize.css*/
html{
line-height:1.15;
/*1*/
-ms-text-size-adjust:100%;
/*2*/
-webkit-text-size-adjust:100%;
/*2*/
}
body{
margin:0;
}
article,
aside,
footer,
header,
nav,
section{
display:block;
}
h1{
font-size:2em;
margin:0.67em0;
}
figcaption,
figure,
main{
/*1*/
display:block;
}
figure{
margin:1em40px;
}
hr{
box-sizing:content-box;
/*1*/
height:0;
/*1*/
overflow:visible;
/*2*/
}
pre{
font-family:monospace,monospace;
/*1*/
font-size:1em;
/*2*/
}
a{
background-color:transparent;
/*1*/
-webkit-text-decoration-skip:objects;
/*2*/
}
abbr[title]{
border-bottom:none;
/*1*/
text-decoration:underline;
/*2*/
text-decoration:underlinedotted;
/*2*/
}
b,
strong{
font-weight:inherit;
}
b,
strong{
font-weight:bolder;
}
code,
kbd,
samp{
font-family:monospace,monospace;
/*1*/
font-size:1em;
/*2*/
}
dfn{
font-style:italic;
}
mark{
background-color:#ff0;
color:#000;
}
small{
font-size:80%;
}
sub,
sup{
font-size:75%;
line-height:0;
position:relative;
vertical-align:baseline;
}
sub{
bottom:-0.25em;
}
sup{
top:-0.5em;
}
audio,
video{
display:inline-block;
}
audio:not([controls]){
display:none;
height:0;
}
img{
border-style:none;
}
svg:not(:root){
overflow:hidden;
}
button,
input,
optgroup,
select,
textarea{
font-family:sans-serif;
/*1*/
font-size:100%;
/*1*/
line-height:1.15;
/*1*/
margin:0;
/*2*/
}
button,
input{
/*1*/
overflow:visible;
}
button,
select{
/*1*/
text-transform:none;
}
button,
html[type="button"],
/*1*/
[type="reset"],
[type="submit"]{
-webkit-appearance:button;
/*2*/
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner{
border-style:none;
padding:0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring{
outline:1pxdottedButtonText;
}
fieldset{
padding:0.35em0.75em0.625em;
}
legend{
box-sizing:border-box;
/*1*/
color:inherit;
/*2*/
display:table;
/*1*/
max-width:100%;
/*1*/
padding:0;
/*3*/
white-space:normal;
/*1*/
}
progress{
display:inline-block;
/*1*/
vertical-align:baseline;
/*2*/
}
textarea{
overflow:auto;
}
[type="checkbox"],
[type="radio"]{
box-sizing:border-box;
/*1*/
padding:0;
/*2*/
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button{
height:auto;
}
[type="search"]{
-webkit-appearance:textfield;
/*1*/
outline-offset:-2px;
/*2*/
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration{
-webkit-appearance:none;
}
::-webkit-file-upload-button{
-webkit-appearance:button;
/*1*/
font:inherit;
/*2*/
}
details,
/*1*/
menu{
display:block;
}
summary{
display:list-item;
}
canvas{
display:inline-block;
}
template{
display:none;
}
[hidden]{
display:none;
}
/*reset*/
html,
body,
h1,
h2,
h3,
h4,
h5,
h6,
div,
dl,
dt,
dd,
ul,
ol,
li,
p,
blockquote,
pre,
hr,
figure,
table,
caption,
th,
td,
form,
fieldset,
legend,
input,
button,
textarea,
menu{
margin:0;
padding:0;
box-sizing:border-box;
}
2.Phone-reset
/*normalize.css*/
html{
line-height:1.15;
/*1*/
-ms-text-size-adjust:100%;
/*2*/
-webkit-text-size-adjust:100%;
/*2*/
}
body{
margin:0;
}
article,
aside,
footer,
header,
nav,
section{
display:block;
}
h1{
font-size:2em;
margin:0.67em0;
}
figcaption,
figure,
main{
/*1*/
display:block;
}
figure{
margin:1em40px;
}
hr{
box-sizing:content-box;
/*1*/
height:0;
/*1*/
overflow:visible;
/*2*/
}
pre{
font-family:monospace,monospace;
/*1*/
font-size:1em;
/*2*/
}
a{
background-color:transparent;
/*1*/
-webkit-text-decoration-skip:objects;
/*2*/
}
abbr[title]{
border-bottom:none;
/*1*/
text-decoration:underline;
/*2*/
text-decoration:underlinedotted;
/*2*/
}
b,
strong{
font-weight:inherit;
}
b,
strong{
font-weight:bolder;
}
code,
kbd,
samp{
font-family:monospace,monospace;
/*1*/
font-size:1em;
/*2*/
}
dfn{
font-style:italic;
}
mark{
background-color:#ff0;
color:#000;
}
small{
font-size:80%;
}
sub,
sup{
font-size:75%;
line-height:0;
position:relative;
vertical-align:baseline;
}
sub{
bottom:-0.25em;
}
sup{
top:-0.5em;
}
audio,
video{
display:inline-block;
}
audio:not([controls]){
display:none;
height:0;
}
img{
border-style:none;
}
svg:not(:root){
overflow:hidden;
}
button,
input,
optgroup,
select,
textarea{
font-family:sans-serif;
/*1*/
font-size:100%;
/*1*/
line-height:1.15;
/*1*/
margin:0;
/*2*/
}
button,
input{
/*1*/
overflow:visible;
}
button,
select{
/*1*/
text-transform:none;
}
button,
html[type="button"],
/*1*/
[type="reset"],
[type="submit"]{
-webkit-appearance:button;
/*2*/
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner{
border-style:none;
padding:0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring{
outline:1pxdottedButtonText;
}
fieldset{
padding:0.35em0.75em0.625em;
}
legend{
box-sizing:border-box;
/*1*/
color:inherit;
/*2*/
display:table;
/*1*/
max-width:100%;
/*1*/
padding:0;
/*3*/
white-space:normal;
/*1*/
}
progress{
display:inline-block;
/*1*/
vertical-align:baseline;
/*2*/
}
textarea{
overflow:auto;
}
[type="checkbox"],
[type="radio"]{
box-sizing:border-box;
/*1*/
padding:0;
/*2*/
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button{
height:auto;
}
[type="search"]{
-webkit-appearance:textfield;
/*1*/
outline-offset:-2px;
/*2*/
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration{
-webkit-appearance:none;
}
::-webkit-file-upload-button{
-webkit-appearance:button;
/*1*/
font:inherit;
/*2*/
}
details,
/*1*/
menu{
display:block;
}
summary{
display:list-item;
}
canvas{
display:inline-block;
}
template{
display:none;
}
[hidden]{
display:none;
}
/*reset*/
html,
body,
h1,
h2,
h3,
h4,
h5,
h6,
div,
dl,
dt,
dd,
ul,
ol,
li,
p,
blockquote,
pre,
hr,
figure,
table,
caption,
th,
td,
form,
fieldset,
legend,
input,
button,
textarea,
menu{
margin:0;
padding:0;
box-sizing:border-box;
}
html,
body{
/*禁止选中文本*/
-webkit-user-select:none;
user-select:none;
font:Oswald,'OpenSans',Helvetica,Arial,sans-serif
}
/*禁止长按链接与图片弹出菜单*/
a,
img{
-webkit-touch-callout:none;
}
/*iosandroid去除自带阴影的样式*/
a,
input{
-webkit-tap-highlight-color:rgba(0,0,0,0);
}
input[type="text"]{
-webkit-appearance:none;
}
3.公共样式提取
/*禁止选中文本*/
.usn{
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
-o-user-select:none;
user-select:none;
}
/*浮动*/
.fl{float:left;}
.fr{float:right;}
.cf{zoom:1;}
.cf:after{
content:".";
display:block;
clear:both;
visibility:hidden;
height:0;
overflow:hidden;
}
/*元素类型*/
.db{display:block;}
.dn{display:none;}
.di{display:inline}
.dib{display:inline-block;}
.transparent{opacity:0}
/*文字排版、颜色*/
.f12{font-size:12px}
.f14{font-size:14px}
.f16{font-size:16px}
.f18{font-size:18px}
.f20{font-size:20px}
.fb{font-weight:bold}
.fn{font-weight:normal}
.t2{text-indent:2em}
.red,a.red{color:#cc0031}
.darkblue,a.darkblue{color:#039}
.gray,a.gray{color:#878787}
.lh150{line-height:150%}
.lh180{line-height:180%}
.lh200{line-height:200%}
.unl{text-decoration:underline;}
.no_unl{text-decoration:none;}
.tl{text-align:left;}
.tc{text-align:center;}
.tr{text-align:right;}
.tj{text-align:justify;text-justify:inter-ideograph;}
.wn{/*强制不换行*/
word-wrap:normal;
white-space:nowrap;
}
.wb{/*强制换行*/
white-space:normal;
word-wrap:break-word;
word-break:break-all;
}
.wp{/*保持空白序列*/
overflow:hidden;text-align:left;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;
}
.wes{/*多出部分用省略号表示,用于一行*/
overflow:hidden;
word-wrap:normal;
white-space:nowrap;
text-overflow:ellipsis;
}
.wes-2{/*适用于webkit内核和移动端*/
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp:2;
overflow:hidden;
}
.wes-3{
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp:3;
overflow:hidden;
}
.wes-4{
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp:4;
overflow:hidden;
}
/*溢出样式*/
.ofh{overflow:hidden;}
.ofs{overflow:scroll;}
.ofa{overflow:auto;}
.ofv{overflow:visible;}
/*定位方式*/
.ps{position:static;}
.pr{position:relative;zoom:1;}
.pa{position:absolute;}
.pf{position:fixed;}
/*垂直对齐方式*/
.vt{vertical-align:top;}
.vm{vertical-align:middle;}
.vb{vertical-align:bottom;}
/*鼠标样式*/
.csd{cursor:default;}
.csp{cursor:pointer;}
.csh{cursor:help;}
.csm{cursor:move;}
/*flex布局*/
.df-sb{
display:flex;
align-items:center;
justify-content:space-between;
}
.df-sa{
display:flex;
align-items:center;
justify-content:space-around;
}
/*垂直居中*/
.df-c{
display:flex;
align-items:center;
justify-content:center;
}
.tb-c{
text-align:center;
display:table-cell;
vertical-align:middle;
}
.ts-c{
position:absolute;
left:50%;top:50%;
transform:translate(-50%,-50%);
}
.ts-mc{
position:absolute;
left:0;right:0;
bottom:0;top:0;
margin:auto;
}
/*辅助*/
.mask-fixed-wrapper{
width:100%;
height:100%;
position:fixed;
left:0;top:0;
background:rgba(0,0,0,0.65);
z-index:999;
}
.bg-cover{
background-size:cover;
background-repeat:no-repeat;
background-position:centercenter;
}
.bg-cover-all{
background-size:100%100%;
background-repeat:no-repeat;
background-position:centercenter;
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接