移动端自适应:

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

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

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

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

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

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

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

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

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

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

如下:

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

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

autoprefixer

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

浏览器返回页面的处理

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

  1. $DOM.on('click',function(){
  2. back();
  3. // 跳转URL
  4. });
  5.  
  6. function back() {
  7. setTimeout(function(){
  8. // 从服务器上拉去需要同步的数据
  9. },1000);
  10. }

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

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

compositionstart

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

compositionend

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

以下为代码:

  1. var inputType = false;
  2.  
  3. $content.on('input',function () {
  4. if (!inputType) {
  5. //TODO 进行计数
  6. }
  7. });
  8.  
  9. $content.on('compositionstart',function(){
  10. inputType = true;
  11. });
  12.  
  13. $content.on('compositionend',function(){
  14. inputType = false;
  15. });

阻止页面滑动

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

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

  1. function preventDefault(e) {
  2. e.preventDefault();
  3. }
  4.  
  5. // 阻止页面滑动
  6. function unable() {
  7. document.addEventListener('touchmove', preventDefault);
  8. }
  9.  
  10. // 取消阻止页面滑动
  11. function enable(){
  12. document.removeEventListener('touchmove',preventDefault);
  13. }

函数节流

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

  1. var i = 0;
  2. function throttle(method, context) {
  3. clearTimeout(method.tId);
  4. method.tId = setTimeout(function() {
  5. method.call(context);
  6. }, 100);
  7. }
  8.  
  9. function showIndex() {
  10. console.log(i++);
  11. }
  12.  
  13. $(document).scroll(function() {
  14. throttle(showIndex);
  15. });

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

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

DOM结构解析

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

  1. /**
  2. * 截函数
  3. **/
  4. function domReady(f) {
  5. if(domReady.done) return f();
  6. if(domReady.timer) {
  7. domReady.ready.push(f);
  8. } else {
  9. isDOMReady();
  10. domReady.ready = [f];
  11. domReady.timer = setInterval(isDOMReady, 13);
  12. }
  13. }
  14.  
  15. /**
  16. * 判断dom结构是否加载
  17. **/
  18. function isDOMReady() {
  19. if(domReady.done) return false;
  20. // 判断依据
  21. if(document && document.getElementsByTagName && document.getElementById && document.body) {
  22. clearInterval(domReady.timer);
  23. domReady.timer = null;
  24. for(var i = 0,len = domReady.ready.length; i < len; i++) {
  25. domReady.ready[i]();
  26. domReady.ready = null;
  27. domReady.done = true;
  28. }
  29. }
  30. }
  31.  
  32. domReady(function(){
  33. alert('DOM结构已经解析好了')
  34. });

判断一些浏览器的特性

直接看代码

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

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. 如何转换WMV到MP3,WMV到MP3播放器

    非常好的软件!!!!!没有注册,可以用.推荐给大家! http://www.daniusoft.com/cn/convert-wmv/wmv-to-mp3.html http://hi.baidu.c ...

  2. windows 2008 server NTP Server

    1. 选择一台服务器作为时间同步服务器. 2. 运行Regedit,打开注册表编辑器. 3. 找到注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser ...

  3. Queue 的用法

    对Queue 进队出队的使用不是很了解,刷题时想要直接用,所以查了一下.平时用的话用add 和remove 即可. Queue<E> 是接口. LinkedList 实现了Queue接口, ...

  4. Windows平台下为Python添加MongoDB支持PyMongo

    到Python官网下载pymongo-2.6.3.win-amd64-py2.7.exe 安装pymongo-2.6.3.win-amd64-py2.7.exe 参照官方的用例进行测试 打开命令提示符 ...

  5. 如何保存微信的小视频 How to keep WeChat 'Sights'

    微信小视频非常方便,但很难将其下载到本地电脑长期保存.网上有介绍方法,如百度经验上办法,但目前看来它可能只适用安卓系统,而且或已失效(可能由于版本更新).对Windows Phone无效,而对于更加封 ...

  6. 洛谷 P1529 回家 Bessie Come Home Label:Dijkstra最短路 && 乱搞

    题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛). 在挤奶 ...

  7. 【Alpha】Daily Scrum Meeting第九次

    一.本次Daily Scrum Meeting主要内容 汇报情况. 上次提到的数据库字段问题,已经和合作队伍统一完毕. 在服务器上解析Json数据仍在解决中,现在直接使用手机发过去的数据进行解析. 二 ...

  8. 基于jquery上的轻量级《数据模板解析》插件

    1.先上一个栗子. <!doctype html> <html lang="en"> <head> <meta charset=" ...

  9. 一个修改过简化版的InputQuery

    主要是觉得在单输入的情况下, 原来InputQuery输入框左边的文本太难看了...... function _InputQuery(const ACaption: string; const APr ...

  10. css定位 与position

    本文同时发表于本人个人网站 www.yaoxiaowen.com 在正式讨论position之前,我们需要知道几个概念. 块元素:独占一行的元素.比如div,h1~h6,p等,它是自带换行的. 内联元 ...