码迷,mamicode.com
首页 > 其他好文 > 详细

仿京东首页,浏览器兼容小结

时间:2016-12-23 22:08:12      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:element   form   define   efi   动画   好的   function   支持   简单   

练习做了一个京东首页,使用不同浏览器测试了一下,发现了不少的问题,做一下总结。

地址:https://zhangcuizc.github.io/jd-new/

1、IE10

在IE10中基本正常,主要的问题是设置了链接的图片在IE10中都会有一个边框,不仅丑而且导致部分地方布局混乱,当然解决方法也很简单,在reset.css中重置所有图片的边框样式即可:

img{
    border:none;
}

2、IE9

IE9中主要有两个问题,一是不支持linear-gradient,所以使用渐变作为背景色会失效。比如正常情况下:

技术分享

代码如下:

.lovelife-list-item1 .lovelife-list-title{
    background: -webkit-linear-gradient(left, #974676, #9e4075);
    background: -o-linear-gradient(left, #974676, #9e4075);
    background: linear-gradient(to right, #974676, #9e4075);
}

在支持linear-gradient中使用当然不会有问题,但如果在IE9中,那么这样的代码就会导致没有背景色,最简单的解决办法是做降级处理,加上一句背景色声明即可,毕竟渐变还是纯色有时候影响并不大,或者根本看不出来:

.lovelife-list-item1 .lovelife-list-title{
    background-color: #974676;
    background: -webkit-linear-gradient(left, #974676, #9e4075);
    background: -o-linear-gradient(left, #974676, #9e4075);
    background: linear-gradient(to right, #974676, #9e4075);
}

这样会在不支持渐变的情况下显示背景色,比如:

技术分享

不过虽然问题解决了,我还是有一些疑问,在不支持linear-gradient的情况下只会应用bgc声明,这个好理解,可是在支持渐变的情况下,为什么即使改变了bgc声明的位置,渐变的声明也不会被覆盖呢,不都是颜色嘛?难道是bgc声明和bg的声明还有优先级?查了查CSS权威指南,好像没有这个说法。又在网上查了查,发现,还真不都是颜色。bgc声明的是背景色无误,然而linear-gradient是一个渐变图像!linear-gradient更具体的声明是background-image:linear-gradient(to right, #974676, #9e4075),这也就解释了为什么它们不会互相影响。

所以使用渐变的时候,一定要设置背景色!

在IE9中遇到的另一个问题是transtion过渡效果无效。

在这里实现的效果是利用transform和transtion实现鼠标悬浮在图片上时图片有一个移动的动画效果。由于transtion在IE9中无效,而transform在IE9中经过-ms-后是有效的,导致的结果就是很生硬的移动效果。看了看京东原版的页面,解决办法是在支持transition的情况下,给html标签设置一个特定的class,比如csstranstion,然后:

.csstranstion moveleft:hover{
    //tranform
    //transtion
}

这样的话在IE9中由于没有csstranstion类,所以:hover动画便无效,京东够能偷懒的,简单粗暴的解决办法……

检测浏览器是否支持transtion的jq方法:

    // jQuery.support.transition
    // to verify that CSS3 transition is supported (or any of its browser-specific implementations)
    $.support.transition = (function(){ 
        var thisBody = document.body || document.documentElement,
        thisStyle = thisBody.style,
        support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined;
                       
        return support; 
    })();

来源:http://mengqing.org/archives/jquery-browser-transition.html

3、Chrome

在强大的Chrome面前出现一个大问题,我知道是我代码写得不好……感觉firefox更强大,写再烂的代码都没有太大的问题。。

页面中有fixed的元素时,在鼠标滑过transtion和transform的动画时,很大几率造成fixed元素的闪动。

虽然知道问题出在transtion和transform,不过目前还没有找到更好的解决办法,有解决办法再来补充。

仿京东首页,浏览器兼容小结

标签:element   form   define   efi   动画   好的   function   支持   简单   

原文地址:http://www.cnblogs.com/zczhangcui/p/6216091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!