移动端自适应:

移动端的编写首先需要在header写入以下内容来表示页面是以不缩放的形式展示的:

<meta name="viewport" content="width=device-width, initial-scale=1">

移动端需要做适配,可以用rem为单位来编写css,基于某一尺寸的UI设计稿来编写HTML和CSS,以下代码可以用来适配不同尺寸屏幕来显示:

document.addEventListener("DOMContentLoaded", function() {
// 适配
var clientWidth = document.documentElement.clientWidth < 640 ? document.documentElement.clientWidth : 640;
document.documentElement.style.fontSize = clientWidth / 7.5 * 2 + 'px';
});

如果要想显示的更加清晰的话,可以利用手机的设备像素比来设置viewport:

var scale = 1 / devicePixelRatio;
document.querySelector('meta[name="viewport"]').setAttribute('content',
'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');

解决ios上输入框与div左边对不齐的问题

在Iphone上会出现像input和textare等输入框元素里面的输入文字与同一层级的别的元素里面的文字没有对齐(具体原因不清楚),可以使用以下方法使之对齐:

if(/iPhone|iPad|iPod/i.test(navigator.userAgent)){
$('textarea').css('margin-left', '-3px');
}

本地图片选择后生成的URL是随机的

如下:

var URL = window.URL || window.webkitURL;
var fileURL = URL.createObjectURL(file);

如果用fileURL来判断是否为同一个文件将是不可行的,因为同一个文件生成的fileURL是不相同的

autoprefixer

autoprefixer插件可以让你只写主流的CSS,它会编译成兼容的css

浏览器返回页面的处理

不同浏览器对返回页面的处理不同,有的(如chrome,微信)会从新执行返回页面的js,有的(如Safari,Firefox)则会继续执行没有执行完的 js,如果返回页面上的某一部分需要数据同步的话,可以使用以下代码:

$DOM.on('click',function(){
back();
// 跳转URL
}); function back() {
setTimeout(function(){
// 从服务器上拉去需要同步的数据
},1000);
}

在输入法输入汉字拼音时的计数问题

用输入法输入汉字时,会先计数拼音的数目,敲回车后才会把正确的输入字符进行计数,这样就很不好了,可以利用如下方法进行处置:

compositionstart

  当浏览器有非直接的文字输入时, compositionstart事件会以同步模式触发.

compositionend

  当浏览器是直接的文字输入时, compositionend会以同步模式触发.

以下为代码:

var inputType = false; 

$content.on('input',function () {
if (!inputType) {
//TODO 进行计数
}
}); $content.on('compositionstart',function(){
inputType = true;
}); $content.on('compositionend',function(){
inputType = false;
});

阻止页面滑动

有时候需要弹出浮层阻止页面滚动来达到浮层占据整个屏幕,并使得后面的内容不随着手势的滑动而滚动的效果。

下面的方法可以阻止页面滚动和取消阻止页面滚动。

    function preventDefault(e) {
e.preventDefault();
} // 阻止页面滑动
function unable() {
document.addEventListener('touchmove', preventDefault);
} // 取消阻止页面滑动
function enable(){
document.removeEventListener('touchmove',preventDefault);
}

函数节流

函数节流是为了降低方法执行次数,来提高效率的,主要用在滚动事件上。代码如下:

var i = 0;
function throttle(method, context) {
clearTimeout(method.tId);
method.tId = setTimeout(function() {
method.call(context);
}, 100);
} function showIndex() {
console.log(i++);
} $(document).scroll(function() {
throttle(showIndex);
});

上面代码的时间设置为100毫秒,可以根据不同的需要设置不同值。

如果是动画的话,推荐根据浏览器的频率去做绘画,如js中的requestAnimationFrame()方法。

DOM结构解析

有时候在执行js时需要先拿到dom结构才不会报错,此段代码为dom结构解析的代码

 /**
* 截函数
**/
function domReady(f) {
if(domReady.done) return f();
if(domReady.timer) {
domReady.ready.push(f);
} else {
isDOMReady();
domReady.ready = [f];
domReady.timer = setInterval(isDOMReady, 13);
}
} /**
* 判断dom结构是否加载
**/
function isDOMReady() {
if(domReady.done) return false;
// 判断依据
if(document && document.getElementsByTagName && document.getElementById && document.body) {
clearInterval(domReady.timer);
domReady.timer = null;
for(var i = 0,len = domReady.ready.length; i < len; i++) {
domReady.ready[i]();
domReady.ready = null;
domReady.done = true;
}
}
} domReady(function(){
alert('DOM结构已经解析好了')
});

判断一些浏览器的特性

直接看代码

