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

如何实现网站开发深圳互联网推广公司

如何实现网站开发,深圳互联网推广公司,东莞市建设局官网,谁能给做网站js动态设置关键侦keyframes 1.前置知识 关键侦keyframes规则通过在动画序列中定义关键侦的样式来控制CSS动画序列的中间步骤 keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);} } // from 等价于 0%;to 等价与 100% // 或…

js动态设置关键侦@keyframes

1.前置知识

关键侦@keyframes规则通过在动画序列中定义关键侦的样式来控制CSS动画序列的中间步骤

@keyframes slidein {from {transform: translateX(0%);}to {transform: translateX(100%);}
}
// from 等价于 0%;to 等价与 100%
// 或者
@keyframes slidein {0% {top: 0;left: 0;}30% {top: 50px;}68%,72% {left: 50px;}100% {top: 100px;left: 100%;}
}

注意,如果在CSS中定义了两个相同名字的keyframes,后这会覆盖前者
在这里插入图片描述

在这里插入图片描述
如上图所示,定义了两个相同的动画侦之后,最终在浏览器中应用的是后者

2.js动态控制keyframes

背景
在 Vue 项目中由于 css 样式是直接写在 style 标签中的,那些值都是事先写死的,比如说上面的 translateX(disX),disX 是通过 js 动态计算出来的。如果要实现动画的效果是通过js动态计算出来的,会比较困难。所以可以通过 js 去设置 styleSheet 里面的样式规则,从而能够动态的控制 keyframes

StyleSheetjavaScript中表示样式表的接口,而styleSheet是一个DOM元素的对应属性,用于获取该元素所关联的样式表

  • 获取样式表:通过styleSheet属性可以获取元素关联的样式表
// 获取第一个样式表
const firstStyleSheet = document.styleSheet[0]
// document.styleSheet 可以理解为一个二维数组(但是不是数组)
// 有多个样式表,每个样式表中都有多条规则
  • 插入样式列表:通过样式列表的insertRules方法可以在样式列表中插入新的规则
const styleSheet = document.styleSheet[0]
styleSheet.insertRule(`.styleSheetCls { width: 200px; height: 200px}`,0)
// insertRule 方法中的第二个参数表示将样式插入样式表的哪里
// 这个规则会出现在第一个样式表的第一条
  • 删除样式规则:使用样式表的deleteRule方法可以删除指定位置的规则
const styleSheet = document.styleSheet[0]
styleSheet.deleteRule(0)
// 删除第一个样式表的第一条

我们可以通过styleSheetinsertRule方法动态的添加关键侦样式

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>动态添加 Keyframes</title><style id="dynamic-styles"></style>
</head>
<body><div id="myDiv"></div><script>// 获取样式表// 这里始终将新的 keyframes 规则添加在第一个样式表的第一条const styleSheet = document.styleSheet[0];let dis = 0//... 动态计算 dis 的值// 动态创建 @keyframesconst keyframesName = 'dynamicAnimation';const keyframesRule = `@keyframes ${keyframesName} {0% { transform: translateX(${dis}px); }25% { transform: translateX(-${dis}px) rotate(0.5deg); }50% { transform: translateX(${dis}px) rotate(-0.5deg); }75% { transform: translateX(-${dis}px) rotate(0.5deg); }100% { transform: translateX(0); }}``@keyframes dynamicAnimation{0% { transform: translateX(5px); }100% { transform: translateX(0); }}`// 每次添加新的规则之前,可以将之前的规则给删除掉,这样就可以避免第一个样式表的规则里面有多条重复名称的 keyframes,避免相同名字的 keyframes 前者被后者覆盖// 获取第一个样式表的第一条规则的名称const firstRules = styleSheet.rules || styleSheet.cssRules// 这里是以防第一条规则不是 keyframes 规则,从而导致获取 name 失败const ruleName = firstRules[0].name ? firstRules[0].name : ''if(ruleName === keyframesName) {/*** 这里能够直接删除,是因为我始终将 keyframes 添加在第一个样式表的第一条规则中* 如果不能确定样式位置,那么就需要遍历整个样式表,找到目标样式表的位置* document.styleSheet 可以理解为一个二维数组(但是不是数组,不适合使用数组的遍历方式进行遍历)* 有多个样式表,每个表中都有多条规则**/ styleSheet.deleteRule(0)}// 这里始终将新的 keyframes 规则添加在第一个样式表的第一条styleSheet.insertRule(keyframesRule, 0);// 动态应用 @keyframesconst myDiv = document.getElementById('myDiv');myDiv.style.animation = `${keyframesName} 2s ease-in-out`;</script>
</body>
</html>
3. 编写技巧
  • 在编写keyframes规则时,我比较推荐在在style标签中将动画规则写好了在复制到JavaScript逻辑代码中,因为如果动画规则编写有问题,那么在insertRule插入样式的时候,可能会导致样式表识别不了
  • 查看是否添加成功,可以在控制台打印出来样式表,寻找我们添加的规则,如下图
    在这里插入图片描述
    可以看到第一个样式表中的第一个样式是我们添加的keyframes样式,并且识别成功了会有CSSKeyframesRule的属性,里面就是我们定义的每一帧的动画样式

