在项目中 background transiton 带来的"便利"与“坑”
本文就两个例子跟大家分享一下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 带来的"便利"与“坑”的更多相关文章
- 项目分享一:在项目中使用 IScroll 所碰到的那些坑
最近做了个 WEB APP 项目,用到了大名鼎鼎的 IScroll,滚动的效果的确很赞,但是坑也是特别多,下面总结一下,希望自后来者有帮助. 该项目现已开源在 github 上,https://git ...
- react项目中引用amap(高德地图)坑
最近在写一个react项目,用到了需要定位的需求,于是乎自己决定用高德地图(AMap),但是react官方文档的案列很少,大多都是原生JS的方法. 在调用amap的 Geocoder Api 时,一直 ...
- 查询时间倒退一天-项目中惊现神秘BUG-JsonFormat使用采坑记
一.问题由来 前一天下午正在写代码的时候,领导突然走过来跟我说,让我去看一个神秘的BUG,说是在数据库中查询时的一个日期 返回到页面后,查询时间倒退了一天.一听到这个BUG,我就感觉很奇怪,还有这样的 ...
- 控制反转和spring在项目中可以带来的好处
Spring实例化Bean的三种方式分别是: 1,xml配置使用bean的类构造器 <bean id="personService" class="cn.servi ...
- vue项目中打包background背景路径问题
项目中图片都放在src/img文件夹,img和background-image引用都用相对路径,即../../这种形式 在打包build的设置路径assetsPublicPath: ‘./‘,然后那些 ...
- 转:C++项目中的extern "C" {}
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __c ...
- C++项目中的extern "C" {}
from:http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html C++项目中的extern "C" {} 20 ...
- 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理(转)
在之前一篇随笔<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>介绍了PostSharp框架的使用,试用PostSharp能给我带来很多便利和优势,减少代码冗余,提高可 ...
- 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
在之前一篇随笔<在.NET项目中使用PostSharp,实现AOP面向切面编程处理>介绍了PostSharp框架的使用,试用PostSharp能给我带来很多便利和优势,减少代码冗余,提高可 ...
随机推荐
- IIS 之 HTTP Error 404.2 – Not Found(ISAPI 和 CGI 限制)
对于很多B/S架构的软件来说,在IIS中添加ISAPI和CGI限制功能是非常必要的,因为如果在IIS中不添加添加ISAPI和CGI限制功能可能会引起软件运行过程中报错,或者直接就登录不了. 1.允许I ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1]
转载:http://quweiprotoss.wap.blog.163.com/ Push data to Solr or have Solr pull it 尽管一个应用通过HTTP方式与Solr通 ...
- setsockopt
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...
- [Java] final的意义
1.如果一个数据既是static又是final,那么它会拥有一块无法改变的存储空间. 2.final data: 当final用于基本数据类型时,final让其值(value)保持不变,但是当用于ob ...
- 【阿里云产品公测】利用PTS服务优化网站数据库读写性能
[阿里云产品公测]利用PTS服务优化网站数据库读写性能 作者:阿里云用户千鸟 写这个帖子主要也是因为在用PTS测试网站的时候,手动访问网站进入报错页面,主要原因是数据库连接对象存在问题,导致并发多的时 ...
- iOS UINavigationController 详解
developer.apple.com/cn/ 导航条 UINavigationBar继承UIView 导航控制器 UINavigationController (压栈,出栈) ...
- Unity封装dll教程整理
///作者Unity3d师兄---LeroyYang 通过网上大神们的资料以及自己的整理,学习一下用vs2013简单的封装dll文件,方便接口模式下开发,使得逻辑层更为清晰. 操作步骤 1.打开vs2 ...
- (搬运)《算法导论》习题解答 Chapter 22.1-1(入度和出度)
(搬运)<算法导论>习题解答 Chapter 22.1-1(入度和出度) 思路:遍历邻接列表即可; 伪代码: for u 属于 Vertex for v属于 Adj[u] outdegre ...
- Oracle基础 exp/imp命令
一.导出方式: 使用exp/imp方式导出数据分为四种方式: 1.表方式导出:一个或多个指定的表,包括表的定义.表数据.表的所有者授权.表索引.表约束,以及创建在该表上的触发器.也可以只导出结构,不导 ...
- JavaScript 键盘event.keyCode值列表大全
JavaScript 键盘event.keyCode值列表大全 event.keyCode值列表大全,对于需要根据键盘按键触发相应事件的朋友需要. 网上收集的KeyCode值方便大家查找: k ...