本文就两个例子跟大家分享一下background-image与background-size的渐变(transition)所带来的方便与“深坑”

首选,说说这东西好的地方,有时候在做PC项目的时候,可能会碰到这种需求:要求鼠标移入一个ICON或者一张图片的时候要求显示另外一张图片,并且带有渐变的效果。

那么对于类似于我这种经验不是特别成熟的前端来说,肯定会想找到经理说,大哥可不可以把它改成色块,绝对可以完成任务。因为很简单啊,映像中颜色的渐变还是很容易实现的,当然啦,日子不可能像你梦想的那样好过,“必须按需求实现”。

然后我就想着1、要切换图片,2、要渐变效果。如果是以前的话,我肯定是弄两个不同的标签咯,然后hover的时候分别fadeIn,fadeOut,  对!这个很容易实现嘛对吧,但是我觉得呢,做WEB前端应该需要坚持:能用CSS解决的,绝不用JS。为什么呢?因为···(自己百度去)

言归正传,只用CSS实现上面两个要求

我就想着要渐变,那就肯定是CSS3的transition了,但是图片能不能渐变,我还真的不知道,当时我就试着玩一下,

左边三个泡泡,默认的状态,背景啥的都写的很清楚了,现在把hover需要做的写进去(其实也没啥,不就是换个背景图片么,哎),

截图当然解释不了渐变的效果,你们可以自己试着玩儿,反正(background-image)背景图片也可以渐变就对啦.(可参考我的项目http://mysidechina.com/)

下面说说同样的东西把我坑了一下午的例子

简单点儿说吧,首先,可能你的页面上有这么一个元素需要有渐变,这里我就不管是width还是height还是top,left了,无所谓,因为你任性的写了个 “all” ,混蛋!!!谁让你写“all”的,就是这个坏了事儿,你可能兴高采烈的觉得我的这部分效果都有了,渐变的效果也很完美。然后,然后,然后,你可能碰到了一个新的需求,比如所,我们要求图片根据屏幕做自适应,那么这里我们肯定是根据窗口的比例和图片的比例进行计算然后确定到底是background-size:100% auto;还是background:auto 100%;  相信同胞们在项目中肯定碰到这样的需求吧,那么问题来了,我发现在更改了background-size这个属性的时候,页面上背景图片的位置并没有立马改变,而是过了几秒钟才变,尼玛···明明没问题啊,难道是JS的计算时间过长?当然啦,这个肯定而是考虑的可能性之一。

在经过排除其它的原因之后,发现了上面那个玩意儿,然后就瞬间顿悟了,这里有一个“all”和“transition-delay”拉了我的后腿,意思就是说,这里的all也包括了我们要修改的background-size,在延后2.5S之后才开始执行!!并且还有3秒钟的渐变,我了个天,这种中间就整整5.5秒了,不解释,赶紧赶紧赶紧把transition改了

乖乖的把"all"改成了"transform"。OK!问题真的解决了。

所以说啊,我们写CSS的时候也要养成好的习惯,那么针对这个渐变来说呢,就是:你需要什么属性有渐变那就写上什么,而不要动不动就给个"all",鬼知道你后面会不会在这个上面才坑啊,也有可能同事改你的代码的时候一直碰到BUG却不知道是这个原因影响的呢,所以“下手”慎重!

在项目中 background transiton 带来的"便利"与“坑”的更多相关文章

  1. 项目分享一:在项目中使用 IScroll 所碰到的那些坑

    最近做了个 WEB APP 项目,用到了大名鼎鼎的 IScroll,滚动的效果的确很赞,但是坑也是特别多,下面总结一下,希望自后来者有帮助. 该项目现已开源在 github 上,https://git ...

  2. react项目中引用amap(高德地图)坑

    最近在写一个react项目,用到了需要定位的需求,于是乎自己决定用高德地图(AMap),但是react官方文档的案列很少,大多都是原生JS的方法. 在调用amap的 Geocoder Api 时,一直 ...

  3. 查询时间倒退一天-项目中惊现神秘BUG-JsonFormat使用采坑记

    一.问题由来 前一天下午正在写代码的时候,领导突然走过来跟我说,让我去看一个神秘的BUG,说是在数据库中查询时的一个日期 返回到页面后,查询时间倒退了一天.一听到这个BUG,我就感觉很奇怪,还有这样的 ...

  4. 控制反转和spring在项目中可以带来的好处

    Spring实例化Bean的三种方式分别是: 1,xml配置使用bean的类构造器 <bean id="personService" class="cn.servi ...

  5. vue项目中打包background背景路径问题

    项目中图片都放在src/img文件夹,img和background-image引用都用相对路径,即../../这种形式 在打包build的设置路径assetsPublicPath: ‘./‘,然后那些 ...

  6. 转:C++项目中的extern "C" {}

    引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __c ...

  7. C++项目中的extern "C" {}

    from:http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html C++项目中的extern "C" {} 20 ...

  8. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理(转)

    在之前一篇随笔<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>介绍了PostSharp框架的使用,试用PostSharp能给我带来很多便利和优势,减少代码冗余,提高可 ...

  9. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理

    在之前一篇随笔<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>介绍了PostSharp框架的使用,试用PostSharp能给我带来很多便利和优势,减少代码冗余,提高可 ...

随机推荐

  1. python编码encode和decode

    计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk,utf-16等等. unicode是 utf-8,gbk,utf-16这些的父编码,这些子编码都能转换 ...

  2. 1.7.4.1 Function Queries-函数查询

    1 . Function Queries 函数查询使你可以使用一个或者多个数字字段的实际的值生成一个关联的得分(score),函数查询支持DixMax,eDisMax,标准的查询解析. 函数查询使用函 ...

  3. android -- WatchDog看门狗分析

    在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...

  4. LineNumberReader类的使用

    package com.lk.C; import java.io.IOException; import java.io.LineNumberReader; import java.io.PrintW ...

  5. Unity封装dll教程整理

    ///作者Unity3d师兄---LeroyYang 通过网上大神们的资料以及自己的整理,学习一下用vs2013简单的封装dll文件,方便接口模式下开发,使得逻辑层更为清晰. 操作步骤 1.打开vs2 ...

  6. Liunx UID and GID

    一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组. 如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的 ...

  7. 剑指Offer20 栈的压入弹出序列是否正确

    /************************************************************************* > File Name: 20_IsPopO ...

  8. Differential Geometry之第三章曲面的局部理论

    第三章.曲面的局部理论 1.曲面的概念 1.1.曲面的概念 1.2.切平面与法向 2.曲面的第一基本形式 3.曲面的第二基本形式 正定矩阵:一个n阶的实对称矩阵M是正定的的条件是当且仅当对于所有的非零 ...

  9. asp.net zip 压缩传输

    在实际生产中,比如使用xml json 等传输大量数据的时候,有时候会出现等待时间过长,这里分享一个压缩传输的方法 首先到网上去下载一个 ICSharpCode.SharpZipLib.dll 的dl ...

  10. 4种处理excel文件的技术

    1.OLE Automation:处理excel文件会启动一个excel的进程,程序和excel进程通信来处理excel文件,这种方式占用服务器资源,不适合于网站的开发. 2.把Excel当成数据库, ...