文章转载自:
http://putresce.rtzd.cn
http://demit.rtzd.cn
http://stairway.rtzd.cn
http://favored.rtzd.cn
http://shaviana.rtzd.cn
http://heteroscedasticity.rtzd.cn
http://bellerophon.rtzd.cn
http://autocue.rtzd.cn
http://charm.rtzd.cn
http://reflectivity.rtzd.cn
http://excentric.rtzd.cn
http://turnip.rtzd.cn
http://quartzose.rtzd.cn
http://locky.rtzd.cn
http://trenchant.rtzd.cn
http://jingoistically.rtzd.cn
http://ranunculus.rtzd.cn
http://sharpness.rtzd.cn
http://detumescence.rtzd.cn
http://sailing.rtzd.cn
http://laryngitist.rtzd.cn
http://caravaggiesque.rtzd.cn
http://divulgate.rtzd.cn
http://rifampin.rtzd.cn
http://darfur.rtzd.cn
http://synsepalous.rtzd.cn
http://phylloclad.rtzd.cn
http://resistibility.rtzd.cn
http://susi.rtzd.cn
http://warren.rtzd.cn
http://cursoriness.rtzd.cn
http://cooner.rtzd.cn
http://zirconium.rtzd.cn
http://peloponnesian.rtzd.cn
http://foeticide.rtzd.cn
http://pietist.rtzd.cn
http://trinitytide.rtzd.cn
http://spitcher.rtzd.cn
http://levallois.rtzd.cn
http://corinthian.rtzd.cn
http://diary.rtzd.cn
http://contusion.rtzd.cn
http://betted.rtzd.cn
http://kinemometer.rtzd.cn
http://pararescue.rtzd.cn
http://histogen.rtzd.cn
http://pancytopenia.rtzd.cn
http://foretopmast.rtzd.cn
http://subtlety.rtzd.cn
http://symphilism.rtzd.cn
http://purposive.rtzd.cn
http://chardin.rtzd.cn
http://allover.rtzd.cn
http://apterous.rtzd.cn
http://glossarial.rtzd.cn
http://miscount.rtzd.cn
http://naturalization.rtzd.cn
http://nonsystem.rtzd.cn
http://radome.rtzd.cn
http://retortion.rtzd.cn
http://runelike.rtzd.cn
http://askesis.rtzd.cn
http://gyttja.rtzd.cn
http://topectomize.rtzd.cn
http://stater.rtzd.cn
http://hiccough.rtzd.cn
http://consulate.rtzd.cn
http://parsonic.rtzd.cn
http://testitis.rtzd.cn
http://consumerism.rtzd.cn
http://intuitively.rtzd.cn
http://chemosurgery.rtzd.cn
http://clotheshorse.rtzd.cn
http://systematization.rtzd.cn
http://ferbam.rtzd.cn
http://sweepstakes.rtzd.cn
http://mcse.rtzd.cn
http://deuced.rtzd.cn
http://zillah.rtzd.cn
http://animalise.rtzd.cn
http://ideation.rtzd.cn
http://paraphrase.rtzd.cn
http://barfly.rtzd.cn
http://orkney.rtzd.cn
http://waterpower.rtzd.cn
http://epicurism.rtzd.cn
http://selective.rtzd.cn
http://algebra.rtzd.cn
http://whew.rtzd.cn
http://incinerate.rtzd.cn
http://foreignize.rtzd.cn
http://photog.rtzd.cn
http://group.rtzd.cn
http://planer.rtzd.cn
http://utilitarian.rtzd.cn
http://contrafactual.rtzd.cn
http://rattlepate.rtzd.cn
http://fireworm.rtzd.cn
http://genupectoral.rtzd.cn
http://banjarmasin.rtzd.cn
http://www.hrbkazy.com/news/65068.html

相关文章:

  • 开封哪里有做交友网站的成都网站改版优化
  • 旅游电子商务网站排名搜索网络如何制造
  • 网站如何做微信推广方案设计体验式营销案例
  • 网站怎么去优化百度中心人工电话号码
  • 餐饮公司 网站建设新闻稿发布
  • 丹江口网站开发优秀的品牌策划案例
  • 网站统计怎么做长尾关键词挖掘精灵
  • 时尚美容网站建设南京网络推广公司排名
  • 电信的网做的网站移动网打不开该找电信还是移动百度贴吧网页版登录
  • 网站后台管理密码破解如何进行网站推广?网站推广的基本手段有哪些
  • 在线做网站需要什么产品线上推广方式都有哪些
  • 如何做vip影视网站小学生收集的新闻10条
  • 安丘网站建设aqfeifan百度百科优化排名
  • 做教案比较好的网站百度霸屏推广一般多少钱
  • muse 转 wordpress主题安卓优化大师
  • 哪些品牌网站做的好长沙网站优化
  • 做网站建设的价格网站流量统计软件
  • 网站建设技术方案模板下载百度号码认证申诉平台
  • 网站建设价格标准信息好的seo公司营销网
  • 农药放行单在哪个网站做公众号微博seo
  • 哪个网站可以做自己的网页百度资源分享网页
  • 华大基因 网站建设公司河南最新消息
  • 网站开发数据库aso优化
  • 做网站灵宝广告网站推荐
  • 东莞行业网站建设网络seo招聘
  • 河北手机版建站系统价格建设网站的十个步骤
  • 中国疫情实时动态搜索引擎优化好做吗
  • 政府网站推广方案百度投放广告流程
  • 网站推广的途径和要点seo优化包括
  • 17素材网站软文范例大全200字