在项目中 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能给我带来很多便利和优势,减少代码冗余,提高可 ...
随机推荐
- org.apache.hadoop.conf-Configurable
从包名可以看出这个包里面都是配置相关的类:从类名上可以看出这是一个接口,或者说配置类接口.内容很少. package org.apache.hadoop.conf; /** Something tha ...
- 优化 App 的启动速度
App 的启动速度不仅影响我们调试,也直接关系到用户体验.之前有些很久没有打开过的项目,需要花费很长的时间才完成编译:对应的 App 在点击后,许久才出现启动画面.你是否为这些问题苦恼过呢? 这是我观 ...
- JS 获取WEB请求路径
function getRealPath(){ //获取当前网址,如: http://localhost:8083/myproj/view/my.jsp var curWwwPa ...
- [转]Advanced Oracle SQL Developer Features
本文转自:http://www.oracle.com/technetwork/cn/server-storage/linux/sqldev-adv-otn-092384.html Advanced O ...
- [转]WPF 获取程序启动路径
本文转自:http://hi.baidu.com/lilipangtou/item/f1b7488e3c92c4d05e0ec1ab 在Windows Form程序中,获取自身的启动目录是非常容易的, ...
- Windows重新建立图标缓存
有的时候,快捷方式的图标会因各种优化软件而变得面目全非,这时就需要重新建立图标缓存 新建一个文本文档,把文件的后缀名修改成.bat 的例如 icon.bat 在里面填写下面的内容: rem 关闭exp ...
- 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...
- Mac 在命令行快速切换目录 mark
转自: http://www.ccvita.com/520.html ,略修改. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/often-used/di ...
- 基础面试题——HTML/CSS
1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? (Q1)浏览器:IE,Chrome,FireFox,Safari,Opera. (Q2)内核:Trident,Gecko,Pre ...
- Jquery判断$("#id")获取的对象是否存在的方法
如果是下面的 jquery 代码判断一个对象是否存在,是不能用的 if($("#id")){ }else{} 因为 $(“#id”) 不管对象是否存在都会返回 object . 正 ...