1. H5标签之浏览器兼容性

在移动端时可以放心的使用h5相关的标签

但是如果需要兼容一些低版本的浏览器,例如IE6/7/8,此时可以到  【兼容】 下载一个 html5shiv.min.js  文件,引入即可

2. JS之浏览器兼容性

例如在使用requestAnimationFrame之前我们不知道浏览器支不支持,那么就可以通过如下语句去进行判断:

if (window.requestAnimationFrame) {

} else {

}

这样的做法是可以的,但是我想我们还应该考虑一点就是,如果浏览器是部分支持呢?此时又该如何应对?

那么可以像下面这样写:

var requestAnimationFrame = window.requestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame ||

window.oRequestAnimationFrame ||

window.msRequestAnimationFrame ||

function(fn) {

setTimeout(fn, 16);

};

requestAnimationFrame(function() {

console.log(1);

});

3. CSS3之浏览器兼容性

如果需要兼容一些低版本的浏览器,例如IE6/7/8,此时可以到  【兼容】  下载一个  modernizr.js  文件,引入即可

 例如:

/*支持的情况下*/

.flexbox header {

display: -webkit-flex;

display: -moz-flex;

display: -ms-flex;

display: -o-flex;

display: flex;

justify-content: center;

-ms-align-items: center;

align-items: center;

}

/* 不支持的情况下 */

.no-flexbox header {

text-align: center;

line-height: 50px;

}

4. 移动端动画

(注:打√的标识支持,红色的√表示在移动端下推荐这样做,打×的表示不支持)

公共部分:

         * {padding: 0;margin: 0;}
<button id="btn">start</button>
<div id="box" class="box"></div>

示例1--使用CSS3做动画:

 .box {width: 100px;height: 100px;background-color: red;/*方式1position: absolute;transition: left margin-left 1s;*//*方式2transition: transform 1s;*/transition: transform 1s;}
<script>var boxEl = document.getElementById('box'),btnEl = document.getElementById('btn');// innerWidth表示可视区的宽度;dest目标地址var dest = window.innerWidth - 100;btnEl.addEventListener('click', function() {move(boxEl, dest); //方式1// boxEl.style.transform = 'translate3d(' + dest + 'px,0,0)'; 方式2}, false);function move(el, position) {el.style.transform = 'translate3d(' + position + 'px, 0, 0)';}
</script>

当点击按钮后:

示例2--使用JS:

 .box {width: 100px;height: 100px;background-color: red;}
 <script>var requestAnimationFrame = window.requestAnimationFrame ||window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||window.msRequestAnimationFrame ||window.oRequestAnimationFrame ||function(fn) {setTimeout(fn, 16);};// 获取相关元素var boxEl = document.getElementById('box'),btnEl = document.getElementById('btn');// 设置目标地址var dest = window.innerWidth - 100,speed = 10, //设置速度position = 0; //设置初始位置btnEl.addEventListener('click', function() {requestAnimationFrame(step);}, false);function move(el, position) {el.style.transform = 'translate3d(' + position + 'px, 0, 0)';}function step() {// 先判断当前位置到没到目标位置if (position < dest) {// 更新position += speed;// 运动一步move(boxEl, position);// 运动完后请求下一个位置requestAnimationFrame(step);} else { //如果大于等于了目标位置// 就让它等于目标位置将其移回来position = dest;move(boxEl, position);}}
</script>

5. click300ms延迟

原因:

double click 双击

解决办法:

a.在头部mate标签中写了 content="width=device-width",那么浏览器便会自动将300ms延迟去掉(部分浏览器支持)

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">

如果去掉 content="width=device-width",则:

 * {padding: 0;margin: 0;}.box {width: 300px;height: 300px;background-color: red;margin: 0 auto;}
<div id="box" class="box"></div>
<script src="http://192.168.1.5:1337/vorlon.js"></script>
<script>var boxEl = document.getElementById('box');var startTime = 0;boxEl.addEventListener('touchstart', function() {startTime = Date.now();console.log('touchstart');}, false);boxEl.addEventListener('click', function() {console.log('click');console.log(Date.now() - startTime);}, false);
</script>

当点击红色区域后:

如果不去掉 content="width=device-width",则:

b.引入 fastclick 库  fastclick

<script src="js/fastclick.js"></script>
<script src="http://192.168.1.5:1337/vorlon.js"></script>
<script>if ('addEventListener' in document) {document.addEventListener('DOMContentLoaded', function() {FastClick.attach(document.body);}, false);}
</script>

6. 单行和多行文字溢出省略

公共部分:

