1、百度网盘资源搜刮 网站网址zhaoyunpancn搜盘侠百度云网盘搜刮 引擎,网址sopanxiacom百度网盘搜刮 引擎网址猪猪盘网盘搜刮 神器,网址zhuzhupancom盘搜搜百度云搜刮 引擎,网址pansosocom及搜盘百度云搜刮 网站,网址jisoupancom搜百度盘百度。 2、如风搜原盘多多panduoduonet,包罗 百度云盘和新浪微盘资源,逐日 更新各类视频小说等,分类清楚 磁小鸭cixiaoyaclub,基于5G框架的磁力搜刮 ,界面雅观 ,零广告,搜刮 速率 快,资源涵盖影戏 电视剧等盘搜pansoucom,老牌搜刮 引擎,提供精准检索,安全无风险,得当 找“盘中资源”盘搜搜。
本篇文章给大家谈谈vivo智能引擎提示百度云,以及vivo智慧引擎设置打不开怎么办对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目次 : 1、vivo聪明 引擎怎样 卸载
游戏引擎是已编写好的可编辑电脑游戏体系 或交互式及时 图像应用程序的核心 组件以下是关于游戏引擎的具体 表明 核心 功能游戏引擎为游戏计划 者提供了一系列已编写好的工具和框架,用于快速构建游戏它包罗 了图形渲染物理模仿 音效处理 惩罚 用户输入处理 惩罚 等多个模块,这些模块共同协作以实现游戏的及时 交互和视觉;寒霜3引擎作为寒霜2的升级版,寒霜3引擎在图形渲染物理模仿 和性能优化方面都有明显 提拔 ,可以或许 提供更丰富更逼真 的游戏体验Torque3D引擎这是一种开源的游戏引擎,提供了强大 的3D图形渲染物理模仿 和脚本编辑功能,得当 开辟 各种范例 的3D游戏游戏引擎是游戏开辟 的核心 组件,为游戏计划 者提供了各种。
别的 ,软件还支持物理引擎和碰撞检测,使得动画中的物理交互更加真实可信渲染方面,3dmax提供了高质量的渲染引擎,可以或许 天生 逼真 的图像和动画用户可以根据必要 调解 渲染参数,以得到 满意 的视觉结果 总的来说,3dmax是一款功能全面操纵 机动 的三维建模动画和渲染软件它实用 于各种行业和应用场景,无论是;在游戏财产 中,3dmax资助 开辟 者构建丰富多彩的游戏天下 无论是脚色 建模场景搭建,还是 道具计划 和舆图 制作,3dmax都能提供高质量的建模和渲染结果 其物理引擎还可以模仿 光照阴影和材质等真实结果 工业计划 在工业计划 中,3dmax用于制作正确 的产物 模子 ,举行 开端 计划 和评估通过模仿 产物 的物理属性,计划 师可以猜测 产物 的性能表现 ,从而优化产物 计划 它也实用 于制作产物 的展示模子 和市场推广质料 。
林永松博士,生于一九六三年五月四日,四川.峨眉, 中国美术家协会会员,国家一级美术师,中囯公共交际 协会理亊,四川美术家协会创作研究院院士.四川省美术家协会理事。北京迷綜皴创作研究院院长。现定居北京。2008年被文化部评为“中国艺坛十大画家”、2009年被文化部评为“中国山川 画十台甫 家”出书 物有:《中国美术馆》、《中国美术》、《人民美术》《四川美术》、《天津美术》《河北美术》、《艺术观察》。中国美术家林永松画集。林永松山川 画集, 闻名 中国画家林永松画集, 林永松山川 画佳构 集. 美术家林永松作品集,等等.作品被美国、德国、新加坡、韩国、马来西亚、泰国、日本、澳大利亚、等国家艺术馆及个人收藏。
最近手上的很多客户都越来越重视挪动端的流量,一是因为很多客户在监测流量时发现挪动端的流量涨势很迅猛,二是客户的很多竞争对手都在挪动站发力,所以客户都理所当然的相信挪动端必将成为将来流量和转化的突破点,当然百度也看出了这一点,所以百度退出了SiteApp来迎合站长们的需求! 那么SiteApp到底如何开通和有哪些主要注意的呢?今天就为大家分享一下: 第一站长们需要开通百度站长权限(具体过程很简陋,大家注册百度账号然后申请验证就可以了),打开百度站长后台以后,在左侧导航条的下方就可以看到有一个选项卡,名字就是SiteApp。 进入以后,首先步点击免费创建,呈现以下窗口 注意事项: 1.建议提交顶级域名,那样顶级域下面的子域会自动生成挪动站; 2.如果需要特别的子站点创建挪动站,只需要提交子域名就可以; 第二步:定制效果 1.设置好挪动站点的名称; 2.上传挪动站点LOGO图片; 3.抉择好挪动站的模板; 4.设置挪动站的导航; 第三步:验证权限 有以上两种验证方式,一是下载验证文件上传到PC站的根目录下验证,二是html标签验证,通过在PC站点的首页添加一段代码来实现验证; 以上就是我分享的SiteApp的申请流程,渴望能帮到广大的站长朋友。
百度分享代码的安装使用及作用 最近有朋友问到关于百度分享的问题,其中就包含了两个方面:一是不知道百度分享代码怎么安装使用,二是不知道百度分享代码有什么作用。鉴于很多朋友对百度分享代码了解不多,本文笔者就简陋的跟大家解说下。一、百度分享代码怎么安装使用事实上百度分享代码的安装是很简陋的,在百度搜索资源平台就能轻易找到这段代码,大家也可以直接打开http://share.baidu.com/code这个链接,这是获取百度分享代码的页面。大家注意下,百度分享是可以具体设置的,比如说有页面分享功能、图片分享功能以及划词分享功能,大家可以具体抉择。另外在右侧可以看到效果预览,大家在抉择好以后,直接点击“直接复制代码”按钮,既可以复制百度分享代码。复制百度分享代码以后,应该怎么去安装使用呢?也是很简陋的,直接把代码粘贴到页面模板里面即可,比说我们想要放在文章结尾的地方,那么就把百度分享代码粘贴到这里。二、百度分享代码有什么作用关于百度分享代码的作用,笔者认为主要体现在两个方面:1、有利于提升用户体验,我们都知道百度分享是可以直接分享到微信、QQ以及其他很多的地方。如果用户觉得某个页面的内容很不错,想要分享的话,那么就可以通过这段百度分享代码,轻松的分享给设计朋友圈,所以这对于用户体验来说是有帮助的。2、有利于搜索引擎优化,从正常的逻辑来说,如果用户去点击分享案例进行分析,那就表明用户高度认可页面内容,既然用户对页面认可度这么高,那就是表明页面内容确乎是高质量的,是能够解决用户需求的。对于这样的页面,百度没有理由不给予优待,所以百度分享代码的安装能够给百度搜索提供参考数据,如果我们能针对百度分享做些运营方面的优化,那么对于页面的权重提升就会有帮助,从而提高关键词排名。关于百度分享代码,本文具体给大家介绍了百度分享代码的安装使用,以及从两个方面介绍了百度分享代码的作用。总起来说,百度分享的安装使用是很简陋的,只要大家稍微知道些html代码就能做好。对于百度分享代码的作用,相信主要体现在用户体验和SEO优化上,大家可以去深度理解下。 --
不同阶段使用的品牌推广策略与技巧是什么?品牌推广是品牌树立、维护过程中的重要环节,它包括传播计划及执行、品牌跟踪与评估等。品牌创意再好,没有强有力的推广执行作支撑也不能成为强势品牌,而且品牌推广强调一致性,在执行过程中的各个细节都要统一,“魔鬼在细节中”。接下来曼朗小编将为大家分享相关内容,渴望能为大家解惑。四个阶段的品牌推广策略品牌的先后不同时期划分为导入期、成长期、全盛期和衰落期四个发展阶段,这四个阶段的提出将对企业的品牌推广会有许多现实意义。导入期的品牌推广谋略品牌的个发展阶段是导入期,导入期就是企业的品牌次面对顾客或次参与竞争的阶段。导入期也是企业刚刚引入品牌经营理念,且是一个全新的起点。导入期更典型的特征是:目标顾客出于对新品牌缺乏认知而谨慎抉择;正因为是新品牌,顾客中会有首次试用者敢于尝试,这些试用者可能就是顾客群中的勇于接受新鲜事物者和意见,也可能是品牌日后坚实的拥趸者和榜样者;竞争对手此时正在观察和妄想获取企业的市场意图,且尚未建立阻击计划;媒体或其他利益相关者可能也在密切凝视品牌的推广过程和结果。概括和了解导入期的特征是为了企业制订适合的推广计划和媒体投放策略,并能找准时机使之拥有一个较高的市场起点。第一,针对一个新品牌的面市,目标顾客的反应断定有很大的差异——漠视、关注、尝试和充当传播者的都有。依市场实践分析,顾客这四种行为状态的比例依次是漠视60%、关注20%、尝试15%、充当传播者5%,但这基于一个前提,即企业在一个有效期内应有各种有效和中等强度的媒体和推广策略,否则这些数字将没故意义。但考虑到市场的复杂性和产品千差万别,企业在应用时仍应依照实际的市场调查结果来制订相应的推广计划。然而,显而易见的是,它依然是有一定的指导意义的。因为这四种行为表现涵盖了顾客对新品牌的态度,而且就是这些显著的态度决定了企业的推广策略。因此,企业在品牌的推广前必须制订一套有持续性和针对性的推广步骤,这些步骤着眼于长期并适用于目标顾客的生活方式和习惯。在企业内部导入品牌VI是前提,外部的宣传则是强调品牌所宣扬的内涵和精神实质,总体来说,这只是一个纲领。众所周知,企业进行推广的目的之一是引起大多数持“漠视”态度的顾客的关注和惠顾。他们之所以是漠视的,严格来说这是一种消费惯性使然,企业的目的是打破这种惯性。那么如何打破呢?从产品或品牌层面上来解释,顾客造成消费惯性的原因不外乎品牌的忠诚、购买和使用的便捷性。顾客对某品牌的忠诚,企业一时难以撼动。但购买和使用的便捷性,企业则拥有很大的主导权。诚然如此,从根源上看,打动持漠视态度的顾客群:要使品牌包含内涵定位在内的三定位准确;第二广告和宣传要持续;第三要使产品具有差异性和功能的适应性;第四渠道布局要合乎顾客的更高期望;第五营销规划要以品牌化为基准。相信这五个步骤足以使“漠视”的顾客群转变为“关注和惠顾”的顾客群。其次,竞争者对于一个新品牌面市所表现出来的态度也会因企业的市场动作而存在较大差别,但总会有个普遍性的态度,那就是密切关注和妄想探寻企业的市场图谋。很显然,企业在品牌推广时,一些策略将完全暴露在竞争者面前而难有隐秘,这势必成为竞争者制订下一步阻击计划的依据。因此,企业有必要有意露一些假象给竞争者以拖延其阻击计划的即时实现,让企业争取更多时间来获得使竞争者深感意外的市场空间和品牌知名度。这种“明修栈道、暗渡陈仓”的做法可能需要企业有长远和提前的规划,暂时抱佛脚将难有作为。具体可以有:利用媒体的传播作用或企业宣传向潜在竞争者传递虚假的方向性举措,以迷惑对方;在传播和推广投入上有意示弱,以麻痹对方;先精心耕耘局部或区域市场以积蓄能量,给对方以措手不及;营销注重游击性,让传播成本始终低于对方;完善具有差别利益的服务体系,以备攻其软肋。总的来说,这些步骤只是为品牌开创出一条利于成长的道路。更后,对于媒体而言,一个新品牌的面市也会抱有一定的爱好,他们一般视企业的市场作为给予不同程度的关注。媒体进行报道的目的无非是为了吸引读者,那么企业应了解媒体的真实意图,并满足他们的需要,方能使其为我所用。很明显,媒体报道一般遵循新闻性、时效性和公益性,企业进行品牌推广时应努力做到这一点,否则也就使媒体失去爱好,进而使企业的推广工作事倍功半。因此,营造焦点或新闻效应是企业品牌推广的重头戏。比如,构建品牌初期在企业内部导入品牌经营理念时,采用一些诸如军训、发布会、演示和推广会等非常规的做法,以吸引媒体的注意;利用企业有关技术、产品、服务等的创新举措,邀请媒体给予报道;推广和传播时发掘与品牌有关的社区、企业和员工的新闻题材,借媒体之力扬品牌之名。值得注意的是,品牌在导入期的推广因不同产品及其不同的市场表现而没有一成不变的推广模式,这要求企业针对具体的产品、具体的目标市场、具体的市场状况来设定一些优势的、并适合自己的推广模式,照搬上述方式很可能会弄巧成拙。
日志分析是SEO日常工作不可缺的一项,现如今的网络免费流量统计系统越搞越花花。这里想推举的是一个本地日志分析工具-awstats。 如果你是独立主机用户,这款日志分析工具将提供最大限度的日志发掘功能,如果是虚拟主机用户,也会有一些IDC提供独立的日志分析工具,这里主要说一下独立主机用户如何配置awstats日志分析工具。先看截图: awstats的另一个特征就是跨平台性(只要有perl支持),我是在Windows下使用,简要列出awstats的配置步骤:预备软件:awstats-6.9.tar.gz ActivePerl-5.10.0.1004-MSWin32-x86-287188.msi cronolog-1.6.1-win32.zip1、安装ActivePerl-5.10.0.1004-MSWin32-x86-287188.msi,安装在默认路径c:perl就可以了。2、直接解压cronolog-1.6.1-win32.zip至apache下的bin目录,如果包里面还有个文件夹记得把里面的文件放在bin的根目录。3、修改apacheconfhttpd.conf中的日志生成目录为CustomLog "|bin/cronolog logs/access_%Y%m%d.log" combined,如果是虚拟主机,则直接在虚拟主机的配置节中添加,如:
将CSS3动画视为CSS过渡的更复杂的姐妹,动画在几个关键方面与变换不同:动画不会优雅地降级,如果浏览器不支持,则用户运气不佳,另一种方法是使用JavaScript。动画可以重复,并无限重复,过渡总是有限的。动画使用关键帧,可以创建更复杂和细微差别的效果。可以在播放周期的中间暂停动画。所有主流浏览器的最新版本都支持CSS3动画。Firefox 15及更早版本需要一个-moz-前缀; 以后的版本没有。Internet Explorer版本10和11也支持没有前缀的动画,所有版本的Microsoft Edge也是如此。我们可以通过几种方式检查CSS动画支持,首先种是通过测试CSSKeyframeRule作为window对象的方法的存在:const hasAnimations = 'CSSKeyframeRule' in window;如果浏览器支持@supports规则和CSS.supports()API,我们可以使用它:const hasAnimations = CSS.supports('animation-duration: 2s');与过渡一样,我们只能为插值等设置动画,例如颜色值,长度和百分比。创建你的首先个动画我们第一要使用@keyframes规则定义动画,该@keyframes规则有两个目的:设置动画的名称对我们的关键帧规则进行分组让我们创建一个名为的动画pulse:@keyframes pulse {}我们的关键帧将在此块中定义。在动画中,关键帧是动作发生变化的点。特殊是使用CSS3动画,关键帧规则用于设置动画周期中特定点的属性值。插入关键帧规则中值之间的值。动画至少需要两个关键帧:一个from关键帧,它是我们动画的起始状态,一个to帧,它是它的结束状态。在每个单独的关键帧块中,我们可以定义要设置动画的属性:@keyframes pulse { from { transform: scale(0.5); opacity: .8; } to { transform: scale(1); opacity: 1; }}此代码将我们的对象从其大小的一半扩展到其完整大小,并将不透明度从80%更改为100%。但是,该keyframes规则仅定义了动画。它本身并不会使元素挪动,我们需要应用它。让我们定义一个pulse类,我们可以用它将这个动画添加到任何元素:.pulse { animation: pulse 500ms;}在这里,我们使用了animation速记属性来设置动画名称和连续时间。为了播放动画,我们需要@keyframes规则的名称(在这种情况下pulse)和连续时间,其他属性是可选的。属性的顺序animation类似于transition,可以解析的首先个值变为的值animation-duration。第二个值成为的值animation-delay,不是CSS范畴的关键字或动画属性关键字值的单词被假定为@keyframe规则集名称。与此同时transition,animation也接受动画列表。动画列表是以逗号分隔的值列表。例如,我们可以将脉冲动画分成两个规则 – pulse和fade:@keyframes pulse { from { transform: scale(0.5); } to { transform: scale(1); }}@keyframes fade { from { opacity: .5; } to { opacity: 1; }}然后我们可以将它们组合为单个动画的一部分:.pulse-and-fade { animation: pulse 500ms, fade 500ms;}动画属性虽然使用animation属性较短,但有时较长的属性更清楚。下面列出了手绘动画属性:animation-delay和animation-duration性能的功能类似transition-delay和transition-duration。两者都接受时间单位作为值,以秒(s)或毫秒(ms)为单位。负时间值有效animation-delay,但不是animation-duration。让我们.pulse使用longhand属性重写我们的规则集。这样做给了我们以下内容:.pulse { animation-name: pulse; animation-duration: 500ms;}该animation-name物业相当简陋。它的值可以是规则none的名称@keyframes。动画名称几乎没有限制。CSS的关键字,例如initial,inherit, default,和none被制止的。大多数标点字符都不起作用,而字母,下划线,数字和神情符号(以及其他Unicode)字符通常会起作用。为了清楚和可维护性,最好为动画提供描述性名称,并避免使用CSS属性或神情符号作为名称。循环或不循环:animation-iteration-count属性如果你跟随自己的代码,你会发现这个动画只发生一次。我们渴望我们的动画重复。为此,我们需要animation-iteration-count。animation-iteration-count属性接受大多数数值,整数和十进制数是有效值。但是,对于十进制数字,动画将在最后一个动画周期的中途停止,并以to状态结束,负值animation-iteration-count被视为相同1。要使动画无限期运行,请使用infinite关键字。动画将播放无限次。当然,infinite实际上意味着在卸载文档之前,浏览器窗口关闭,动画样式被删除或设备关闭。让我们的动画无限:.pulse { animation-name: pulse; animation-duration: 500ms; animation-iteration-count: infinite;}或者,使用animation速记属性:.pulse { animation: pulse 500ms infinite;}播放动画:animation-direction属性但是,我们的动画仍旧存在问题。它不像重复我们的放大动画那么多脉冲。我们想要的是这个元素可以向上和向下扩展。输入animation-direction。animation-direction属性接受四个值之一:normal:初始值,按指定播放动画reverse:翻转from和to说明并反向播放动画alternate:反向播放偶数编号的动画循环alternate-reverse:反向播放奇数动画周期继续我们当前的例子,reverse将我们的对象缩小0.5倍。使用alternate会将我们的对象缩放为奇数循环,向下缩放为偶数。相反,使用alternate-reverse会将我们的对象缩小为奇数循环,向上缩放为偶数循环。由于这是我们想要的效果,我们将我们的animation-direction属性设置为 alternate-reverse:.pulse { animation-name: pulse; animation-duration: 500ms; animation-iteration-count: infinite; animation-direction: alternate-reverse;}或者,使用速记属性:.pulse { animation: pulse 500ms infinite alternate-reverse;}使用百分比关键帧我们之前的例子是一个简陋的脉冲动画。我们可以使用百分比关键帧创建更复杂的动画序列。而不是使用from和to,百分比关键帧表示动画过程中的特定变化点。下面是一个使用名为的动画的示例wiggle:@keyframes wiggle { 25% { transform: scale(.5) skewX(-5deg) rotate(-5deg); } 50% { transform: skewY(5deg) rotate(5deg); } 75% { transform: skewX(-5deg) rotate(-5deg) scale(1.5); } 100% { transform: scale(1.5); } }我们在这里使用了25%的增量,但这些关键帧可能是5%,10%或33.2%。在播放动画时,浏览器将在每个状态之间插值。与前面的示例一样,我们可以将其分配给抉择器:/* Our animation will play once */ .wiggle { animation-name: wiggle; animation-duration: 500ms;}或使用animation速记属性:.wiggle { animation: wiggle 500ms;}这里只有一个问题。当我们的动画结束时,它会回到原始的动画前状态。要防止这种情况,请使用animation-fill-mode属性。animation-fill-mode动画在开始之前或停止播放之后对属性没有影响。但正如您在wiggle示例中看到的那样,一旦动画结束,它将恢复到动画前的状态。有了animation-fill-mode,我们可以在动画开始和结束之前填写这些状态。该animation-fill-mode属性接受四个值之一:none:动画在没有执行时没有效果forwards:当动画结束时,结束状态的属性值仍将适用backwards:动画延迟期间将应用首先个关键帧的属性值both:对两者的影响forwards和backwards适用由于我们渴望我们的动画元素维持其最终的放大状态,我们将继续使用animation-fill-mode: forwards。(animation-fill-mode: both也会有效。)animation-fill-mode: backwards当animation-delay属性设置为500ms或更高时,效果最明显 。当animation-fill-mode设置backwards为时,将应用首先个关键帧的属性值,但在延迟过去之前不会执行动画。暂停动画如上所述,动画可以暂停。转换可以在中途反转,也可以通过切换类名来完全停止。另一方面,动画可以在播放周期的中途暂停使用animation-play-state。它有两个定义的值 – running和paused- 它的初始值是running。让我们看一个使用animation-play-state播放或暂停动画的简陋示例。第一,我们的CSS:.wobble { animation: wobble 3s ease-in infinite forwards alternate; animation-play-state: paused;} .running { animation-play-state: running;}这里,我们有两个声明块:wobble它定义了一个摆动动画,并running设置了一个播放状态。作为我们animation声明的一部分,我们设定了一个animation-play-state值paused。要运行我们的动画,我们将把running类添加到元素中。让我们假设我们的标记包含一个运行动画按钮,其中id包含trigger:const trigger = document.querySelector('#trigger');const moveIt = document.querySelector('.wobble');trigger.addEventListener('click', function() { moveIt.classList.toggle('running');});添加.running到我们的元素会覆盖animation-play-state设置的值.wobble,并使动画播放。动画开始,结束或重复时检测像过渡一样,动画在结束时会触发事件:animationend。与过渡不同,动画在开始重复时也会触发animationstart和animationiteration发生事件。与转换一样,您可以使用这些事件在页面上触发另一个操作。也许您可以使用animationstart上下文显示“ 停止动画”按钮,或animationend显示“ 重播”按钮。我们可以使用JavaScript监听这些事件。下面,我们正在听取这个animationend事件:const animate = document.getElementById('animate');animate.addEventListener('animationend', function(eventObject) { // Do something});这里,事件处理函数也接收一个事件对象作为其唯一参数。为了确定哪个动画结束,我们可以查询animationName事件对象的属性。关于性能的注意事项某些属性比其他属性创建性能更好的过渡和动画。如果动画更新了触发重排或重新绘制的属性,则在手机和平板电脑等低功耗设备上可能会表现不佳。触发重排的属性是影响布局的属性。其中包括以下可动画属性:border-width(和border-*-width属性)border(和border-*属性)bottomfont-sizefont-weightheightleftline-heightmargin(和margin-*属性)min-heightmin-widthmax-heightmax-widthpadding(和padding-*属性)righttopvertical-alignwidth在对这些属性进行动画处理时,浏览器必须重新运算受影响(通常是相邻)元素的大小和位置。尽可能使用变换。转换或翻译动画变换(例如,transform: translate(100px,200px))可以代替top,left,right,和bottom特性。在某些情况下,height和width动画可以用替代scale改造。有时,触发回流(或布局更新)是不可避免的。在这些情况下,尽量减少受影响的元素数量并使用技巧(例如负延迟)来缩短感知的动画持续时间。触发重绘的属性通常是导致颜色更改的属性。这些包括:backgroundbackground-imagebackground-positionbackground-repeatbackground-sizeborder-radiusborder-stylebox-shadowcoloroutlineoutline-coloroutline-styleoutline-width对这些属性的更改比运算布局的更便宜,但它们仍旧有成本。对运算进行更改box-shadow并且border-radius运算起来特殊昂贵,尤其是对于低功耗设备。设置动画这些属性时要小心。相关文章推举CSS教程:CSSO调试和优化 在成为CSS大师的道路上,您需要知道如何消除故障并优化CSS。您如何诊断和修复渲染问题?您如何确保您的CSS不 […]...内联,外部和内部CSS样式之间的区别 有三种方法可以为网站添加CSS样式:可以使用内部CSS并在
HTML文档部分包含CSS规 […]...TypeScript简介:Web的静态类型 TypeScript是使用JavaScript创建更好体验的众多尝试之一。 TypeScript究竟是什么? […]...使用Nginx配置负载均衡的方法 负载均衡是扩展应用程序并提高其性能和冗余的绝佳方法,Nginx是一种流行的Web服务器软件,可以配置为简陋且功 […]...APPIUM – 用于测试的自动化工具 Appium最初由Dan Cueller开发,用于利用Apple iOS的UI自动化框架对本机挪动应用程序运行 […]...CSS3动画使用教程