var userAgent = {
windows:ua.match(/Windows NT ([\d.]+)/),
weibo: ua.match(/__weibo__([\d.]+)/), // 新浪微博
weixin: ua.match(/MicroMessenger\/([\d.]+)/), // 微信
qq: ua.match(/QQ\/([\d.]+)/), // qq
ios: ua.match(/(iPhone|iPad|iPod|iOS)/i),
android: ua.match(/Android ([\d.]+)/),
sohunews: ua.match(/SohuNews\/([\d.]+)/),
sohusns: ua.match(/SohuSNS\/([\d.]+)/)
}

js的一些实用的小技巧的更多相关文章

  1. scanf和printf格式化输入输出中非常实用的小技巧

    输入输出几乎是每个C程序必须具备的功能,因为有了它们,程序才有了交互性.C提供的输入输出函数除了具有必须的输入输出功能外,还有一些其他实用的小技巧,了解这些小技巧将会为程序带来更友好的用户体验. 一. ...

  2. knockout.js $index 做列表索引小技巧

    我们都知道,在foreach binding中,使用$index可以得到基于0的索引序号,但在列表显示中,我们更希望这个索引是从1开始的,怎么处理呢? 这里,有个小技巧:使用$index() + 1, ...

  3. 分享几个 SpringBoot 实用的小技巧

    前言 最近分享的一些源码.框架设计的东西.我发现大家热情不是特别高,想想大多数应该还是正儿八经写代码的居多:这次就分享一点接地气的: SpringBoot 使用中的一些小技巧. 算不上多高大上的东西, ...

  4. 哪些window你不知道的却实用的小技巧----window小技巧

    前言 一直想要整理一篇有关于window比较全的使用小技巧,却又不知道从哪里开始写起.而让我准备动手写这边随笔的动力,还是在加入虫部落<一个绿色环保,充满朝气的好地方>,从大家的分享中,我 ...

  5. js-分享107个js中的非常实用的小技巧(借鉴保存)

    转载原文:http://***/Show.aspx?id=285 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:doc ...

  6. 记录一些实用的小技巧-JS篇

    1.16进制随机颜色 let color = '#'+Math.random().toString(16).slice(-6) 2.类型判断工具函数 function isType(target, t ...

  7. 写给Node.js新手的7个小技巧

    一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中. 无论如何,对于一些刚开始使 ...

  8. Photoshop中比较实用的小技巧

    Photoshop是目前最流行的图片处理软件软件之一.能够说,只要接触图片处理,就要和它打交道.Photoshop的强大功能和众多的优点不用多说.用photoshop做一些漂亮的图片,或对照片进行简单 ...

  9. JS Math对象中一些小技巧

    JS中快速获取数组中最大/最小值 var a=[1,2,3,5]; alert(Math.max.apply(Math, a));//最大值 alert(Math.min.apply(Math, a) ...

随机推荐

  1. Eclipse - 常用插件介绍

    1.MyBatis Generator 2.FindBugs Feature http://findbugs.cs.umd.edu/eclipse 待完善.

  2. OpenFOAM 学习路线 【转载】

    "Two weeks of playing with a CFD code will save you one afternoon of reading" 什么是OpenFOAM( ...

  3. C#最简单例子

    using System; namespace ConsoleApplication1 { class People { int age; string name; public string get ...

  4. Windows远程连接CentOS桌面

    VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件.VNC的基本运行原理和一些Windows下的远程控制软件很相像 VNC基本上是由两部 ...

  5. 与IE奋战的血泪史

    IE6下font-size会撑高元素,也就是说IE6下元素的最小高度为font-size的高度(蛋疼) IE6不支持两个class 例如 .a.b,类名不支持下划线开头 通过js设置样式带下划线的样式 ...

  6. JSON字符串语法

    JSON 语法是 JavaScript 对象表示语法的子集. 数据在键/值对中展示, 多个数据由逗号分隔, 花括号保存一个对象, 方括号保存一个数组 JSON具有以下形式: 1. 对象(object) ...

  7. PKUSC2016

    day x(x<0) 外出培训倒数第二天晚上发烧了....逃过了第二天早上的考试,orz 抢到rank 1 的commonc神犇!! day 0 下午到了北大,发了两张50元饭卡.这是第三次来北 ...

  8. iOS常用技术

    1.判断系统 #define UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersi ...

  9. ZeroMQ接口函数之 :zmq_disconnect - 断开一个socket的连接

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_disconnect zmq_disconnect(3) ØMQ Manual - ØMQ/3.2.5 Name ...

  10. ZeroMQ接口函数之 :zmq_unbind - 停止连接外来的请求

    ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_unbind zmq_unbind(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_unbi ...