html动画用css还是js,javascript与css3动画结合使用小结

当Html5,css3已渐渐成为主流的时候,我还非常习惯的用js去做一些简单的动画。因为在桌面浏览器上, 并非所有的都支持css3。用户也倒是很奇怪,用户习惯并不是每个用户都可以被培养。总有不少人会觉得win7.win8没xp好用。但手机方面就大不一样了,手机浏览器对html5和css3的支持还是很不错的。但手机硬件处理能力却又十分有限。在四核、八核手机横行的今天,依然有像我这样使用双核或单核手机的。js虽好,单奈何接触不多,调不好那种感觉。一个简单的页面滑动,在i7的pc上运行十分流畅,可是,在我的双核手机上就卡、顿、卡、顿。令人十分郁闷。为此,我也是寻找了很久很久,看了很多很多。终于在不就之前,找到了一种还算简单的方法:使用css3去执行动画。

在以前,对于动画除了Jquery的animate等动画函数外,更多的是使用setTimeout,setInterval,这样循环的去改变一个元素的margin、width、top等属性。也正是如此,才有了我的困惑。

首先,setTimeout,setInterval 这货并非你设置0ms它就能一直一直的去执行。曾经在iscroll里调试的时候无意中发现了这个秘密。原来Timer延时的计算依靠的是浏览器的内置时钟,而时钟的精确度又取决于时钟更新的频率。IE8及其之前的IE版本更新间隔为15.6毫秒。完了,我想它10ms执行1px位移,它还不能准时的干这事。

而卡又是怎么回事呢?卡,因为代码写的不好。毕竟js是单线程的,一旦有耗时的动作那么UI就可能不响应了。虽然我们使用了setTimeout,但正是因为setTimeout让我们看上去界面没死可动作却又不流畅了。因为这次setTimeout执行之后,在下次执行前,中间这个间隔里很可能遇到另一个耗时的动作,那么,setTimeout的执行就无限后延。然后呢?卡!然而,卡还能有下一个原因,改变原始属性时不小心触发浏览器Layout(即:重布局)。这个问题说它不耗时呢,却又耗时,说它耗时呢,很多时候却又可以忽略。但很多时候其实是不能忽略的。

除了上面这两段,还有一个问题,就是在很多手机上总感觉是一帧一帧的,而且还可能是一帧长一帧短。这真是能把人都搞废的节奏。为何会这样呢,依然和settimeout的推迟有一定的关系。丢帧。这个问题有涉及到显示器的刷新频率问题。实在太复杂了。

最后选择了CSS3,js动态的改变元素的属性,使用transition来控制动画执行时间。举个例子:

js:

$("#test").width(200);

这样1秒之后这个div的宽度会变成200px。不是孙悟空变桃子一样瞬间变大,慢慢的赶脚,不卡不顿。而且使用css动画有个好处,它不受耗时js的影响。虽然浏览器中UI线程与js线程是互斥,但这一点对css动画不成立,并且很多浏览器还能启用硬件加速(比如:Chrome)。虽然浏览器重布局普通情况下感觉不是很明显,但还是应该尽量避免大面积的重布局。so在动画元素上加上-webkit-transform: translateZ(0);或者-webkit-transform: translate3d(0,0,0);这样浏览器会独立渲染这一层。即便是重布局无法避免,这样面积也小些。而使用translate取代margin也确实是一个十分明智的决定。

最后附上一些常用的改变时会触发重布局的属性:

width

height

padding

margin

display

border-width

border

min-height

以上就是本文所述的全部内容了,希望对大家学习javascript和CSS3能够有所帮助,同时不足之处烦请补充,谅解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P3146 [USACO16OPEN]248

P3146 [USACO16OPEN]248 题目描述 Bessie likes downloading games to play on her cell phone, even though she doesfind the small touch screen rather cumbersome to use with her large hooves. She is particularly intrigued by the current game she is playing.The g…

java将HTML文件转化为pdf文件,如何使用Java将HTML网页转换为PDF文件

我一直在互联网上搜索如何使用Java将HTML页面转换为PDF文件。我发现了很多指针,简而言之,它们不起作用或难以实现。我也下载了一个商业产品,pdf4ml;该API是我很乐意与之合作的,除了当我在维基百科上检索一个简单的页面时&#xff…

java抽象类和模板模式_测试抽象类和模板方法模式

java抽象类和模板模式摘自Wikipedia,“模板方法定义了算法的程序框架。 子类可以覆盖一个或多个算法步骤,以允许不同的行为,同时确保仍然遵循总体算法。” 通常,此模式由两个或多个类组成,一个是提供模板方法&#xff…

第三章 使用单元测试测试简单的首页

3.1第一个Django应用,第一个单元测试 python3 manage.py startapp lists 创建一个应用 功能测试站在用户的角度从外部测试应用,而单元测试从程序员的角度从内部测试应用 3.2Django中的单元测试 打开新生成的的文件lists/tests.py 注:单元测试…

微型计算机应用领域及应用,自考“微型计算机应用基础”自考大纲(1)

I. 课程性质微型计算机应用基础是高等教育自学考试经济管理类各专业的一门必修的应用基础课程,同时它也适用于文、法、医、农各专业选修。了解计算机这一现代化工具的性能、特点和一般工作原理,掌握计算机基础知识,学会计算机的基本操作&…

Lambda的Lambda(如果可选)

