网页开发中浏览器兼容性问题怎么解决
Admin 2022-06-08 群英技术资讯 1489 次浏览
今天小编跟大家讲解下有关“网页开发中浏览器兼容性问题怎么解决”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。背景
解决浏览器的兼容性问题是一件很烦的事情,其中并没有太多高深的技巧,但是开发需要,也不得不去解决它,最近在开发项目中也遇到一些兼容性的问题,希望把这些问题的解决方式记录下来,下次遇到就直接拿过来用,也希望对他人有一些帮助。
兼容性问题及解决方式
1.object-fit在ie11和edge中不兼容,可以一些css hacks
使用background-size和background-position替换object-fit设置图片的样式
<img class="loadingImage" src="url"/>
.loadingImage {
width: 100%;
height: 100%;
transition: all 1s ease;
object-fit: cover;
}
上述代码中可以修改为如下:
<div class="loadingImage"></div>
.loadingImage {
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
background-image: url(url);
}
对于视频播放,object-fit:cover可以解决视频不会随着屏幕缩放的问题
<video class="video"></video>
.video {
width: 100%;
height: auto;
position: relative;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
object-fit: cover;
}
可以使用如下css设置video标签,解决object-fit不兼容ie和edge的问题
<video class="video"></video>
.video {
width: 100%;
height: auto;
position: relative;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
object-fit: fill;
}
2.window.onload事件会在图片等资源加载完成后执行方法,但是它不会检测视频资源是否加载完成,可以使用如下代码检测视频是否加载完成
<video id="video"></video>
let video = document.getElementById('video')
if (video.readyState === 4) {
console.log('finish!')
}
3.css的transition执行完成后会触发transitionend事件,但是存在兼容性,可以使用下面代码解决浏览器间的兼容性
function checkTransitionEvent() {
var el = document.createElement('div')
var transitions = {
'transition':'transitionend',
'OTransition':'oTransitionEnd',
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
}
for(t in transitions){
if( el.style[t] !== undefined ){
return transitions[t];
}
}
}
4.onwheel事件兼容性
support() {
let support = "onwheel" in document.createElement("div") ? "wheel" : // Modern browsers support "wheel"
document.onmousewheel !== undefined ? "mousewheel" : // Webkit and IE support at least "mousewheel"
"DOMMouseScroll";
return support
},
5.wheel事件的wheelDelta和detail属性在不同浏览器下值不同,可以使用如下代码对其进行normalize,参考https://stackoverflow.com/questions/5527601/normalizing-mousewheel-speed-across-browsers
var wheelDistance = function(evt){
if (!evt) evt = event;
var w=evt.wheelDelta, d=evt.detail;
if (d){
if (w) return w/d/40*d>0?1:-1; // Opera
else return -d/3; // Firefox; TODO: do not /3 for OS X
} else return w/120; // IE/Safari/Chrome TODO: /3 for Chrome OS X
};
var wheelDirection = function(evt){
if (!evt) evt = event;
return (evt.detail<0) ? 1 : (evt.wheelDelta>0) ? 1 : -1;
};
6.requestAnimationFrame兼容性
let cancelAnimationFrame = window.cancelAnimationFrame
|| window.mozCancelAnimationFrame
|| function(id) { clearTimeout(id) };
let requestAnimationFrame = window.requestAnimationFrame
|| window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame
|| window.msRequestAnimationFrame
|| function (callback) { return setTimeout(callback, 1000 / 60) };
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章给大家分享一些关于CSS 网格布局的知识点,带大家详细了解一下 CSS 网格布局,希望对大家有所帮助!
我们在做网站页面设计时,往往会遇到背景透明的需求。一般,我们会用opacity属性来设置div背景透明度,其实还有别方法也能实现背景透明,这篇文章就带大家介绍一下如何现实div背景透明,本文有详细的方法示例,感兴趣的朋友可以了解一下。
两个div默认情况下就是垂直排列的,代码如下: divstyle=border:5pxsolidred;哈哈哈/divdivstyle=border:5pxsolidblack;呵呵呵/div 效果如图: 但是有时候因为你设置了别的属性,div垂直排列怎么都不行,那该怎么办呢?解决方案有两种: 方式一:如果你想在d
css中::marker标记是什么?怎样使用?一些朋友可能对::marker标记的作用及使用不是很了解,因此这篇文章就给大家来介绍一下::marker标记,下文有示例及详细的介绍,接下来就跟随小编来学习一下吧。
我们在制作网页时,透明效果往往达到不错的视觉感受,所以CSS透明属性应用也是很多的。但是我们在使用CSS透明属性时,要注意两个问题,第一是浏览器兼容问题;第二是CSS透明度继承问题。下面我们来具体了解下。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008