资讯专栏INFORMATION COLUMN

遇到的几个浏览器兼容性问题

YacaToy / 3248人阅读

摘要:背景解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决方式记录下来,下次遇到就直接拿过来用,也希望对他人有一些帮助。

背景
解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决方式记录下来,下次遇到就直接拿过来用,也希望对他人有一些帮助。

兼容性问题及解决方式

1.object-fit在ie11和edge中不兼容,可以一些css hacks
使用background-size和background-position替换object-fit设置图片的样式

</>复制代码

  1. .loadingImage {
  2. width: 100%;
  3. height: 100%;
  4. transition: all 1s ease;
  5. object-fit: cover;
  6. }

上述代码中可以修改为如下:

</>复制代码

  1. .loadingImage {
  2. width: 100%;
  3. height: 100%;
  4. background-size: cover;
  5. background-position: center;
  6. background-image: url(url);
  7. }

对于视频播放,object-fit:cover可以解决视频不会随着屏幕缩放的问题

</>复制代码

  1. .video {
  2. width: 100%;
  3. height: auto;
  4. position: relative;
  5. left: 50%;
  6. top: 50%;
  7. transform: translate(-50%, -50%);
  8. object-fit: cover;
  9. }

可以使用如下css设置video标签,解决object-fit不兼容ie和edge的问题

</>复制代码

  1. .video {
  2. width: 100%;
  3. height: auto;
  4. position: relative;
  5. left: 50%;
  6. top: 50%;
  7. transform: translate(-50%, -50%);
  8. object-fit: fill;
  9. }

2.window.onload事件会在图片等资源加载完成后执行方法,但是它不会检测视频资源是否加载完成,可以使用如下代码检测视频是否加载完成

</>复制代码

  1. let video = document.getElementById("video")
  2. if (video.readyState === 4) {
  3. console.log("finish!")
  4. }

3.css的transition执行完成后会触发transitionend事件,但是存在兼容性,可以使用下面代码解决浏览器间的兼容性

</>复制代码

  1. function checkTransitionEvent() {
  2. var el = document.createElement("div")
  3. var transitions = {
  4. "transition":"transitionend",
  5. "OTransition":"oTransitionEnd",
  6. "MozTransition":"transitionend",
  7. "WebkitTransition":"webkitTransitionEnd"
  8. }
  9. for(t in transitions){
  10. if( el.style[t] !== undefined ){
  11. return transitions[t];
  12. }
  13. }
  14. }

4.onwheel事件兼容性

</>复制代码

  1. support() {
  2. let support = "onwheel" in document.createElement("div") ? "wheel" : // Modern browsers support "wheel"
  3. document.onmousewheel !== undefined ? "mousewheel" : // Webkit and IE support at least "mousewheel"
  4. "DOMMouseScroll";
  5. return support
  6. },

5.wheel事件的wheelDelta和detail属性在不同浏览器下值不同,可以使用如下代码对其进行normalize,参考https://stackoverflow.com/que...

</>复制代码

  1. var wheelDistance = function(evt){
  2. if (!evt) evt = event;
  3. var w=evt.wheelDelta, d=evt.detail;
  4. if (d){
  5. if (w) return w/d/40*d>0?1:-1; // Opera
  6. else return -d/3; // Firefox; TODO: do not /3 for OS X
  7. } else return w/120; // IE/Safari/Chrome TODO: /3 for Chrome OS X
  8. };
  9. var wheelDirection = function(evt){
  10. if (!evt) evt = event;
  11. return (evt.detail<0) ? 1 : (evt.wheelDelta>0) ? 1 : -1;
  12. };

6.requestAnimationFrame兼容性

</>复制代码

  1. let cancelAnimationFrame = window.cancelAnimationFrame
  2. || window.mozCancelAnimationFrame
  3. || function(id) { clearTimeout(id) };
  4. let requestAnimationFrame = window.requestAnimationFrame
  5. || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame
  6. || window.msRequestAnimationFrame
  7. || function (callback) { return setTimeout(callback, 1000 / 60) };

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/52997.html

相关文章

  • 遇到几个浏览兼容问题

    摘要:背景解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决方式记录下来,下次遇到就直接拿过来用,也希望对他人有一些帮助。 背景解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决...

    JeOam 评论0 收藏0
  • 遇到几个浏览兼容问题

    摘要:背景解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决方式记录下来,下次遇到就直接拿过来用,也希望对他人有一些帮助。 背景解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决...

    isLishude 评论0 收藏0
  • 学习笔记:让元素永久置底的几种方案(css only)

    摘要:我们权且把这种解决方案叫术语解释顾名思义就是使用来实现有粘性的置底元素。下面就为大家讲讲几种解决方案,以及这些解决方案的优缺点和兼容性。 前言 很多同学在使用css+html写页面的时候,可能会遇到这样的场景: 页面除了头部和底部外,中间部分的内容为空时,页面就会出现底部向上顶,也就是头部和底部黏在一起了。 最近开发页面,也遇到了这个问题,经过查阅很多文章和资料后,整理出这篇文章,希望...

    caikeal 评论0 收藏0
  • CSS 最核心几个概念

    摘要:本文将讲述中最核心的几个概念,包括盒模型等。块级元素的默认为,而内联元素则是根据其自身的内容或子元素来决定其宽度。如果该元素的下一个兄弟元素中有内联元素通常是文字,则会围绕该元素显示,形成类似文字围绕图片的效果。 本文将讲述 CSS 中最核心的几个概念,包括:盒模型、position、float等。这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成。为了掌握它们...

    SwordFly 评论0 收藏0
  • Python的中文编码问题

    摘要:使用中文替代中文中文编码中文编码中有以上两种声明字符串变量的方式,它们的主要区别是编码格式的不同,其中,的编码格式和文件声明的编码格式一致,而的编码格式则是。 字符串是Python中最常用的数据类型,而且很多时候你会用到一些不属于标准ASCII字符集的字符,这时候代码就很可能抛出UnicodeDecodeError: ascii codec cant decode byte 0xc4 ...

    Cheriselalala 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<