* {padding: 0;margin: 0;}body {font-size: 12px;color: #5d655b;}a {font-size: 12px;color: #686868;text-decoration: none;-webkit-tap-highlight-color: transparent;}img {vertical-align: top;border: none;width: 100%;}/*recommend*/.recommend-item {width: 50%;background-color: #fff;box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.12);margin: 20px auto;}.recommend-link {display: block;width: 100%;height: 100%;}.recommend-pic {width: 100%;margin-bottom: 8px;}.recommend-img {width: 100%;height: 100%;}.recommend-name,.recommend-origPrice,.recommend-info {padding: 0 10px;margin-bottom: 8px;}.recommend-origPrice {color: #ccc;}.recommend-info {display: flex;justify-content: space-between;align-items: center;}.recommend-price {color: #e61414;}.recommend-price-num {font-size: 20px;}.recommend-count {color: #999;}

单行文字溢出省略:

/* 单行文字溢出隐藏 */.text-ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
 <div class="recommend-item"><a href="###" class="recommend-link"><p class="recommend-pic"><img src="img/1.jpg" alt="recommend" class="recommend-img"></p><p class="recommend-name text-ellipsis">欧派整体橱柜定制简约现代 欧派整体橱柜定制简约现代欧派整体橱柜定制简约现代欧派整体橱柜定制简约现代</p><p class="recommend-origPrice"><del>¥2000.00</del></p><p class="recommend-info"><span class="recommend-price">¥<strong class="recommend-price-num">1000</strong></span><span class="recommend-count">985件已售</span></p></a></div>

但是如果设置flex布局的话(flex布局不能直接与之使用):

.recommend-name {display: flex;/* 设置水平垂直居中 */justify-content: center;align-items: center;}

此时会发现单行省略并不生效

但是我们可以经过下处理后在使用:

<p class="recommend-name"><span class="text-ellipsis">欧派整体橱柜定制简约现代 欧派整体橱柜定制简约现代欧派整体橱柜定制简约现代欧派整体橱柜定制简约现代</span></p>

这样问题就解决了

多行文字溢出省略:

.multiline-ellipsis {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;white-space: normal !important;word-wrap: break-word;}
 <p class="recommend-name multiline-ellipsis">欧派整体橱柜定制简约现代 欧派整体橱柜定制简约现代欧派整体橱柜定制简约现代欧派整体橱柜定制简约现代</p>

多行可以直接和flex布局一起使用:

.recommend-name {display: flex;justify-content: center;align-items: center;}
.multiline-ellipsis {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;white-space: normal !important;word-wrap: break-word;}

但是此时如果给该容器增加固定高度后,就会出现问题:

高度给小了:

.recommend-name {height: 10px;}

高度给大了:

 .recommend-name {height: 100px;}

7. 水平居中和垂直居中

 公共部分:

         * {box-sizing: border-box;padding: 0;margin: 0;}.modal-wrapper {position: fixed;top: 0;right: 0;bottom: 0;left: 0;z-index: 1000;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.4);}.modal {overflow: hidden;background-color: #fff;border-radius: 10px;font-size: 16px;}
 <div class="modal-wrapper"><span class="modal">单行文字水平垂直居中</span><!-- <span class="modal">多行文字水平垂直居中 多行文字水平垂直居中多行文字水平垂直居中</span> --></div>

容器宽高自适应 没有指定宽高 内容撑开

1-1 内联元素 不能设置宽高 内容撑开:

1-1-1 文字水平垂直居中 多行文字

.modal{display: inline;padding: 0 20px;
}

1-1-2 容器水平垂直居中 内联元素

.modal{position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);
}

或者:

.modal-wrapper{display: flex;justify-content: center;align-items: center;
}

 1-2 内联块元素 不能设置宽高 内容撑开:

1-2-1 文字水平垂直居中 多行/单行文字

.modal{display: inline-block;padding: 30px 20px;
}

1-2-2 容器水平垂直居中 内联块元素

.modal{position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);
}

1-3 块元素 不能设置宽高:

1-3-1 文字水平垂直居中 多行/多行文字

.modal{display: block;text-align: center;padding: 30px 0;
}

1-3-2 容器水平垂直居中 块元素

.modal{position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);
}

2 指定容器宽高宽高

2-1 内联元素 不能设置宽高 内容撑开:

2-2-1 文字水平垂直居中单行文字

.modal{display: inline-block;width: 300px;height: 100px;text-align: center;line-height: 100px;
}

2-2-1-2 文字水平垂直居中多行文字

.modal{整体垂直水平居中display: inline-block;width: 300px;height: 100px;display: flex;justify-content: center;align-items: center;
}

2-2-2 容器水平垂直居中 内联块元素

.modal{display: inline-block;width: 300px;height: 100px;text-align: center;line-height: 100px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);
}

或者:

.modal{display: inline-block;width: 300px;height: 100px;text-align: center;line-height: 100px;position: absolute;left: 50%;top: 50%;margin-left: -150px;margin-top: -50px;
}

 2-3 块元素 设置宽高:

2-3-1 文字水平垂直居中 多行文字

.modal{display: block;width: 300px;height: 100px;text-align: center;line-height: 100px;
}

2-3-2 容器水平垂直居中 块元素

.modal{width: 300px;height: 100px;text-align: center;line-height: 100px;position: absolute;left: 50%;top: 50%;/*方式1*/transform: translate(-50%, -50%);/* 方式2margin-left: -150px;margin-top: -50px; */
}

