将CSS3动画视为CSS过渡的更复杂的姐妹,动画在几个关键方面与变换不同:动画不会优雅地降级,如果浏览器不支持,则用户运气不佳,另一种方法是使用JavaScript。动画可以重复,并无限重复,过渡总是有限的。动画使用关键帧,可以创建更复杂和细微差别的效果。可以在播放周期的中间暂停动画。所有主流浏览器的最新版本都支持CSS3动画。Firefox15及更早版本需要一个-moz-前缀; 以后的版本没有。InternetExplorer版本10和11也支持没有前缀的动画,所有版本的MicrosoftEdge也是如此。我们可以通过几种方式检查CSS动画支持,首先种是通过测试CSSKeyframeRule作为window对象的方法的存在:consthasAnimations='CSSKeyframeRule'inwindow;如果浏览器支持@supports规则和CSS.supports()API,我们可以使用它:consthasAnimations=CSS.supports('animation-duration:2s');与过渡一样,我们只能为插值等设置动画,例如颜色值,长度和百分比。创建你的首先个动画我们第一要使用@keyframes规则定义动画,该@keyframes规则有两个目的:设置动画的名称对我们的关键帧规则进行分组让我们创建一个名为的动画pulse:@keyframespulse{}我们的关键帧将在此块中定义。在动画中,关键帧是动作发生变化的点。特殊是使用CSS3动画,关键帧规则用于设置动画周期中特定点的属性值。插入关键帧规则中值之间的值。动画至少需要两个关键帧:一个from关键帧,它是我们动画的起始状态,一个to帧,它是它的结束状态。在每个单独的关键帧块中,我们可以定义要设置动画的属性:@keyframespulse{ from{ transform:scale(0.5); opacity:.8; } to{ transform:scale(1); opacity:1; }}此代码将我们的对象从其大小的一半扩展到其完整大小,并将不透明度从80%更改为100%。但是,该keyframes规则仅定义了动画。它本身并不会使元素挪动,我们需要应用它。让我们定义一个pulse类,我们可以用它将这个动画添加到任何元素:.pulse{ animation:pulse500ms;}在这里,我们使用了animation速记属性来设置动画名称和连续时间。为了播放动画,我们需要@keyframes规则的名称(在这种情况下pulse)和连续时间,其他属性是可选的。属性的顺序animation类似于transition,可以解析的首先个值变为的值animation-duration。第二个值成为的值animation-delay,不是CSS范畴的关键字或动画属性关键字值的单词被假定为@keyframe规则集名称。与此同时transition,animation也接受动画列表。动画列表是以逗号分隔的值列表。例如,我们可以将脉冲动画分成两个规则– pulse和fade:@keyframespulse{ from{ transform:scale(0.5); } to{ transform:scale(1); }}@keyframesfade{ from{ opacity:.5; } to{ opacity:1; }}然后我们可以将它们组合为单个动画的一部分:.pulse-and-fade{ animation:pulse500ms,fade500ms;}动画属性虽然使用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:pulse500msinfinite;}播放动画: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:pulse500msinfinitealternate-reverse;}使用百分比关键帧我们之前的例子是一个简陋的脉冲动画。我们可以使用百分比关键帧创建更复杂的动画序列。而不是使用from和to,百分比关键帧表示动画过程中的特定变化点。下面是一个使用名为的动画的示例wiggle:@keyframeswiggle{ 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%。在播放动画时,浏览器将在每个状态之间插值。与前面的示例一样,我们可以将其分配给抉择器:/*Ouranimationwillplayonce*/ .wiggle{ animation-name:wiggle; animation-duration:500ms;}或使用animation速记属性:.wiggle{ animation:wiggle500ms;}这里只有一个问题。当我们的动画结束时,它会回到原始的动画前状态。要防止这种情况,请使用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:wobble3sease-ininfiniteforwardsalternate; animation-play-state:paused;} .running{ animation-play-state:running;}这里,我们有两个声明块:wobble它定义了一个摆动动画,并running设置了一个播放状态。作为我们animation声明的一部分,我们设定了一个animation-play-state值paused。要运行我们的动画,我们将把running类添加到元素中。让我们假设我们的标记包含一个运行动画按钮,其中id包含trigger:consttrigger=document.querySelector('#trigger');constmoveIt=document.querySelector('.wobble');trigger.addEventListener('click',function(){ moveIt.classList.toggle('running');});添加.running到我们的元素会覆盖animation-play-state设置的值.wobble,并使动画播放。动画开始,结束或重复时检测像过渡一样,动画在结束时会触发事件:animationend。与过渡不同,动画在开始重复时也会触发animationstart和animationiteration发生事件。与转换一样,您可以使用这些事件在页面上触发另一个操作。也许您可以使用animationstart上下文显示“ 停止动画”按钮,或animationend显示“ 重播”按钮。我们可以使用JavaScript监听这些事件。下面,我们正在听取这个animationend事件:constanimate=document.getElementById('animate');animate.addEventListener('animationend',function(eventObject){ //Dosomething});这里,事件处理函数也接收一个事件对象作为其唯一参数。为了确定哪个动画结束,我们可以查询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并在<head>HTML文档部分包含CSS规[…]...TypeScript简介:Web的静态类型 TypeScript是使用JavaScript创建更好体验的众多尝试之一。TypeScript究竟是什么?[…]...使用Nginx配置负载均衡的方法 负载均衡是扩展应用程序并提高其性能和冗余的绝佳方法,Nginx是一种流行的Web服务器软件,可以配置为简陋且功[…]...APPIUM–用于测试的自动化工具 Appium最初由DanCueller开发,用于利用AppleiOS的UI自动化框架对本机挪动应用程序运行[…]...CSS3动画使用教程
css两端对齐怎么设置,css中文本的对齐有哪些 在设计页面的时候会涉及到文本对齐的问题,默认情况下是靠左对齐的,但有些时候也乤靠右对齐。本文给大家介绍下css两端对齐,看看css两端对齐怎么设置,以及css中文本的对齐有哪些。一、css两端对齐怎么设置我们先来看下css两端对齐的效果图:上面的代码是:<divstyle="width:500px;height:300px;background-color:#6666CC;text-align-last:justify;color:#FFFFFF">css两端对齐</div>为了让效果更加明显,我们给div加了宽度和底色等,其中css两端对齐的代码是text-align-last:justify。大家如果想像文本两段对齐的话,在css里面加入这个属性代码就可以了,当然也可以结合具体情况设置其他的css样式,让整个效果更加好看。二、css中文本的对齐有哪些语法:text-align:left|right|center说明:设定元素内文本的水平对齐方式。参数:left:左对齐;right:右对齐;center:居中;justify:两端对齐前面说到默认情况下,文本是左对齐,那么如果要让文本靠右对齐,代码是:<divstyle="width:500px;height:300px;background-color:#6666CC;text-align:right;color:#FFFFFF">css靠右对齐</div>以下是效果图:如果让文本居中对齐,代码是:<divstyle="width:500px;height:300px;background-color:#6666CC;text-align:center;color:#FFFFFF">css居中对齐</div>以下是效果图:关于css两端对齐的问题,本文就介绍到这里。除了css两端对齐,本文还介绍了主要的css中文本的对齐有哪些。可以看到,常见的文本对齐方式是靠左、居中以及靠右,相对来说css两端对齐用得还是比较少的,只在某些特别情况下使用。总之这些css代码很简陋,大家应该能够很快学会。 --
css虚线样式,怎么在css里添加虚线本文给大家介绍的是css虚线样式,给大家介绍下怎么在css里添加虚线。线框通常是针对div来的,线条会让整个div看起来更加明显,那么具体css虚线样式代码是什么呢?先来看个实例图:可以看到整个div的线框就是虚线的,下面是具体代码:<divstyle="width:500px;height:300px;border:1px#0000FFdashed;padding:20px;">这里的div边框就是虚线了。</div>可以看到,css虚线样式的重点是在border,其中1px表示虚线的粗细,如果设置5px,那么线条就会更加粗些;dashed表示虚线,如果实线的话则是solid;#0000FF自然就是指虚线的颜色了。这里设置的是四面都是虚线,我们也可以设置某一边,比如设置只有左边有虚线边框,代码为:<divstyle="width:500px;height:300px;border-left:1px#0000FFdashed;padding:20px;">比如设置只有上边有虚线边框,代码为:<divstyle="width:500px;height:300px;border-top:1px#0000FFdashed;padding:20px;">比如设置只有右边有虚线边框,代码为:<divstyle="width:500px;height:300px;border-right:1px#0000FFdashed;padding:20px;">比如设置只有下边有虚线边框,代码为:<divstyle="width:500px;height:300px;border-bottom:1px#0000FFdashed;padding:20px;">css虚线样式其实很简陋,现在大家应该知道怎么在css里添加虚线了吧!控制div线框的是border,我们可以具体设置四条边的线框是否显示,也可以去设置虚线框的颜色和粗细。线框的设置可以让div的块状更加明显,至于是用虚线还是实线,大家可以根据具体情况而定。不知道怎么在css里添加虚线的朋友,可以拿本文的代码去看看效果,自己再去修改修改,经验下变化,进而更审核的把握css虚线样式。 --
CascadingStyleSheets简称“CSS”,它是一种编码语言,为网站提供外观和布局。与HTML一起,CSS是网页设计的基础。没有它,网站仍旧是白色背景上的纯文本。在万维网联盟(W3C)于1996年开发CSS之前,网页的形式和功能都非常有限。早期的浏览器将页面显示为超文本或纯文本,图像和指向其他超文本页面的链接。根本没有布局可言,只有在单个列中跨页面运行的段落。CSS答应对网页布局进行多项创新,例如能够:指定浏览器的默认字体以外的字体指定文本和链接的颜色和大小将颜色应用于背景在框中包含网页元素并将这些框浮动到页面上的特定位置他们将“风格”放在样式表中,并且第一次可以设计网页。首先个阅读和使用CSS的商业浏览器是1998年的MicrosoftInternetExplorer3.到目前为止,对某些CSS功能的支持因浏览器而异。W3C仍在监督和创建Web标准,最近发布了CSS-CSS3的新标准。使用CSS3,开发人员渴望所有主流浏览器都能以相同的方式读取和显示每个CSS功能。CSS如何工作?要了解CSS如何工作的基础见识,您必须先了解一下现代HTML。Web开发人员根据“盒子模型”布置页面。网页是一系列框,每个框包含一个离散元素。这些盒子是嵌套的,一个在另一个里面。例如,页面的标题是一个框,它包含几个较小的框,其中包含构成标题的所有元素:徽标,导航,社交媒体按钮,购物车按钮等。使用CSS,开发人员将样式分配给“标题“框。在这个例子中,我们假设开发人员将标题内的文本设为紫色,Arial字体和15个像素点。这里是层叠样式表的“级联”部分发挥作用的地方。应用于标题的字体样式级联到标题内包含的所有元素。包含导航,链接或号召性用语等元素的元素都将是紫色,Arial和15个像素点。相关文章推举SSL证书是什么?为什么它很重要? 你有没有注意到有些网站的网址是以https://开头的,其他网址的网址是http://?http末尾的“s”提[…]...商业网站设计的3个技巧 互联网是商业传播的良好渠道,拥有良好的商业性设计将为您的网站带来更多业务,网络流量和增长。商业网站设计提供了建[…]...MySQL和SQLServer的区别 实际上,每个web应用程序和数据库都扮演着重要的角色。由于当前web开发的动态特性,即使是最基本的应用程序也需[…]...ASP.NET是什么?我为什么要使用它? ASP.NET是一个开源的服务器端Web应用程序框架,由Microsoft开发,ASP.NET答应开发人员创建[…]...什么是服务器? 在技术意义上,服务器是接受并响应由另一个程序(称为客户端)发出的请求的运算机程序或设备的实例。在运算中,服[…]...什么是CSS,为什么它很重要?
级联样式表可以将枯燥的HTML文档转换为动态网页,但随意使用CSS可能会使网站在开始渲染之前瘫痪。本指南将介绍一些快速简便的方法来微调网站的CSS性能,以便您可以更快地向用户提供内容。什么是CSS?级联样式表或CSS是用于基于标记语言文档中提供的内容定义网站的可视化表示的语言,它被认为是Web和HTML和JavaScript的“基石技术”之一。CSS通常存储在外部样式表中,或者.cssfiles也可以直接集成到HTML文档中。CSS答应网站的演示文稿和内容之间的分离,这使得网站更容易被不同的设备访问。将颜色和字体的信息与内容分开也会降低网站的复杂性,因为几个HTML页面可能共享相同的内容.cssfile。但是,如果使用不当,CSS可能会严重影响网站的性能。CSS性能和网站速度在评估网站的速度时,需要衡量各种性能指标,但有两个突出显示:首先个字节的时间开始渲染的时间首先个字节的时间是指访问者在请求您的URL后接收首先个数据字节所需的时间,开始渲染的时间是用户的浏览器实际开始显示内容的时间点。前者在很大程度上取决于您的服务器设置,但后者更多地取决于CSS结构。也就是说,浏览器在接收数据之前不会开始渲染,因此首先个字节的慢速时间显然会缩短开始渲染的时间。因此,在获得优化CSS性能之前,您应该优先解决服务器的任何潜在问题。CSS性能如何影响启动渲染的时间?在浏览器开始布置网页内容之前,它需要HTML和CSS形式的说明。因此,在下载和处理所有外部样式表之前,渲染无法开始。这需要的往返次数越多,游客就越需要等待。使用外部CSS涉及发出一个或多个HTTP请求,因此您的目标应该是尽可能减少所需请求的数量。例如,将插件,横幅和布局链接样式放入单个.css文件中可以显着加快首次渲染的时间。提高CSS性能:内联简介确保快速交付CSS的一种方法是内联实践,内联意味着将外部CSS资源直接插入HTML文档。这种技术适合较小的资源,但它仍旧有明显的区别。内联CSS减少了浏览器在开始出现页面之前需要下载的数据量,使用外部CSS文件时,必须在标记文档完成下载后单独下载它们,内联可以让你一石二鸟,可以这么说。要内联CSS,只需从外部CSS文件中复制所需的CSS代码,然后将其粘贴到HTML文档头部的样式标记之间,如下所示:<head> <!–Yourheadermarkup–> <style> .your-styles{ font-weight:bold; } .etc-etc{ color:#222222; } </style></head>内联更大的CSS资源如果您尝试内联大型CSS文件,可能会从性能测试工具收到告诫,指出您的首屏内容太大。因此,对于较大的CSS文件,您应该只内联渲染您的首要内容所需的CSS。然后,您应该异步加载完整的样式表,以便页面可以在解析时继续出现。关键CSS是一个GitHub项目,可以帮助您抉择哪个CSS属于首屏,但您还应该进行手动检查以确保没有遗漏关键组件。在缩小和Gzip压缩之后,所有您的首要样式,脚本,标记志愿情况下总重量应小于14kb。由于14kb大致是服务器在首先次往返中可以发送的数据量,维持在该阈值之下答应用户在他们收到的首先个数据包中获得所有内容。使用异步加载和缓存提高CSS性能上述技巧可以将用户的浏览器保存一次往返服务器,因此他们在首先次访问时会更快地看到内容。不幸的是,用户的浏览器不会缓存CSS,因此每次访问时都必须从头开始加载所有内容。如果你有相当简陋的CSS,这不是一个问题。但是,在大多数情况下,您仍旧渴望用户的浏览器缓存大部分CSS,这就是为什么许多Web开发人员只需在其主页或登录页面上内联CSS,同时在其网站的其余部分使用外部CSS。解决此问题的一种方法是异步加载,不幸的是,没有办法本地异步加载CSS文件,但你可以使用像loadCSS.js这样的脚本来完成这项工作。提高CSS性能的7个提示1.使用preload/HTTP/2Push预加载资源提示告诉浏览器提前获取资源,要让CSS先行一步,请将其设置为HTML文档中的链接标记,如下所示:<linkrel=”preload”href=”/css/styles.css”as=”style”>或者,您可以在服务器配置中包含preload作为HTTP标头:Link:</css/styles.css>;rel=preload;as=style如果您的服务器配置为HTTP/2,预加载将被解释为服务器推送。一些CDN还支持服务器推送,这将有助于进一步加快高优先级CSS文件的传送速度。2.不要内联一切不要在HTML文件中内嵌所有内容,因为这会导致初始HTML文档的大小增添,因此TTFB需要更长的时间。3.连接并缩小CSS将样式表连接到一个文件并发送缩小版本可以大大减小CSS的大小。4.减小样式表的大小样式表越小,它们包含的抉择器越少,浏览器在出现网页时必须执行的工作就越少。因此,您应该竭力删除不需要的抉择器,利用实用程序类并避免重复的CSS代码,您可以使用诸如uncss之类的工具来确保样式表仅包含必需的CSS代码。5.抉择你的抉择器说到抉择器,使用后代抉择器强制浏览器检查所有后代元素是否匹配,因此它们可以创建比它们旋转更多的问题。通用抉择器也可能相当昂贵,因此也避开它们。尽可能使用浅抉择器。6.避免一些属性某些CSS属性比其他属性要臃肿得多,所以应该保守地使用它们,这些是需要注意的几个属性:边界半径箱阴影过滤位置:固定转变如果它们每页出现数百次,那么整体CSS性能可能会受到影响。7.避免@import不要使用@import指令来包含外部样式表,因为它会阻挠并行下载,这是一种古老的做法。相反,始终使用链接标记结论无论网页加载完成后网页看起来多么令人眼花缭乱,如果访问者在此之前转身离开,您的任何努力都无关紧要。将上述策略集成到您的编码中将答应您构建更快速,更一致地执行的网站,这将激励新客户继续回访。相关文章推举如何将Favicon添加到网站 大多数在线网站都有自己的特定徽标,在大多数情况下,它们被用作网站favicon。如果您不知道favicon是什[…]...如何正确实施网站分页? 分页是什么?分页是页面的序数编号,通常位于网站页面的底部,在大多数情况下,它用于页面分区。通常情况下看起来像[…]...如何在CentOS7上创建Apache虚拟主机? 如果想要在服务器上托管多个域,则需要在web服务器上创建相应的主机,以便服务器知道应该为传入的请求提供哪些内容[…]...Favicon对网站建设的重要性 Favicon图标是一个16×16的ICO文件,支持16或24位颜色和透明度,现在一些浏览器支持32×32大小[…]...HTML5:SVG入门 SVG(可缩放矢量图形)答应您在网页中创建完全按比例放大和缩小的图像,无论用户设备屏幕的大小如何。此外,您可以[…]...