当前位置: 首页 > news >正文

最新章节 第一百四十七章 做视频网站石家庄购物网站排名

最新章节 第一百四十七章 做视频网站,石家庄购物网站排名,带分销功能的小程序,苏州互联网公司排行榜实际开发过程中,我们会经常遇到,首次进入页面进行相应提示,然后指定时间后自动消失或者前端时钟展示等需求。 按照传统方案,我们可以使用 setTimeout 实现。但其存在:实际延时比设定值更久的情况。 setTimeout 不准时…

实际开发过程中,我们会经常遇到,首次进入页面进行相应提示,然后指定时间后自动消失或者前端时钟展示等需求。

按照传统方案,我们可以使用 setTimeout 实现。但其存在:实际延时比设定值更久的情况。

setTimeout 不准时

有很多因素会导致 setTimeout 的回调函数执行比设定的预期值更久。

最小延时 >= 4ms

  1. If nesting level is greater than 5, and timeout is less than 4, then set timeout to 4. – HTML5 spec Timers

在浏览器中,由于函数嵌套到一定深度,会导致被阻塞。

function cb() { setTimeout(cb, 0)
}
setTimeout(cb, 0)

未被激活的 tabs 的定时最小延迟>=1000ms

为了优化 tab 的加载损耗(以及降低耗电量),在未被激活的 tab 中定时器的最小延时限制为 1S(1000ms)。

超时延迟

除了"最小延时"之外,定时器仍然有可能因为当前页面(或者操作系统/浏览器本身)被其他任务占用导致延时。

需要被强调是,直到调用 setTimeout()的主线程执行完其他任务之后,回调函数和代码段才能被执行。

最大延时值

包括 IE、Chrome、Safari、Firefox 在内的浏览器其内部以 32 位带符号整数存储延时。这就会导致如果一个延时 (delay) 大于 2147483647 毫秒 (大约 24.8 天) 时就会溢出,导致定时器将会被立即执行。-- setTimeout/setInterval delay数值过大问题

打破 4ms 的限制

如果想在浏览器中实现 0ms 延时的定时器,可以尝试下述方法

(function() {var timeouts = [];var messageName = "zero-timeout-message";function setZeroTimeout(fn) {timeouts.push(fn);window.postMessage(messageName, "*");}function handleMessage(event) {if (event.source == window && event.data == messageName) {event.stopPropagation();if (timeouts.length > 0) {var fn = timeouts.shift();fn();}}}window.addEventListener("message", handleMessage, true);window.setZeroTimeout = setZeroTimeout;
})();

CSS更准时

如果要实现特别准时的业务场景(如,时钟)。显然 setTimeout/setInterval 不是最佳实践,如何避免同步阻塞卡顿,是突破该问题的重要一点。
在这里插入图片描述

这里,使用 css 动画来实现,css 动画有几个显著的优点:

  1. 不依赖 javascript,且有成熟的相关 api;
  2. 运行效果良好,甚至在低性能的系统上。渲染引擎会使用跳帧或者其他技术以保证动画表现尽可能的流畅;
  3. 让浏览器控制动画序列,允许浏览器优化性能和效果,如降低位于隐藏选项卡中的动画更新频率。

animation 属性是 animation-name,animation-duration, animation-timing-function,animation-delay,animation-iteration-count,animation-direction,animation-fill-mode 和 animation-play-state 属性的一个简写属性形式。

属性说明示例
animation-name指定应用的一系列动画animation1,animation2
animation-duration指定一个动画周期的时长,单位 s 或者 ms60s
animation-timing-function在每一动画周期中执行的节奏easelinearsteps(60)
animation-delay定义动画于何时开始,单位 s 或者 ms100ms
animation-iteration-count定义动画在结束前运行的次数infinite(无限次)、3
animation-direction指示动画是否反向播放normalalternatereverse
animation-fill-mode设置 CSS 动画在执行之前和之后如何将样式应用于其目标forwardsbackwards
animation-play-state定义一个动画是否运行或者暂停runningpaused
animation: timer 60s infinite steps(60) forwards;

steps(number_of_steps, direction):定义了一个阶梯函数,将输出值的域等距地划分。

在这里插入图片描述

通过 自定义数据属性 绑定要显示的值。这样在 css 中,可以通过表达式 attr() 用来获取值。

<div class="container"><p data-seconds="00 01 02 03 04 05 06 07 08 09"></p>
</div>

通过伪元素显示当前值(每次只显示1个),然后动画周期的时长 10s ,等距划分为10步。

每 1s 中移动向量的纵坐标。

.container p {height: 68px;width: 68px;line-height: 68px;overflow: hidden;
}
.container p::after {display: block;content: attr(data-seconds);animation: timer 10s infinite steps(10) forwards;
}@keyframes timer {from {transform: translate3d(0, 0, 0);}to {transform: translate3d(0, -100%, 0);}
}
http://www.yayakq.cn/news/147673/

相关文章:

  • 建站之星模板怎么设置24淘宝网站建设
  • 网站建设模拟实验报告郑州网
  • 青岛注册公司在哪个网站申请室内设计工作室简介
  • 深圳网站设计兴田德润信任高装饰装修材料
  • 企业网站的特点是什么做vip的网站好做吗
  • 有什么教人做论文的网站吗模板王字库官网
  • 粉红色网站asp企业vi设计包括哪些内容
  • 响应式网站制设计自建站工具
  • dw个人网页模板冯耀宗seo课程
  • 网站建设ppt模板下载网站运营策划方案
  • 为什么进行网站备案先做后付费的代运营
  • 免费做h5的网站知乎网站制作成都
  • 网站服务器和网站备案大连百度代理
  • 如皋市建设局网站西宁做网站君博解决
  • 为什么我有的网站打不开工程建筑公司
  • 重庆彭水网站建设家装博览会
  • 手机域名访问网站怎么进入上海市网站seo
  • 富通建设工程有限公司网站南京做网站哪家公司最好
  • 海南企业网站建设陕西建筑工程网
  • cpa推广做网站名词解释seo
  • 营销型网站建设可行性分析网站备案需要哪些材料
  • 建设工程网站tc全自动推广引流软件
  • 赣州做网站的大公司微信开发者工具在哪里下载
  • 做网站注册会员加入实名认证功能鼓楼机关建设网站
  • 有什么网站可以做投票功能吗wordpress淘宝值得买
  • 六安网站企业所得税怎么算例题
  • 霍山做网站婚庆公司一般包括哪些服务
  • 超八成搜索网站存在信息泄露问题沈阳公司
  • 海南智能网站建设公司在线制作图片模板
  • 青岛网站制作百家号互联网建网站