常用正则
// 用户名验证
/^[a-zA-Z][a-zA-Z0-9]{5,19}$/
//密码验证
/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,20}$
// 手机号码
/^1[3-8]\d{9}$/
//短信验证码验证
/^[a-zA-Z0-9]{6}$/
//邮箱 验证
/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
/\^|\.|\*|\?|\!|\/|\\|\$|\#|\&|\||,|\[|\]|\{|\}|\(|\)|\-|\+|\=|\`|\'|\"/g 特殊字符过滤
/[^\dA-Za-z\u4e00-\u9fa5]/ 非 昵称
/^1[3-8]+\d{9}$/ 手机号码
/^[0-9]{6}$/ 邮编
/^[\u4e00-\u9fa5]{2,4}$/ 姓名
/[^\dA-Za-z\u4e00-\u9fa5]/ 非 详细地址
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/ 身份证号
/^(\d{16}|\d{19})$/ 银行卡号
/^[a-zA-Z][a-zA-Z0-9_]{2,9}$/ 用户名
/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,20}$/ 密码
/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/ 邮箱
常用的数字正则(严格匹配)
/^[1-9]\d*$/ 匹配正整数
/^-[1-9]\d*$/ 匹配负整数
/^-?[1-9]\d*$/ 匹配整数
/^[1-9]\d*|0$/ 匹配非负整数(正整数 + 0)
/^-[1-9]\d*|0$/ 匹配非正整数(负整数 + 0)
/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/ 匹配正浮点数
/^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$/ 匹配负浮点数
/^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/ 匹配浮点数
/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$/ 匹配非负浮点数(正浮点数 + 0)
/^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$/ 匹配非正浮点数(负浮点数 + 0)
常用字符串正则
/^[A-Za-z]+$/ 匹配由26个英文字母组成的字符串 或 /^[a-z]+$/i
/^[A-Z]+$/ 匹配由26个英文字母的大写组成的字符串
/^[a-z]+$/ 匹配由26个英文字母的小写组成的字符串
/^[A-Za-z0-9]+$/ 匹配由数字和26个英文字母组成的字符串 注意\w包含下划线_
/^\w+$/ 匹配由数字、26个英文字母或者下划线组成的字符串
匹配HTML标记的正则表达式
/^<([a-z]+)\s*\/?> (?:<\/\1>)?$/i
去首尾空白字符
/^\s*|\s*$/g
匹配Email地址的正则表达式
/^([\w-_]+(?:\.[\w-_]+)*)@((?:[a-z0-9]+(?:-[a-zA-Z0-9]+)*)+\.[a-z]{2,6})$/i
匹配帐号是否合法
/\w{4,16}/
匹配国内电话号码
网上流传的版本很好用:
/\d{3}-\d{8}|\d{4}-\d{7}/
匹配腾讯QQ号
/[1-9][0-9]{4,}/
匹配中国邮政编码
/[1-9]\d{5}(?!\d)/
匹配身份证
function validateIdCard(obj){
var aCity={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:"国外"};
var iSum = 0;
//var info = "";
var strIDno = obj;
var idCardLength = strIDno.length;
if(!/^\d{17}(\d|x)$/i.test(strIDno)&&!/^\d{15}$/i.test(strIDno))
return 1; //非法身份证号
if(aCity[parseInt(strIDno.substr(0,2))]==null)
return 2;// 非法地区
// 15位身份证转换为18位
if (idCardLength==15)
{
sBirthday = "19" + strIDno.substr(6,2) + "-" + Number(strIDno.substr(8,2)) + "-" + Number(strIDno.substr(10,2));
var d = new Date(sBirthday.replace(/-/g,"/"))
var dd = d.getFullYear().toString() + "-" + (d.getMonth()+1) + "-" + d.getDate();
if(sBirthday != dd)
return 3; //非法生日
strIDno=strIDno.substring(0,6)+"19"+strIDno.substring(6,15);
strIDno=strIDno+GetVerifyBit(strIDno);
}
// 判断是否大于2078年,小于1900年
var year =strIDno.substring(6,10);
if (year<1900 || year>2078 )
return 3;//非法生日
//18位身份证处理
//在后面的运算中x相当于数字10,所以转换成a
strIDno = strIDno.replace(/x$/i,"a");
sBirthday=strIDno.substr(6,4)+"-"+Number(strIDno.substr(10,2))+"-"+Number(strIDno.substr(12,2));
var d = new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
return 3; //非法生日
// 身份证编码规范验证
for(var i = 17;i>=0;i --)
iSum += (Math.pow(2,i) % 11) * parseInt(strIDno.charAt(17 - i),11);
if(iSum%11!=1)
return 1;// 非法身份证号
// 判断是否屏蔽身份证
var words = new Array();
words = new Array("11111119111111111","12121219121212121");
for(var k=0;k<words.length;k++){
if (strIDno.indexOf(words[k])!=-1){
return 1;
}
}
return 0;
}
参考资料:
http://baike.baidu.com/view/118340.htm#1
匹配IP地址
/^(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])$/
H5 css
// SUI 代码
@baseWidth: 375px;
@baseFont: 20px;
html {
font-size: @baseFont; //默认当做320px宽度的屏幕来处理
}
// 手机端 字体设置 兼容 win mac
body {
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC","Helvetica Neue",STHeiti,"Microsoft Yahei",Tahoma,Simsun,sans-serif;
}
@bps: 400px, 414px, 480px;
.loop(@i: 1) when (@i <= length(@bps)) { //注意less数组是从1开始的
@bp: extract(@bps, @i);
@font: @bp/@baseWidth*@baseFont;
@media only screen and (min-width: @bp){
html {
font-size: @font !important;
}
}
.loop((@i + 1));
};
.loop;
* {
box-sizing: border-box;
// 禁止 iPhone 链接点击灰色背景
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
// 禁止 iPhone 链接点击显示系统菜单
-webkit-touch-callout: none;
}
html {
font-family: sans-serif;
// 禁止手机端自动调整文字大小
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {
clear: both;
}
.content{
// 开启硬件加速
-webkit-overflow-scrolling: touch;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input {
line-height: normal;
}
html,body{
background: @bodyBg;
min-width: @bodyW;
overflow: auto;
word-break: @wordBreak;
}
*{
box-sizing: @boxSizing;
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
a,
ul,
ol,
dl,
dt,
dd,
li,
body,
form,
input,
textarea,
select,
button,
img,
area,
cite,
strong,
em,
table,
td,
th,
div{
outline: none;
padding: 0;
margin: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: @HFontSize;
}
small{
font-size: @SmallFontSize;
}
img,
table,
td,
th {
border-collapse: collapse;
border: none;
}
ul,
ol {
list-style-type: none;
}
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px #fff inset !important;
}
input,button{
-webkit-appearance: none;
}
input[type='checkbox'],
input[type='radio'],
input[type='button'],
button{
cursor: pointer;
}
a {
font-size: inherit;
color: inherit;
text-decoration: none;
}
img[src=""]{
display: none;
}
body, button, input, select, textarea{
font-size: @fontSize;
// 通过 js 兼容 win mac
// font-family: @WindowsFontFamily;
// "Futura","PingHei","PingFang SC","Helvetica Neue","Helvetica",Arial,"Tahoma",Microsoft YaHei;
line-height: @lineHeight;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
head,script{
height: 0;
display: none;
}
html.overflowHidden{
height: 100%;
body{
height: 100%;
overflow: hidden;
}
}
@dialogMask: rgba(0,0,0,0.35);
// layer 弹框背景色
.layui-layer-shade{
background: @dialogMask !important;
}
//强制多行显示
word-break: break-all;
// 未知宽高 上下 左右居中
.CenCenter(){
left: 50%;
top: 50%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
}
// leftPage 左侧 列表
.leftPageUl(){
-webkit-flex-direction: column;
flex-direction: column;
-webkit-flex-flow: column;
flex-flow: column;
-webkit-box-orient: vertical;
display: -webkit-box;
display: -webkit-flex;
display: flex;
li:last-child{
height: auto;
width: 100%;
-webkit-box-pack: justify;
-webkit-box-flex:1;
flex: 1;
}
}
// 设置 input 背景色
.inputBg(@a){
background-color: @a;
-webkit-tap-highlight-color: @a;
&:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px @a inset !important;
}
}
// 设置 input 提示文字颜色
.placeholder(@a){
&::-webkit-input-placeholder {
color: @a;
}
&:-webkit-input-placeholder {
color: @a;
}
&:-moz-placeholder {
color: @a;
}
&::-moz-placeholder {
color: @a;
}
&:-ms-input-placeholder {
color: @a;
}
}
// 设置文字小于12px 解决方案
.fontSize(@b){
font-size: .6rem;
transform: scale(@b/12);
-ms-transform: scale(@b/12);
-moz-transform: scale(@b/12);
-webkit-transform: scale(@b/12);
-o-transform: scale(@b/12);
}
// 设置 下边框
.borderAfterBot(@a){
& {
content:' ';
position: absolute;
left: 0;
top: auto;
bottom: 0;
right: auto;
height: 1px;
width: 100%;
background-color: @a;
display: block;
z-index: 15;
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0
}
@media only screen and (-webkit-min-device-pixel-ratio:2) {
& {
-webkit-transform: scaleY(.5);
transform: scaleY(.5)
}
}
@media only screen and (-webkit-min-device-pixel-ratio:3) {
& {
-webkit-transform: scaleY(.33);
transform: scaleY(.33)
}
}
}
// 设置 上边框
.borderBeforeTop(@a){
& {
content: ' ';
position: absolute;
left: 0;
top: 0;
bottom: auto;
right: auto;
height: 1px;
width: 100%;
background-color: @a;
display: block;
z-index: 15;
-webkit-transform-origin: 50% 0;
transform-origin: 50% 0
}
@media only screen and (-webkit-min-device-pixel-ratio:2) {
& {
-webkit-transform: scaleY(.5);
transform: scaleY(.5)
}
}
@media only screen and (-webkit-min-device-pixel-ratio:3) {
& {
-webkit-transform: scaleY(.33);
transform: scaleY(.33)
}
}
}
// 设置 左边框
.borderBeforeLeft(@a){
& {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: auto;
width: 1px;
height: 100%;
background-color: @a;
display: block;
z-index: 15;
-webkit-transform-origin: 0 50%;
transform-origin: 0 50%
}
@media only screen and (-webkit-min-device-pixel-ratio:2) {
& {
-webkit-transform: scaleX(.5);
transform: scaleX(.5)
}
}
@media only screen and (-webkit-min-device-pixel-ratio:3) {
& {
-webkit-transform: scaleX(.33);
transform: scaleX(.33)
}
}
}
// 设置 右边框
.borderAfterRight(@a){
& {
content: '';
position: absolute;
right: 0;
top: 0;
bottom: 0;
left: auto;
width: 1px;
height: 100%;
background-color: @a;
display: block;
z-index: 15;
-webkit-transform-origin: 0 50%;
transform-origin: 0 50%
}
@media only screen and (-webkit-min-device-pixel-ratio:2) {
& {
-webkit-transform: scaleX(.5);
transform: scaleX(.5)
}
}
@media only screen and (-webkit-min-device-pixel-ratio:3) {
& {
-webkit-transform: scaleX(.33);
transform: scaleX(.33)
}
}
}
// 单行文字超出隐藏 显示...
.oneLineEllipsis{
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
}
// 两行文字超出隐藏 显示...
.twolineEllipsis{
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
// 字体两端对齐公共样式
.textJustify{
display: inline-block;
float: left;
height:100%;
-webkit-text-align-last:justify;
text-align-last:justify;
text-justify:distribute-all-lines;
text-align:justify;
}
.textJustify:after{
display:inline-block;
overflow:hidden;
width:100%;
height:0;
content:'';
vertical-align:top;
}
// items 左右居中上下底部显示
.displayFlex_cenBot(){
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
box-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: end;
-webkit-align-items: flex-end;
align-items: flex-end;
}
// items 左右居中上下居中显示
.displayFlex(){
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
box-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
// items 单行 两端对齐
.displayFlex_between(){
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: justify;
box-pack: justify;
-webkit-justify-content: space-between;
justify-content: space-between;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
// 阴影
.box-shadow(){
-webkit-box-shadow:.1rem .1rem .2rem rgba(0, 0, 0, .35);
-moz-box-shadow:.1rem .1rem .2rem rgba(0, 0, 0, .35);
box-shadow:.1rem .1rem .2rem rgba(0, 0, 0, .35);
}
// items 左右居中上下底部显示
.displayFlex_cenBot{
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: end;
-webkit-align-items: flex-end;
align-items: flex-end;
}
// items 左右居中上下居中显示
.displayFlex{
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
// item 之间留有间距
.displayFlexBetween{
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: space-between;
justify-content: space-between;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
// item 前后留有间距
.displayFlexAround{
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: space-around;
justify-content: space-around;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
// item 上下排列 平均分布
.displayFlexStretch{
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-pack: center;
align-items: stretch;
flex-direction: column;
justify-content: space-between;
flex-wrap: nowrap;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
box-orient:vertical;
box-direction:normal;
}
// 站位容器 伸缩盒子
.itemDisplayFlex{
-webkit-box-flex: 1;
-moz-box-flex: 1;
-ms-flex: 1;
-webkit-flex: 1;
flex: 1;
}
// 公共动画样式
// 定义 从上进入 动画
@-webkit-keyframes pageFromTopToCenter {
from {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
opacity: .9
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
}
@keyframes pageFromTopToCenter {
from {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
opacity: .9
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
}
// 定义 从上离开 动画
@-webkit-keyframes pageFromCenterToTop {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
to {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
opacity: .9
}
}
@keyframes pageFromCenterToTop {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
to {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
opacity: .9
}
}
// 定义 从下进入 动画
@-webkit-keyframes pageFromBotToCenter {
from {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
opacity: .9
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
}
@keyframes pageFromBotToCenter {
from {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
opacity: .9
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
}
// 定义 从下离开 动画
@-webkit-keyframes pageFromCenterToBot {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
to {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
opacity: .9
}
}
@keyframes pageFromCenterToBot {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
to {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
opacity: .9
}
}
// 定义 从中间进入 动画
@-webkit-keyframes pageFromCenToCenter {
from {
left: 50%;
top: 50%;
width: 10%;
height: 10%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
opacity: 0
}
to {
left: 0;
top: 0;
width: 100%;
height: 100%;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
}
@keyframes pageFromCenToCenter {
from {
left: 50%;
top: 50%;
width: 10%;
height: 10%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
opacity: 0
}
to {
left: 0;
top: 0;
width: 100%;
height: 100%;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
}
// 定义 从中间离开 动画
@-webkit-keyframes pageFromCenterToCen {
from {
left: 0;
top: 0;
width: 100%;
height: 100%;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
to {
left: 50%;
top: 50%;
width: 10%;
height: 10%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
opacity: 0
}
}
@keyframes pageFromCenterToCen {
from {
left: 0;
top: 0;
width: 100%;
height: 100%;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1
}
to {
left: 50%;
top: 50%;
width: 10%;
height: 10%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
opacity: 0
}
}
// RightToCenter 动画 从右进入
.popup.modal-in.RightToCenter{
-webkit-animation: pageFromRightToCenter .4s forwards;
animation: pageFromRightToCenter .4s forwards;
}
// LeftToCenter 动画 从左进入
.popup.modal-in.LeftToCenter{
-webkit-animation: pageFromLeftToCenter .4s forwards;
animation: pageFromLeftToCenter .4s forwards
}
// LeftToCenter 动画 从上进入
.TopToCenter,
.popup.modal-in.TopToCenter{
-webkit-animation: pageFromTopToCenter .4s forwards;
animation: pageFromTopToCenter .4s forwards
}
// LeftToCenter 动画 从下进入
.page.BotToCenter,
.content.BotToCenter,
.popup.modal-in.BotToCenter{
-webkit-animation: pageFromBotToCenter .4s forwards;
animation: pageFromBotToCenter .4s forwards
}
// LeftToCenter 动画 从中间进入
.popup.modal-in.CenToCenter{
-webkit-animation: pageFromCenToCenter .4s forwards;
animation: pageFromCenToCenter .4s forwards
}
// CenterToRight 动画 从右离开
.popup.modal-out.RightToCenter,
.popup.modal-out.CenterToRight{
-webkit-animation: pageFromCenterToRight .4s forwards;
animation: pageFromCenterToRight .4s forwards;
}
// CenterToLeft 动画 从左离开
.popup.modal-out.LeftToCenter,
.popup.modal-out.CenterToLeft{
-webkit-animation: pageFromCenterToLeft .4s forwards;
animation: pageFromCenterToLeft .4s forwards
}
// CenterToRight 动画 从下离开
.content.CenterToBot,
.popup.modal-out.BotToCenter,
.popup.modal-out.CenterToBot{
-webkit-animation: pageFromCenterToBot .4s forwards;
animation: pageFromCenterToBot .4s forwards;
}
// CenterToLeft 动画 从上离开
.page.CenterToTop,
.content.CenterToTop,
.popup.modal-out.TopToCenter,
.popup.modal-out.CenterToTop{
-webkit-animation: pageFromCenterToTop .4s forwards;
animation: pageFromCenterToTop .4s forwards
}
// CenterToLeft 动画 从中间离开
.popup.modal-out.CenToCenter,
.popup.modal-out.CenterToCen{
-webkit-animation: pageFromCenterToCen .4s forwards;
animation: pageFromCenterToCen .4s forwards
}
PC css
// web 自定义字体应用
@iconFontTest: "iconFontTest";
@font-face {
font-family: 'iconFontTest';
src: url('../font/iconfont.svg') format('svg');
}
.iconFontTest{
font-family: @iconFontTest;
}
//网站主题 黑白色快速设置
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }
/*清除ie的默认选择框样式清除,隐藏下拉箭头*/
select::-ms-expand {
display: none;
}
.borderBox{
/*使用百分比宽度 像素边距时 防止超出边界 IE怪异模式*/
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
html{
font-size: 62.5%;
width: 100%;
height: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
*, *:before, *:after {
-webkit-box-sizing: inherit;
-moz-box-sizing: inherit;
box-sizing: inherit;
}
html body{
width: 100%;
height: 100%;
/*字体抗锯齿*/
}
a,button,input{
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
/*重置inphone input[type="submit"] ui*/
-webkit-appearance: none;
}
/*type="file" safail兼容*/
input[type="file"].opacity0{
position: absolute;
z-index: -10;
filter:alpha(opacity=0);
-moz-opacity:0;
opacity:0;
}
body, button, input, select, textarea{
font:1.4rem/150% "微软雅黑","Microsoft YaHei",Arial,Verdana,"\5b8b\4f53";
font-family: Hiragino Sans GB,"Microsoft YaHei",STHeiti,Arial,sans-serif;
font: 12px/1.5 'PingHei','PingFang SC','Helvetica Neue','Helvetica',"微软雅黑","Microsoft YaHei","Tahoma",Arial,"宋体";
font-family: sans-serif;
/*font-family: sans-serif;*/
/*font-family:-apple-system;*/
/*font-family:Hiragino Sans GB;*/
/*font-family:WenQuanYi Micro Hei;*/
/*font-family:sans-serif;*/
/*font-family:Avenir Next;*/
/*font-family:Avenir;*/
/*font-family:Lucida Grande;*/
/*font-family:Calibri;*/
/*font-family:Trebuchet MS;*/
/*font-family:Helvetica;*/
/*font-family:Arial;*/
/*font-family:PingFang SC;*/
/*font-family:STHeiti;*/
/*font-family:Microsoft Jhenghei;*/
/*font-family:Nanum Gothic;*/
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
dl,
dt,
dd,
li,
html,
body,
form,
input,
button,
img,
area,
cite,
strong,
big,
small,
em,
table,
td,
th {
padding: 0;
margin: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 14px;
font-weight: 400;
}
img,
table,
td,
th {
border-collapse: collapse;
border: 0;
}
img[src=""]{
display: none;
}
input,button,select,textarea{outline:none}
ul,
ol {
list-style-type: none;
}
a {
color: #333;
text-decoration: none;
}
a[href]{
z-index: 1;
/*处理ie 下图片 与 A 层级问题*/
background:url(about:blank);
}
a:link{}
a:visited{}
a:hover{}
a:active{outline: none;}
i{font-style: normal;}
/*斜体字*/
.XieTi{ font-style:italic; }
/*倾斜文字*/
.XieTi{ font-style:oblique; }
.floatL {
float:left;
}
.floatR {
float:right;
}
.clearfix{
overflow:hidden;_zoom:1;
}
.bootclearfix {
*zoom: 1;
}
.bootclearfix:before,
.bootclearfix:after {
display: table;
line-height: 0;
content: "";
}
.bootclearfix:after {
clear: both;
}
.textRight{
text-align: right;
}
.textCenter{
text-align: center;
}
.textLeft{
text-align: left;
}
.colorRed{
color: #ff4c4c;
}
.colorGray{
color: #646464;
}
.ComBoxShadow{
-webkit-box-shadow:2px 2px 1px rgba(204, 198, 198,0.3);
-moz-box-shadow:2px 2px 1px rgba(204, 198, 198,0.3);
box-shadow:2px 2px 1px rgba(204, 198, 198,0.3);
}
table td{
/*防止文字过长破坏table结构*/
word-break: break-all;
}
//强制多行显示
word-break: break-all;
//手机端 文字两端对齐 ( 文字间必须加空格 ) word-break: break-all;
.TextJustify{
-moz-text-align-last:justify;/*ff*/
-webkit-text-align-last:justify;/*chrome 20+*/
text-align-last:justify;/* ie9*/
text-justify:distribute-all-lines;/*ie6-8*/
text-align:justify;
}
.TextJustify:after{
content:".";
display: inline-block;
width:100%;
overflow:hidden;
height:0;
}
//手机端 文字截断
.phoneEllipsis{
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.oneLineEllipsis{
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
//图片放大缩小
div img{
display: block;
position: relative;
z-index: 1;
width: 95%;
top: 50%;
left: 50%;
top: 0\9;
left: 0\9;
top: 50%\9\0;
left: 50%\9\0;
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-moz-transition: width .3s;
-ms-transition: width .3s;
-o-transition: width .3s;
-webkit-transition: width .3s;
transition: width .3s
}
div:hover img{
width: 105%;
}
//图片放大 阴影
div{
transition-property: transform;
transition-duration: .1s;
transition-timing-function: linear;
overflow: visible
}
div:hover{
-webkit-box-shadow: 0 0 8px 3px rgba(0, 0, 0, .2);
-moz-box-shadow: 0 0 8px 3px rgba(0, 0, 0, .2);
box-shadow: 0 0 8px 3px rgba(0, 0, 0, .2);
-webkit-transform: scale(1.03);
-moz-transform: scale(1.03);
transform: scale(1.03)
}
//图标翻转动画
a .icon_down {
-webkit-transition: -webkit-transform 0.1s ease-out;
-moz-transition: -moz-transform 0.1s ease-out;
-ms-transition: -ms-transform 0.1s ease-out;
-o-transition: -o-transform 0.1s ease-out;
}
a:hover .icon_down {
-webkit-transform: rotateZ(180deg);
-moz-transform: rotateZ(180deg);
-ms-transform: rotateZ(180deg);
transform: rotateZ(180deg);
-o-transform: rotateZ(180deg);
}
//禁止选中文本
.NoSelectText{
-moz-user-select:none;/*火狐*/
-webkit-user-select:none;/*webkit浏览器*/
-ms-user-select:none;/*IE10*/
-khtml-user-select:none;/*早期浏览器*/
user-select:none;
}
//select 高度兼容
.select{
height: 30px;
line-height: 24px; // ( 30px - 6px )
font-size: 14px;
}
//input 光标居中兼容
.inputText{
height: 30px;
line-height: 16px;
padding: 5px 3px;
font-size: 14px;
}
// 媒体查询
@media screen and ( min-width: 212px){/*213px显示屏样式 LG Optimus One*/}
@media screen and ( min-width: 319px){/*320px显示屏样式 苹果4/4S/5C/5S黑莓Z30 */}
@media screen and ( min-width: 359px){/*360px显示屏样式 索尼Z1*/}
@media screen and ( min-width: 383px){/*384px显示屏样式 黑莓Z10 谷歌 Nexus 6 LG Optimus G*/}
@media screen and ( min-width: 399px){/*399px显示屏样式 三星galaxyNote*/}
@media screen and ( min-width: 414px){/*414px显示屏样式 苹果6plus*/}
@media screen and ( min-width: 423px){/*424px显示屏样式 LG 4X */}
@media screen and ( min-width: 479px){/*480px显示屏样式 索尼MT27i Xperia sola*/}
@media screen and ( min-width: 539px){/*640px显示屏样式 摩托罗拉Droid3/4/Razr Atrix 4g*/}
@media screen and ( min-width: 639px){/*640px显示屏样式*/}
@media screen and ( min-width: 640px){/*640px以上显示屏样式*/}
// background-size 用 background 简写
background: #f00 url(http://www.w3school.com.cn/i/bg_flower.gif) no-repeat 10px 10px/106px 160px;
javascript
// keyup 时间数据 按下 900 毫秒 异步请求
setTimeout(function () {
var _t = new Date().getTime();
var _keyT = _t - keyT;
if(keyT && (_keyT > 850)){
_post();
}
},900);
// 页面设置 多个 window.onload 解决方案 <body onload="fn_onload();">
(function () {
'use strict';
window._windowOnload = [];
window.fn_onload = function () {
var _windowOnload = window._windowOnload;
for (var i = 0; i < _windowOnload.length; i++) {
if(typeof _windowOnload[i] == 'function'){
setTimeout(_windowOnload[i](),0);
}
}
};
Object.defineProperty(window,"onload",{
get: function () {
console.log('get');
},
set: function (val) {
if(typeof val == 'function'){
_windowOnload.push(val);
}
},
configurable : true
});
window.onload = function () {
console.log('01');
};
window.onload = function () {
console.log('02');
};
}());
// 简单时间倒计时
function fn_timerCountDown(Obj){
function showTime(Obj) {
var T = Obj.T;
var dom = Obj.dom;
var Ht = Obj.Ht;
var day=0,
hour=0,
minute=0,
second=0;
day = Math.floor(T / (60 * 60 * 24)) + '';
hour = Math.floor(T / (60 * 60)) - (day * 24) + '';
minute = Math.floor(T / 60) - (day * 24 * 60) - (hour * 60) + '';
second = Math.floor(T) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60) + '';
if (hour <= 9) {hour = '0' + hour;}
if (minute <= 9) {minute = '0' + minute;}
if (second <= 9) {second = '0' + second;}
day = '<i>'+day+'</i>';
hour = '<i>'+hour[0]+'</i><i>'+hour[1]+'</i>';
minute = '<i>'+minute[0]+'</i><i>'+minute[1]+'</i>';
second = '<i>'+second[0]+'</i><i>'+second[1]+'</i>';
Ht = Ht.replace(/{dd}/,day);
Ht = Ht.replace(/{hh}/,hour);
Ht = Ht.replace(/{mm}/,minute);
Ht = Ht.replace(/{ss}/,second);
document.getElementById(dom).innerHTML = Ht;
}
var T = Obj.T;
var dom = Obj.dom;
var time=window.setInterval(function(){
console.log(T);
var day=0,
hour=0,
minute=0,
second=0;
if(T > 0){
T--;
Obj.T = T;
showTime(Obj);
}else{
clearInterval(time);
return false;
}
}, 1000);
}
fn_timerCountDown({
T: 666666,
dom: 'seckillADHt',
Ht: '<span class="hh">{hh}</span><span class="mm">{mm}</span><span class="ss">{ss}</span>'
});
// 设置对象 不可枚举 不可编辑 不可配置 属性
function setEnumF(O,K,V) {
Object.defineProperty(O,K,{
value: V
});
}
// js 类型判断
var type = function (o){
var s = Object.prototype.toString.call(o);
return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
type(''); // string
type(true); // boolean
type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"
// 原生js ajax
window._xhr = {
_ajax: function (){
var arg = arguments[0];
var createxmlHttpRequest = function () {
if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
}
var convertData = function (data){
if( typeof data === 'object' ){
var convertResult = "" ;
for(var c in data){
convertResult+= c + "=" + data[c] + "&";
}
convertResult=convertResult.substring(0,convertResult.length-1)
return convertResult;
}else{
return data;
}
}
var _ = {
// GET POST
type:arg.type || "GET",
// url
url:arg.url || "",
// 异步( 默认 ) 同步
async:arg.async || "true",
// 提交数据
data:arg.data || null,
// 返回数据
dataType:arg.dataType || "text",
// 提交文件头
contentType:arg.contentType || "application/x-www-form-urlencoded",
// 提交前
beforeSend:arg.beforeSend || function () {},
// 成功
success:arg.success || function () {},
// 错误
error:arg.error || function () {}
}
_.beforeSend();
var xhr = createxmlHttpRequest();
xhr.responseType=_.dataType;
xhr.open(_.type,_.url,_.async);
xhr.setRequestHeader("Content-Type",_.contentType);
xhr.send(convertData(_.data));
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status == 200){
_.success(xhr.response)
}else{
_.error()
}
}
}
},
_get: function () {
var arg = arguments[0];
this._ajax({
type: "GET",
url: arg.url,
dataType: "json",
async: arg.async || "true",
beforeSend: arg.beforeSend || null,
success: arg.success || null,
error:arg.error || null
});
},
_post: function () {
var arg = arguments[0];
this._ajax({
type: "POST",
url: arg.url,
dataType: "json",
async: arg.async || "true",
data: arg.data || null,
beforeSend: arg.beforeSend || null,
success: arg.success || null,
error:arg.error || null
});
}
};
_xhr._get({
url:'http://h5.quanchepin.com/index.php?act=get_jrtj',
success:function(msg){
console.log(msg);
},
error:function(){
console.log("error");
}
});
// cookie 操作
function setCookie(name,value){
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name){
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
console.log('cookie: ' + document.cookie);
// vik_im 自动回复 js
(function (window,$) {
// 判断 页面是否获取焦点
var isblur = true;
window.onblur = function() {
isblur = true;
// console.log('onblur' + isblur);
};
window.onfocus = function() {
isblur = false;
// console.log('onfocus' + isblur);
};
window.ImExt = {
init: function () {
try{
if(ImExt.sendTextObj){
ImExt.sendText(ImExt.sendTextObj);
}
// 展开陌生人列表
// var S = document.getElementById('strangers');
// var T = document.getElementById(window.ImExt.to_user);
// triggerClick(S);
// triggerClick(T);
}catch(e){
}
},
im_Notification: function (msg,selectUser) {
// 未读消息
var IMunread = window.IMunread = {};
IMunread[msg.from] = msg;
// 页面获取焦点 from == select
var isselect = msg.from == selectUser;
// console.log(isblur + '==' + isselect);
if(!isblur && isselect){
return false;
}
clearInterval(window.NotificationTime);
window.NotificationTime = setInterval(function () {
console.log(window.IMunread);
var length = 0;
for(var i in window.IMunread){
length = 1;
ImExt.im_Notification(IMunread[i],null);
}
if(!length){
clearInterval(window.NotificationTime);
}
},10000);
var con = typeof msg.data == 'string' ? msg.data : '收到未读消息!';
if (window.Notification) {
Notification.requestPermission(function (perm) {
if (perm == "granted") {
var notify = new Notification(con, {
from: msg.from,
dir: 'auto',
tag: 'msgTag',
renotify: true,
sticky: true,
timestamp: 3600000,
icon: window.baseUrl + '/includes/libraries/images/logo_03.png',
body: '请立即查看.'
});
notify.onshow = function () {
// setTimeout(function(){
// notify.close();
// }, 3600000);
return false;
};
notify.onclick = function() {
// 未读消息清除
delete IMunread[msg.from];
notify.close();
};
}
});
}
},
updateOnlineMsg: function(toName) {
$.post('index.php?app=common&act=upd_im_online', {to_name: toName}, function(data, textStatus, xhr) {
console.log(data);
});
},
triggerClick: function(el) {
if (el.click) {
el.click();
} else {
try {
var evt = document.createEvent('Event');
evt.initEvent('click', true, true);
el.dispatchEvent(evt);
} catch (e) {
console.dir(e);
};
}
},
valueDeCode: function (V) {
// s = str.replace(/&/g, "&");
// s = s.replace(/\n/g, "
");
// V = V.replace(/</g,"<");
// V = V.replace(/>/g,">");
// V = V.replace(/"/g,'"');
return V;
},
addStyle: function () {
var nod = document.createElement('style'),
str = '.webim-chat{overflow:visible}.webim-chat .replyMsgBox *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.webim-chat .replyMsgBox{position:absolute;left:0;bottom:-51px;width:100%;height:50px;background-color:#fff;box-shadow:rgba(0,0,0,.298039) 0 0 6px 0}.webim-chat .replyMsgBox a{text-decoration:none}.webim-chat .replyMsgBox .selectBox{position:relative;margin-left:10px;margin-top:10px;float:left;width:80px;height:30px;border:1px solid #d6d6d6;line-height:30px;background-color:#fff}.webim-chat .replyMsgBox .selectBox p{padding:0 5px}.webim-chat .replyMsgBox .selectBox ul{position:absolute;left:-1px;top:28px;width:80px;line-height:30px;border:1px solid #d6d6d6;line-height:30px;background-color:#fff;display:none}.webim-chat .replyMsgBox .selectBox ul li{border-top:1px solid #d6d6d6}.webim-chat .replyMsgBox .selectBox ul li a{padding:0 5px;display:block;width:100%;height:100%}.webim-chat .replyMsgBox .selectBox ul li a:hover{background-color:#f5f5f5}.webim-chat .replyMsgBox .selectBox ul li:first-child{border-top:0}.webim-chat .replyMsgBox .selectBox:hover ul{display:block}.webim-avatar-icon{-webkit-filter:inherit}';
nod.type='text/css';
if(nod.styleSheet){
nod.styleSheet.cssText = str;
} else {
nod.innerHTML = str;
}
document.querySelector('head').appendChild(nod);
// var ht = '<div class="replyMsgBox"></div>'
var ht = '<div class="selectBox" data-type="0"><p><span>不自动回复</span></p><ul><li><a href="javascript:;" data-type="1">自动回复</a></li><li><a href="javascript:;" data-type="0">不自动回复</a></li></ul></div>'
document.querySelector('.replyMsgBox').innerHTML= ht;
$('body').on('click','.selectBox a',function () {
var selectBox = $('.replyMsgBox').find('.selectBox');
var _this = $(this);
var t = _this.text();
selectBox.find('span').text(t);
var typt = _this.attr('data-type');
_this.parents('.selectBox').attr('data-type',typt);
});
},
// 未读消息时间处理
unreadMessageDate: function (msg) {
var Time = msg.delay || null;
var timestamp2;
if(Time){
// Time = Time.replace(/-/g,'/');
Time = Time.replace(/T/g,' ');
Time = Time.replace(/.[0-9]{1,}Z/g,'');
// var stringTime = "2014-07-10 10:21:12";
Time = Date.parse(new Date(Time)) + 28800000;
Time = new Date(Time).toLocaleString();
}
return Time;
},
// 获取当前日期 时间
getNowFormatDate: function () {
var date = new Date();
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
// var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
// + " " + date.getHours() + seperator2 + date.getMinutes()
// + seperator2 + date.getSeconds();
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
return currentdate;
},
// 时间判断
dateJudge02: function () {
var type = $('.selectBox').attr('data-type');
var is = type == '1';
if(is){
return true;
}else{
return false;
}
},
// 时间判断
dateJudge: function (t1,t2) {
t1 = t1 || '12:30';
t2 = t2 || '14:00';
// 2014-03-02
var _D = window.extFn.getNowFormatDate();
var date1 = _D + ' ' + t1;
var date2 = _D + ' ' + t2;
// 2014-03-02 12:00
var oDate1 = new Date(date1);
var oDate2 = new Date(date2);
var oDate3 = new Date();
var D1T = oDate1.getTime();
var D2T = oDate2.getTime();
var D3T = oDate3.getTime();
var is = D3T>D1T && D3T 0){
day = Math.floor(intDiff / (60 * 60 * 24));
hour = Math.floor(intDiff / (60 * 60)) - (day * 24);
minute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60);
second = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60);
}else{
$(timeStrDist).html('剩余00秒');
clearInterval(_this.time);
return false;
}
if (minute <= 9) {minute = '0' + minute;}
if (second <= 9) {second = '0' + second;}
var str='剩余';
if(day>0){
str+=day+"天"+hour+'时'+minute+'分'+second+'秒';
}else if(hour>0){
str+=hour+'时'+minute+'分'+second+'秒';
}else if(minute>0){
str+=minute+'分'+second+'秒';
}else if(second>0){
str+=second+'秒';
}
$(timeStrDist).html(str);
intDiff--;
return str;
}, 1000);
}
// 插件绑定
$.fn.fn_timerCountDown = fn_timerCountDown;
})(window,jQuery);
// 创建 style 节点
function set_fontFamily() {
var isMac = /macintosh|mac os x/i.test(navigator.userAgent);
var ht;
if(isMac){
ht = 'body,button,input,select,option,textarea{font-family: Hiragino Sans GB,sans-serif !important;}';
}else{
ht = 'body,button,input,select,option,textarea{font-family: "Microsoft YaHei",Arial,sans-serif!important;-moz-osx-font--webkit-font-smoothing: antialiased !important;}';
}
var nod = document.createElement("style");
nod.type="text/css";
if(nod.styleSheet){
nod.styleSheet.cssText = ht;
} else {
nod.innerHTML = ht;
}
document.getElementsByTagName("head")[0].appendChild(nod);
}
// pc端 自定义 title样式
#titleTips{
padding: 6px;
position: fixed;
width: 300px;
background: @colorfff;
border:1px solid @colorGrey54;
// border-radius:3px;
font-size: 12px;
z-index: 100;
color: @color666;
box-shadow: 0 0 4px @tipTitleShadow;
i{
position: absolute;
display: block;
left: 50%;
margin-left: -9px;
top: -6px;
width: 9px;
height: 6px;
background: @explainUp01;
}
}
$(".tipTitle").on("mouseover",function(){
if($("#titleTips").length!=1){
$('body').append('<div id="titleTips"><i></i><span></span></div>');
}
//获取选中元素的私有属性值
var popValue = $(this).attr("data-title");
//获取元素左边距到窗口左边缘的距离
var xAxis = $(this).offset().left;
//获取元素上边距到窗口顶端的距离(这里减去了滚动条滚动的距离)
var yAxis = $(this).offset().top-$(document).scrollTop();
//获取当前元素的宽度与高度
var domWidth = $(this).width();
var domHeight = $(this).height();
//计算要显示字符的字母个数(显示的框框要根据字符数自动设置宽度)
var fontNumber = popValue.length;
//设置每个字符所占据的像素长度
var widthForSingleAlpha = 14;
//鼠标移入的时候显示提示框。
$("#titleTips").show();
// 设置到顶端的距离
$("#titleTips").css("top",(yAxis+domHeight+6)+"px");
var smallTipsWidth = $("#titleTips").width();/*获取弹框的宽度*/
$("#titleTips").css("left",xAxis+domWidth/2-smallTipsWidth/2);/*根据弹框的宽度设置其到左端的距离*/
$("#titleTips>span").html(popValue);/*设置显示的文字内容*/
});
$(".tipTitle").on("mouseout",function(){
$("#titleTips").hide();
});
// 判断 Mac 终端
isMac = /macintosh|mac os x/i.test(navigator.userAgent);
// 判断 Windows 终端
isWindows = /windows|win32/i.test(navigator.userAgent);
// 判断 Linux 终端
isLinux = /linux/i.test(navigator.userAgent);
// 判断 android 终端
isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
// 判断 ios 终端
isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
//判断 ie
var browser=navigator.appName
var b_version=navigator.appVersion
var version=b_version.split(";");
var trim_Version=version[1].replace(/[ ]/g,"");
if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE6.0") {
alert("IE 6.0");
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE7.0") {
alert("IE 7.0");
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE8.0") {
alert("IE 8.0");
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE9.0") {
alert("IE 9.0");
}
//js 获取get 参数
function fn_get(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null){
return unescape(r[2]);
}
return null;
}
//form 禁止回车表单自动提交事件
function fn_Key13() {
var f = document.getElementsByTagName("form");
for (var i = f.length - 1; i >= 0; i--) {
f[i].onkeydown=function (event) {
var e = event ? event : window.event;
var c = Number(e.keyCode);
console.log(c);
if(c==13){
return false;
}
}
}
}
fn_Key13();
/**
* 是否为mac系统
* */
var isMac = function() {
return /macintosh|mac os x/i.test(navigator.userAgent);
}();
/**
* 是否为windows系统
* */
var isWindows = function() {
return /windows|win32/i.test(navigator.userAgent);
}();
//jq 插件模板
(function (w,$,undefined) {
var _this = {
O : {
name : "name",
id : "id",
cla : "cla"
},
loadJs : function (U) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = U;
document.body.appendChild(script);
},
loadCss : function (U) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = U;
document.getElementsByTagName("head")[0].appendChild(link);
},
loadImg : function (U,fn) {
this._.img = new Image();
this._.img.src = U;
this._.img.onload = fn || function () {
console.log(this._.img);
}
},
init : function (O,_jk) {
this.O = $.extend(this.O,O);
this._ = _jk;
$(this.O.id).on('click',this.O.cla, function(event) {
event.preventDefault();
console.log($(this).text());
});
},
sayN : function () {
console.log(this.O.name);
},
sayId : function () {
console.log(this.O.id);
}
};
var _jk = {
init : function (O) {
_this.init(O,this);
},
sayN : function () {
_this.sayN();
},
sayId : function () {
_this.sayId();
},
loadJs : function (U) {
_this.loadJs(U);
},
loadCss : function (U) {
_this.loadCss(U);
},
loadImg : function (U,fn) {
_this.loadImg(U,fn);
}
};
w._jk = _jk;
}(window,jQuery));
_jk.init({
name: "jk_name",
id : "#div01",
cla : ".next"
});
_jk.sayN();
_jk.sayId();
_jk.loadImg("https://www.baidu.com/img/bd_logo1.png",function () {
$("body").append(_jk.img);
});
//设置 iframe 高度
function set_iframeH(str) {
var f = document.getElementById(str);
f.Win = f.contentWindow || f.contentDocument.parentWindow;
f.height = f.Win.document.documentElement.scrollHeight || f.Win.document.body.scrollHeight;
}
// 返回上一个页面
self.location=document.referrer;
history.back(-1);location.reload(); // 有兼容问题
history.go(-1);location.reload(); // 有兼容问题
//beforeunload 兼容性
ie8 <a href="javascript:;"></a> javascript:;伪协议会触发beforeunload事件
//layer 显示图片
layer.open({
type: 1,
title: false,
offset: 'auto',
skin: 'layui-layer-demo', //样式类名
closeBtn: 0, //不显示关闭按钮
anim: 2,
area: ['auto', 'auto'],
fix: true,
shade: 0.3,
shadeClose: true, //开启遮罩关闭
content: '<img class="layerShowImgBox" src=""/>'
});
//捕获页 弹框配置
layer.open({
type: 1,
skin: 'layui-layer-rim',
area: ['auto', 'auto'],
shade: 0.35,
fix: true,
scrollbar: false,
title: '全车品登录', //不显示标题
content: $('#loginHideBox') //捕获的元素
});
// 设置滚动条位置
function fn_scrollTop(Obj) {
var T = $(Obj).offset().top;
$("html,body").scrollTop(T);
}
/**
*jackdizhu 瀑布流 小插件
*Box:"#liBox" 最外层容器
*Li:".li" 列表元素
*Margin:10 列表之间的间距 margin-left or margin-right
*_this=this 调用this 用_this代替
*/
;!(function (window,$,undefined) {
window.waterfallFlow=function(options) {
var _default={
Box:"#liBox",
Li:".li",
Margin:10
};
var _options = $.extend({},_default,options);
var Liobj=$(_options.Li),
BoxObj=$(_options.Box);
var LiWidth = Liobj[0].offsetWidth+_options.Margin;
var BoxWidth=BoxObj[0].offsetWidth+_options.Margin;
function fn_setLiBox(){
var H=[]; //记录高度的数组
var N = BoxWidth/LiWidth|0;
var Max_H,MinKey,Max,Li_H;
for(var i = 0;i < Liobj.length;i++) {
Li_H = Liobj[i].offsetHeight; //获取每个Li的高度
if(i < N) { //N是一行最多的Li,小于n就是第一行
Max_H =Math.max.apply(null,H);
H[i]=Li_H; //把每个Li放到数组里面
Liobj.eq(i).css("top",0); //第一行Li的top值为0
Liobj.eq(i).css("left",i * LiWidth); //第i个Li的左坐标就是i*li的宽度
}
else{
min_H =Math.min.apply(null,H) ; //取得数组中的最小值 ,高度值最小
MinKey = fn_getarraykey(H, min_H); //最小的值对应的key
H[MinKey] += Li_H; //加上新高度后 更新高度值
Liobj.eq(i).css("top",min_H); //先得到高度最小的Li,然后把接下来的li放到它的下面
Liobj.eq(i).css("left",MinKey * LiWidth); //第i个li的左坐标就是i*li的宽度
}
}
Max =Math.max.apply(null,H) ;
BoxObj.css("height",Max);
}
/* 使用for in运算返回数组中某一值的对应项数(计算出最小的高度值是数组里面的第几个) */
function fn_getarraykey(s, v) {for(k in s) {if(s[k] == v) {return k;}}}
/*一定要用onload,如果有图片不加载完就不知道高度值*/
window.onload = function() {fn_setLiBox();};
}
})(window,jQuery)
/**
*jackdizhu a锚点动画 小插件
*A:'a' a标签元素
*_this=this 调用this 用_this代替
*/
;!(function (window,$,undefined) {
window.anchorAnimation=function(options) {
var _default={
A:'a',
aTime:1000,
Fn_Click:null,
Fn_Callback:null
};
var _options = $.extend({},_default,options);
var aObj=$(_options.A);
var Href,id;
var rel=/#[A-Za-z0-9_]+/;
// 获取元素 绑定点击事件
$(_options.A).on('click', function(event) {
event.preventDefault();
event.stopPropagation();
Href=this.href;
id=rel.exec(Href);
if(id.length){
fn_GoAnimation(id[0]);
if(typeof _options.Fn_Click == 'function'){
var _this=this;
_options.Fn_Click(_this);
}
}
return false;
});
// 执行滚动动画
function fn_GoAnimation(id) {
var Ojb=$(id);
var scT=Ojb.offset().top;
// 防止回调重复执行
Ojb.attr({
'data-animate': 'true'
});
$('html,body').animate({
scrollTop:scT
},_options.aTime,function () {
if(typeof _options.Fn_Callback == 'function'){
var _this=this;
if(Ojb.attr('data-animate')=='true'){
Ojb.attr({
'data-animate': 'false'
});
_options.Fn_Callback(_this);
}
}
});
}
}
})(window,jQuery);
//new Date 参数形式:如:
new Date("January 12,2006 22:19:35");
new Date("January 12,2006");
new Date(2006,0,12,22,19,35);
new Date(2006,0,12);
new Date(1137075575000);
//根据邮箱后缀 跳转登录页面
function fn_get_emailLogin(){
var hash = {
'qq.com': 'http://mail.qq.com',
'gmail.com': 'http://mail.google.com',
'sina.com': 'http://mail.sina.com.cn',
'163.com': 'http://mail.163.com',
'126.com': 'http://mail.126.com',
'yeah.net': 'http://www.yeah.net/',
'sohu.com': 'http://mail.sohu.com/',
'tom.com': 'http://mail.tom.com/',
'sogou.com': 'http://mail.sogou.com/',
'139.com': 'http://mail.10086.cn/',
'hotmail.com': 'http://www.hotmail.com',
'live.com': 'http://login.live.com/',
'live.cn': 'http://login.live.cn/',
'live.com.cn': 'http://login.live.com.cn',
'189.com': 'http://webmail16.189.cn/webmail/',
'yahoo.com.cn': 'http://mail.cn.yahoo.com/',
'yahoo.cn': 'http://mail.cn.yahoo.com/',
'eyou.com': 'http://www.eyou.com/',
'21cn.com': 'http://mail.21cn.com/',
'188.com': 'http://www.188.com/',
'foxmail.com': 'http://www.foxmail.com',
'outlook.com': 'http://www.outlook.com'
}
var _mail = $("input[type=email]").val().split('@')[1]; //获取邮箱域名
for (var j in hash){
if(j == _mail){
return hash[_mail];
}
}
return false;
}
//简单图片切换
function fn_slide(Obj,n,top) {
if(top=='top'){
var interval1 = $(Obj).find("li:first-child").outerHeight();
var mar='marginTop';
}else{
var interval1 = $(Obj).find("li:first-child").outerWidth();
var mar='marginLeft';
}
var leng=$(Obj).find("li").length+1;
$(Obj).find("ul").css({width:interval1*(leng-1)+'px'});
var count1 = leng - n-1; /* 显示 5 个 li标签内容 */
var curIndex1 = 0;
$(Obj).find("a").on('click',function(){
$(Obj).find("a").removeClass('disabled');
if (curIndex1 == 0){$(Obj).parent().find('.prev').addClass('disabled');}
if (curIndex1 >= count1){$(Obj).parent().find('.next').addClass('disabled');}
if( $(this).hasClass('disabled') ){return false;}
if ($(this).hasClass('prev')){--curIndex1;}
else{++curIndex1;}
if(mar=='marginTop'){
$(Obj).find("ul").stop(false, true).animate({marginTop: -curIndex1*interval1 + "px"}, 600);
}else{
$(Obj).find("ul").stop(false, true).animate({marginLeft: -curIndex1*interval1 + "px"}, 600);
}
});
}
//IScroll 多个div 调用 点击事件 配置
$('.wrapper').each(function() {
var myscroll;
var id='#'+$(this).attr('id');
function loaded(){
myscroll=new IScroll(id,{
momentum:false,
hScrollbar:false,
hideScrollbar:false,
vScroll:true,
scrollbars: 'custom',
click: true,
preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT|A|P)$/},
preventDefault:false
});
}
function set_hide() {
$(id).css({visibility:'visible',display:'none'});
}
loaded();
set_hide();
});
//阻止浏览器默认行为
event.preventDefault();
//阻止浏览器往下派发事件
event.stopPropagation();
//判断事件是否是起泡事件类型
console.log(event.bubbles);
//判断事件是否可拥可取消的默认动作
console.log(event.cancelable);
//事件绑定
function eventBinding(obj,type,handle){
if(obj.addEventListener){
//非ie
obj.addEventListener(type,handle,false);
}else if(obj.attachEvent){
//ie
obj.attachEvent('on' + type,handle);
}else{obj['on' + type] = handle;}
}
//手机拖动事件
$(function() {
var startX, startY, endX, endY;
document.getElementById("shoplist").addEventListener("touchstart", touchStart, false);
document.getElementById("shoplist").addEventListener("touchmove", touchMove, false);
document.getElementById("shoplist").addEventListener("touchend", touchEnd, false);
function touchStart(event) {
var touch = event.touches[0];
startY = touch.pageY;
}
function touchMove(event) {
var touch = event.touches[0];
endY = (startY - touch.pageY);
}
function touchEnd(event) {
if(endY>100){
//加载更多
$(".loadMore").click();
}
}
});
// 停止body页面滚动
function stopTouchMove(e) {
bodyScollTop=$('body').scrollTop();
$("body,html").css({"overflow":"hidden"});
return false;
}
// 开始页面滚动
function startTouchMove(e) {
$('body').scrollTop(bodyScollTop);
$("body,html").css({"overflow":"auto"});
return false;
}
//多行文字两端对齐
$("#CompanyIntroduction p").css({'textalign':'justify','letter-spacing':'-.15em'});
var text = $("#CompanyIntroduction p").html().split("").join(" ").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '').split("").join(" ").replace(/\s{3}/g, " ");//添加空格 处理3个空格情况
$("#CompanyIntroduction p").html(text);
//文字两端对齐方法
function fn_TextJustify(Obj) {
var t=$(Obj).addClass('.TextJustify').text();
// 手机端
// $(Obj).css({'letter-spacing':'-.15em'});
// var t2=t.html().split("").join(" ").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '').split("").join(" ").replace(/\s{3}/g, " ");
// pc端
var t2=t.split("").join(" ");
$(Obj).html(t2).attr('data-text',t);
}
//处理3个空格情况
box.innerHTML = box.innerHTML.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '').split("").join(" ").replace(/\s{3}/g, " ")
//多行文字超出隐藏
$("#CompanyIntroduction").each(function(i){
var divH = $(this).height();
var $p = $("p", $(this)).eq(0);
while ($p.outerHeight() > divH) {
$p.text($p.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
};
});
IE 注释
除了IE以外的版本
<!--[if IE 6]>
只有IE6版本可见
<![endif]-->
<!--[if lte IE 6]>
IE6及其以下版本可见
<![endif]-->
<!--[if gte IE 6]>
IE6及其以上版本可见
<![endif]-->
<!--[if IE 7]>
只有IE7版本可见
<![endif]-->
<!--[if lte IE 7]>
IE7及其以下版本可见
<![endif]-->
<!--[if gte IE 7]>
IE7及其以上的版本可见
<![endif]-->
<!--[if IE 8]>
只有IE8版本可见
<![endif]-->
<!--[if lte IE 8]>
IE8及其以下的版本可见
<![endif]-->
<!--[if gte IE 8]>
IE8及其以上的版本可见
<![endif]-->
<![if !IE]>
除了IE以外的版本
<![endif]>
火狐 浏览器 页面比例显示不正常 问题
//关于 火狐 浏览器 页面比例不正常问题 (屏幕的像素比)
layout.css.devPixelsPerPx 值 改为 1
//火狐 RemoteLiveReload liveReload 插件
//谷歌 LiveReload liveReload 插件
//sublime LiveReload liveReload 插件
//liveReload 插件配置 (文件修改-浏览器自动刷新)
{
"enabled_plugins": [
"SimpleReloadPlugin",
"SimpleRefresh"
]
}
sublime配置
//用户配置
{
"always_show_minimap_viewport": true,
"auto_complete": true,
"auto_match_enabled": true,
"color_scheme": "Packages/Color Scheme - Default/Solarized (Light).tmTheme",
"default_encoding": "UTF-8",
"default_line_ending": "Unix",
"dpi_scale": 1.0,
"ensure_newline_at_eof_on_save": true,
"fade_fold_buttons": true,
"fold_buttons": true,
"font_face": "Consolas",
"font_size": 12,
"highlight_line": true,
"ignored_packages":
[
"Vintage"
],
"show_encoding": true,
"show_line_endings": true,
"tab_size": 2,
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"update_check": false
}
php_给文件加MD5
// MD5
// $filename = "./includes/libraries/javascript/base.css";
function code6($url){
$result = sprintf("%u",crc32($url));
$code = '';
while($result >0){
$s = $result % 62;
if($s > 35){
$s=chr($s+61);
}elseif($s>9 && $s<=35){
$s=chr($s+55);
}
$code .= $s;
$result = floor($result / 62);
}
return $code;
}
$url = $_GET["file"];
// $md5file = md5_file($url);
$md5file = md5_file($url);
$arr = explode('/',$url);
$filename= $arr[count($arr)-1];
$short = code6($md5file);
$filename1 = str_replace(".",'.'.$md5file.'.',$filename);
$filename2 = str_replace(".",'.'.$short.'.',$filename);
echo $filename1."<br/>";
echo $filename2."<br/>";