因此,我对JDK 8中Optional接口的两个限制感到沮丧。第一个问题是,没有明显的方法可以在块中执行else操作,因为只有isPresent方法,除非您使用的是老式的if语句。 第二个问题当然是古老的板栗,即使您能够做到&#xff0c…

win7链接html线到屏幕上,为你解决win7系统html文件图标变成空白的具体技巧 - win7吧...

我们经常在电脑上安装应用软件,难免会遇到诸如win7系统html文件图标变成空白的状况,对于大多电脑用户而言,大家几乎都是首次看到win7系统html文件图标变成空白这种状况,其实小编的经验是碰到win7系统html文件图标变成空白的问题别…

周赛。。。。

分糖果 分糖果 题意 要篮子里有不少于 n 块糖果,幼儿园的所有 n 个小朋友(包括你自己)都从篮子中拿走恰好一块糖,直到篮子里的糖数量少于 n 块。此时篮子里剩余的糖果均归你所有——这些糖果是作为你搬糖果的奖励。 思路 这个程…

计算机科学之前说,国内计算机科学十强大学是哪些?前2名没悬念,后面几所都不好说...

随着科技的发展、产业结构的不断优化,许多单位对计算机相关专业人才需求量越来越大,计算机专业毕业生就业情况普遍不差。加上计算机学科本身就给人一种“格局很高”的感觉,所以该专业成为了当下最热门的专业之一,每年高考都会有一…

服务引用代理类_在代理类中引用动态代理

服务引用代理类在Stackoverflow中有一个有趣的问题 ,关于Spring Bean如何获​​得对由Spring创建的代理的引用以处理事务,Spring AOP,缓存,异步流等。需要对代理的引用,因为如果存在对自身的调用通过代理bean&#xff…

HTML中confirm替换,Javascript直接Confirm()函数替换

我想替换Javascript Confirm()函数以允许自定义按钮,而不是Yes / Cancel.我尝试搜索,但是所有解决方案都是事件驱动的,例如jquery对话框(其中代码不等待响应,而是事件驱动的).有谁知道非事件驱动的解决方案.它必须在Safari和IE中都可以使用(因此没有vbscript).这是系统许多部分…

关于windows防火墙关不掉解决办法

建立一个.bat文件,写以下内容: echo off title 正在启动防火墙服务 sc config MpsSvc startauto net start MpsSvc pause 至此完毕,重启试试就知道了 转载于:https://www.cnblogs.com/ciscolee/p/7616588.html

Java中特质模式的定义

在本文中,我将介绍特征的概念,并为您提供一个如何在Java中使用它们以在对象设计中减少冗余的具体示例。 我将首先提出一个虚构的案例,其中可以使用特征来减少重复,然后以使用Java 8的特征模式示例实现为结尾。 假设您正在开发留言…

计算机 注册表 远程桌面,仅允许运行使用网络级别身份验证的远程桌面计算机连接失败处理方法(远程桌面连接)...

计算机在开启远程桌面的时候选中了“仅允许运行使用网络级别身份验证的远程桌面计算机连接”,于是连接时提示错误如下:远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助解决…

前端笔记----定位

一.定位分三种&#xff1a;相对定位&#xff0c;绝对定位和固定定位。 1.相对定位&#xff1a;元素所占据的文档流的位置保留&#xff0c;元素本身相对自身原位置进行偏移&#xff1b; 如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head>&l…

html往下滑变成水平,HTML - 水平滑块CSS最佳方法_html_开发99编程知识库

由於每個部分的位置已經設置為relative&#xff0c;意味著將relative定位到上一節&#xff0c;因此可以將其他部分設置為left: 0 。* {margin: 0;}#all-sections{display:inline-flex;}.main, .about, .professional, .fun-stuff, .blog, .contact{height:100vh;position: rela…

JS高级 - 面向对象3(面向过程改写面向对象)

改写&#xff1a; 1.前提&#xff1a;所有东西都在 onload 里 2.改写&#xff1a;不能有函数嵌套&#xff0c;可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错&#xff1a; thisthis啥时候会出问题&#xff1f; 1.定时器 <script>f…

mockito环境配置_Mockito –使用全局配置的SmartNull在NPE上提供更好的错误消息

mockito环境配置编写Mockito参考卡后&#xff0c;我有机会仔细研究了Mockito不太流行但非常有用的功能。 其中一些过于先进或太稀少&#xff0c;无法在refcard中进行描述&#xff0c;因此应简短说明。 其中之一就是SmartNull。 当前&#xff0c;非空方法返回适用于已知类型&…

html js清除缓存,js清除浏览器缓存的几种方法

JS 缓存的问题一直都是我们又爱又恨的东西。也是我们比较头痛的问题&#xff0c; 一方面为了提高网站响应速度,减少服务器的负担,和节省带宽&#xff0c;将需要将静态资源缓存在客户端&#xff0c; 但是另一方面&#xff0c;当js 文件有改动的时候&#xff0c;如何快速的将客户…

spring MVC 的MultipartFile转File读取

第一种方法&#xff1a; MultipartFile file xxx; CommonsMultipartFile cf (CommonsMultipartFile)file; DiskFileItem fi (DiskFileItem)cf.getFileItem(); File f fi.getStoreLocation(); 会在项目的根目录的临时文件夹下生成一个文件&#xff1b; 第二…