总结:

水平居中

垂直居中:

移动常见问题--H5标签之浏览器兼容性、JS之浏览器兼容性、CSS3之浏览器兼容性、移动端动画、click300ms延迟、单行和多行文字溢出省略、水平居中和垂直居中相关推荐

  1. H5标签在IE浏览器下的兼容性问题

    H5是在IE9以及以上浏览器中才支持,IE8及以下不支持H5标签,但是在IE9浏览器中还会存在一些问题 1.IE9中的问题 IE9浏览器会将H5部分语义化标签,解析为行内元素,比如:main标签. 解 ...

  2. android网页打印,安卓网页打印,h5页面打印,浏览器打印,js打印工具

    Android设备打印比较麻烦,一般设备厂商都提供原生app开发的SDK,我们web开发者为难了,不会原生开发啊 给大家提供一个思路,实现web加壳,利用打印浏览器实现 简单来说就是把我们的web页面 ...

  3. 浏览器兼容性JS问题

    今天整理了一下浏览器对JS的兼容问题,希望能给你们带来帮助,我没想到的地方请留言给我,我再加上: 常遇到的关于浏览器的宽高问题: //以下均可console.log()实验     var winW= ...

  4. H5标签<video>安卓端兼容性问题

    H5标签<video>在安卓端兼容问题 1.autoplay不能正常生效 解决:使用muted属性可以自动播放 2.不能正常显示视频第一帧作为封面 解决:使用poster="ti ...

  5. html5语义化标签 加粗,html5标签 H5标签

    html> h5文本元素 1.文本元素 2.加粗文字 b 3.倾斜文字 i 4.删除文字 del 5.加粗文字2 strong 6.安全换行 wbr~~~ 7.强调 倾斜元素 em 8.删除线2 ...

  6. a标签下载图片及js执行下载图片

    原因: 我发现href的值是网络地址就是添加了download属性还是会直接打开图片而不是直接下载,只有写成相对地址添加了download属性才会执行下载,但是存在兼容性问题 如下: <a hr ...

  7. linux输入数字切换浏览器tab,js监听浏览器tab窗口切换

    js监听浏览器tab窗口切换 --IT唐伯虎 摘要:js监听浏览器tab窗口切换. if (document.hidden !== undefined) { document.addEventList ...

  8. 火狐浏览器调试js技巧_充分利用Firefox的最佳技巧和调整

    火狐浏览器调试js技巧 Firefox is one of the more popular web browsers that runs on Windows, Linux, and Mac OS ...

  9. node 没有界面的浏览器_node.js爬虫入门(二)爬取动态页面(puppeteer)

    之前第一篇爬虫教程node.js爬虫入门(一)爬取静态页面讲解了静态网页的爬取,十分简单,但是遇到一些动态网页(ajax)的话,直接用之前的方法发送请求就无法获得我们想要的数据.这时就需要通过爬取动态 ...

最新文章

  1. Delegate和Command Pattern
  2. SAP系统财务模块的集团公司处理模式
  3. 具有Rx-Java的Couchbase Java SDK
  4. html提交表单使用python计算_教你使用Python实现新个税计算器
  5. 知识图谱组队学习Task04——知识库的查询语句
  6. PaaS适用于哪些场景?让案例说话
  7. 相声登上直播平台 传统艺术能借风口浴火重生吗?
  8. D1-H哪吒 设置hdmi分辨率
  9. dmx512 java_DMX512控制协议及其实现
  10. linux里的tree 命令,Linux中tree命令起什么作用呢?
  11. 原生开发什么意思_原生开发和混合开发的优劣势都是什么?
  12. 解决删除凭据管理器后仍然可以访问问题
  13. 总线宽度为32bit,时钟频率为200MHz,若总线上每5个时钟周期传送一个32bit的字,则该总线的带宽为 (4) MB/S。...
  14. 临近下班又开会,熬夜加班写纪要,语音转写还收费……
  15. 【算法】快速排序算法原理及实现
  16. Pixhawk飞控代码(2019.11.28)
  17. 计算机管理 看内存个数,如何知道/查看内存槽数
  18. 智慧树工业机器人测试答案_智慧树工业机器人答案章节单元测试答案
  19. 复杂网络中重要节点挖掘方法综述
  20. QUnit 单元测试简介

热门文章

  1. 900 Sentences
  2. Origin1——设置坐标轴、字体、标签等
  3. Windows 10 设置开机自动连接宽带
  4. IEEE 文献下载,文献下载,知网下载
  5. Debug:ValueError: malformed node or string
  6. 批量修改Excel中的图片大小方法
  7. R语言读取文件报错之二:Error in read.table(“xxxx.txt“, header = TRUE) : 列的数目比列的名字要多
  8. 忍者必须死显示无法连接服务器,忍者必须死为什么不能登录
  9. 配置华为防火墙NAT功能
  10. LD3320语音识别模块:LDV7模块使用详解