移动端自适应:

移动端的编写首先需要在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. Listener refused the connection with the following error 错误解决

    原文地址 :http://blog.csdn.net/zajin/article/details/17753351 做个备份: 查询数据库当前进程的连接数: select count(*) from ...

  2. [资料分享]Python视频教程(基础篇、进阶篇、项目篇)

    Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...

  3. Jquery事件:鼠标移入移出(mouseenter,mouseleave)

    前几天帮朋友做了一个单页面,其中有个效果就是鼠标移动到头像上变换头像样式,当鼠标移出时恢复头像样式.当时没多想,脑子就蹦出了mouseover,mouseout两个方法. 但是在编写页面的过程中,无论 ...

  4. Hello Java

    用记事本或者Eclipse编写如下代码 public class JavaAPP{       public static void main(String[] args){       System ...

  5. db2 游标使用

    游标一般用来迭代结果集中的行 为了在一个过程中处理一个游标的结果,需要做以下事情: 在存储过程块的开头部分 DECLARE 游标. 打开该游标. 将游标的结果取出到之前已声明的本地变量中(隐式游标处理 ...

  6. Lua系统库

    Lua为了保证高度的可移植性,因此,它的标准库仅仅提供了非常少的功能,特别是和OS相关的库.但是Lua还提供了一些扩展库,比如Posix库等.对于文件操作而言,该库仅提供了os.rename函数和os ...

  7. USACO翻译:USACO 2014 JAN三题(1)

    USACO 2014 JAN 一.题目概览 中文题目名称 滑雪场设计 滑雪降速 滑雪场评级 英文题目名称 skidesign slowdown skilevel 可执行文件名 skidesign sl ...

  8. poj2389-Bull Math(大整数乘法)

    一,题意: 大整数乘法模板题二,思路: 1,模拟乘法(注意"逢十进一") 2,倒序输出(注意首位0不输出) 三,步骤: 如:555 x 35 = 19425  5 5 5  5 5 ...

  9. PHP 全局变量 $_REQUEST 的分析

    PHP 中的 $_REQUEST 变量是指 HTTP Request 变量. $_REQUEST 变量中包含哪些值,需要根据 php.ini 中的 request_order 设置,我测试的环境是 P ...

  10. jQuery命名空间,插件开发

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...