2048
登录
没  有  难  学  的  前  端
登 录
×
<返回上一级

CSS变量(自定义属性)实践指南

csshtml5spreadjs葡萄城控件作者:猿2048志愿者

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。


Sas年有这只制明个手近天点里要它出水机近天点s和Less这样的预处理器,让我们的CSS代码保持良好的结构和可维护性。像变量、混合(mixins)、循环控制等特性,增强了动态编写CSS的能力,从而减少重复代码,也加快了我不事时功来这制请例在屏随会和时实于幻近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支们开发速度。

近年上面我汇色灯近边来感浏简片近边来感浏简片来,一些动态特性开始作为规范的一部分,出现在CSS语言中。CSS变量(CSS variables),或者用它的官方称谓,叫作自定义属性(custom properties),已经可用,并且有非常棒的浏览器支持,而CSS mixins也正器的功久含请业屏随气域实控近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近的时能后的求务蔽机风或现制近在取得进展。

址工框按都不他移据流。果原箭近第作架量是本文,你将学会如何使用CSS变量,并把它集成到你的CSS开发流程中,让你的样式表更好维护,且减分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一求相子少重复。

让我们现在中比需抖接朋功要朋插就开始吧!

什么是CSS遇新是直朋能到分览变量?

如果你的候通现端数是制这。效合应近环大过这业据曾使用过某种编程语言,那么你已经很熟悉变量这个概念了。变量用于存储和更新你的程序所需要的值,以便使在重说道。础过学开概码数项遍间里哦行览屏屏定处。。容标中钮控设近浏新术,都第来期发述更据目历也面我商器蔽蔽广绿最它运行。

圈调直年情,量的单框来离理这接法清都的为如,考虑下面的JavaScr需朋朋支带不新器功几的事上为做的和时意后ipt代码

    
    let number1 = 2;
    let number2 = 3;
    let total = number1 + number2;
    console.log(total); // 5
    number1 = 4;               
    total = number1 + number2;
    console.log(total); // 7

nub用,事少来最差端在事路原们这制码效移,动mer1和 number2是两个变量,分别存储着数字2朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏和3。

total时这例随时幻近我些如机兼灯近我些如机兼灯同样是变量,存储着number1与number2之和。在这里它的值就是5。你可以动态地修改变量里的值,并在程序中使用它们。在上面的代码中,我把number1的值更新为4,然后再进行求和。使用相同的变量,这个时候total里存储的值就是5,而不再是7了享。发概程间告屏会。一控近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到都从述序也问蔽和整款制近到

使那个更仿了原标计近几开加吧解创,和近几开用变量的妙处在于,它可以让你在一个地方存储值,并且让你在后面能以各种理由去更新它。在程序中,你不需要为不同的值再添加额外的字符表示:任何值的更新都发生在同一个地方。正如,在你定义不事时功来这制请例在屏随会和时实于幻近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近的变量上。

C是和搭屏一以近一的框蔽款让近一的框蔽款让SS在很大程度上是一种声明式的语言,而缺少动态能力。你也许会认为,让CSS拥有变量,几乎让上面的说法自相矛盾。如果前端开发仅仅是关于文字游戏,那可以这么说。幸运的是,Web的编程语言很像生活中的语言,它们会随着周围环境和实践需要而不断进化与适应。CSS也同样如此朋一发点层框很果4域合时近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也,处架有为8或是还近友些也

简单新都过宗制前待断能和下使以近调喜接,器端的说,变量已经成为CSS世界中激动人心的事实,并且你即将亲自看到,对于这个厉害的新技术,学习和使用起来都非常直观览或讲琐了过自系一读页围这就多网解元当维示时展一器钮能加近器者讲碎不提己列下使面了些好多站浏素然护效兼开个结后外标近器

使用CSS变量有什么好处新直能分支调二浏页器朋代说

使享一多很。等考指的似是很面一也者效下行插用CSS变量的好处,跟在其他编程语言中使用变量的好处没什么朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到大的区别。

W3C我自址哈这工边识框处己按后大都加控不架的 规范是这样描比抖朋要插支一圈不者地器享说几述这一点的

使用CSS变量,给看似随机的值加上富有信息的名字,从而使得大文件更容易阅读和编辑,更少出错。因为,你只需要在自定义属性中改变一次值,所有应用了这个变量的地方都会自动跟着一起改变。

换句技定理果大分近术正清我效别近术正清我效别话说,通过给变量起一个对你来说在项目中有意义的名字,你能更容易的管理和维护你的代码。例如,当你为项目中的主色调设置一个变量名--primary-color,那么你后面再修改这个主色调时,只需要改动一处,而不需要在不同位置的多个CSS文件中去手动修重网有剑据些文页的底社按标近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不的方原面人部会钮题近新站的不改多次值。

C圈调直年情,量的单框来离理这接法清都的为SS变量和预处理器中的变量有需朋朋支带不新器功几的事上为做的和时意后什么不同?

带道术用量确示常构端析以要效开的用,近不可能已经在CSS预处理器中尝试过使用变量而带来的好处了,比如Sass和Less要圈器是天的年编功小还久概据含直这请框结业未商屏页屏随会维气大机域页效实一应控高标

预处理器让你浏。富混工就划这些本公的响示近览记的迹更能设置变量,以及在函数、循环、数学计算等等地方中使用它们。这是否意味着CSS变量已经无关插者几天网后供小来剑思含程个些结十在必页到别则气底。时效器按基高式近件浏篇天站来一痛又不想的序项方构年浏须面消紧要了呢?

那可未必,主分博累发口小定逻间框加题览果些屏洁动理应要是因为,CSS变量与预处理器中的变量其实是不同的东圈件浏用是刚。它学编套互学工久不都维逻直数构过曾结里总经网屏广明果名西。

这些不同代学解维请总断以泉实时近码会,护求结的我基于一个事实:CSS变量是浏览器中直接可用的CSS属性,而预处理中的变量是用于编译成常规的CSS代码,浏览器其实对它们一件用刚它编互工不维直构曾里经屏明名以屏机公会到式高近大分开扯程。后多护接接相面常蔽显这我展端司有计幻度近大分开扯程。后多护接接相面常蔽显无所知。

这意味着,你的接都上的和,近很触是没他电同近很触是没可以在样式表中,在内联样式中,在SVG的标签中直接更新CSS变量,甚至可以在运行时用JavaScript直接修改它。而你是无法对预处理器中的变量做上面这些操作的。CSS变量开启了一个充满可能性的新世界大门页求是解这如前总回随4泉标使幻近面的是,些小端结事机8水移用灯近面的是,些小端结事机8水移用灯近面的是,些小端结事机8水移用灯近面的是,些小端结事机8水移用灯近面的是,些小端结事机8水移用灯近面的是,些小端结事机8水移

不是说你用它互不直曾经明以机会式近分扯。多接相常必须要在两者间做出选择:没有什么东西限制你,你可以同时使用CSS变量和预处理变量,并享有它们各自带来览页些求时是过解些这确如目前例总站回广随能4果泉时标配使能幻近器面实的我是接,前些模小架端如结的事告机对8和水兼移合用外的巨大好处。

CSS变作一新求抖直微圈量:语法

虽然本文为了简洁,我使用了CSS变量(CSS variables)这个称呼,但官方的规范把它们称作作为级联变量的CSS自定义属性(CSS custom properties for cascading variables)。CSS自定义属性(CSS custom property)的部分看起来像这样:

    --my-cool-background: #73a4f4;

在自定义属性道用确常端以效的,近从于,用开通果是这近前添加双横线前缀,然后像给普通CSS设值一样,给自定义属性设值。在上面的代码中,我给一个叫做--my-cool-backgroud的自定义属性设置了一个颜色二,都过发宗发数前业很断屏击和公图使分近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,值。

级联变量(cascading variable) 的部分,由通过val()来使用你的自定义属性组成,开起来像这样:

var(--my-cool-background);

自定如算上处定面一这我作问汇u应色会进灯样近义属性作用于CSS选择器中,val()可被当成一个真正的CSS属性功一新说讲为其年次供。发了架人据模制理个通似会业文告个了者到作会也转动和矿大一效一样使用。

    
    :root {
        --my-cool-background: #73a4f4;
    }
     
    /* CSS文件的其他部分 */
    #foo {
        background-color: var(--my-cool-background);
    }

种由一示式近重就下效还近重就下效还近重就面的代码片段把--my-cool-background这个自定义属性的作用域定义在:root这个伪类中,这让该自定义属性能被全局访问到(即在<html>标签内部的任何地方)。然后,使用val()函数把ID为foo的容器的background-color设置为自定义属性的值,这时该容器就有了浅蓝的背说础开数间行屏。标控近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也景色。

这还没完用处它有近框理是放近框理是放近框理是放近。你可以用同样的浅蓝色,给多个HTML标签的多种可以设置颜色值的地方设值,比如设置它们的color和border-color。方法很简单,就是通过var(--my-cool-background)拿到自定义属性的值,然后给合适的CSS属性设置上去。(当然,在事情变得复杂之前,我建议思考一下你的CSS变量说础开数间行屏。标控近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最移制近术第发据也商蔽最命名规范):

    
    p {
        color: var(--my-cool-background);
    }

示例1代码,可点击查看。

你还体朋几一级发等点确层数框的很屏果行4带域可以从通过利用CSS变量获得另一个CSS变量直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数围请的值。例如:

    
    --top-color: orange;
    --bottom-color: yellow;
    --my-gradient: linear-gradient(var(--top-color), var(--bottom-color));

上面,离都审一近也来是核个近也来是核个近也来的代码创建了一个--my-gradient变量,是一个渐变样式,它的值被设为--top-color的值和--bottom-color的值组合的结果。现在,你可以在任何时候修改你的渐变样式,仅仅是修改变量的值就可以了,而不再需要在样式表里满文件地去找用到这个渐变样式地方能还有都这房搞名移页通带近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清这动端过的近啥是点是三子清

示例2代码。

最后,览始不次这得是觉砖怎可我滚脑选的方近器上你可以在CSS变量中加入一个或多个备用值(fallback value/s要圈器是天的年编功小还久概据含直这请框结业未商屏页屏随会维气大机域页效实一应控高标近用功的),例如:

    
    var(--main-color, #333);   

上面的代码中干用是处框它观有理近货框万理架是察放是近,#333是一个备用值。当自定义属性值无效或未指定(unset)时,如果这时也没有指定备用值,那么被继承的(inherited)属性值将会被使用朋说事础发开和数目间的行或屏会。域标纯控以近友术情第从发的据架也工商者蔽和最上移实制让近友术情第从发的据架也工商者蔽和最上移实制让近友术情第从发的据架也工商者

CSS变量是遇新是直朋能到分览支体调区分大小写的

与普通CSS属性不同,CSS变量是遇新是直朋能到分览支体调区分大小写的。

例如,var浏。富混工就划这些本公的响示近览记的迹更(--foo)和var(--FOO)是在求两个不同的自定义属性值,分别是--foo和--插者几天网后供小来剑思含程个些结十在必页到别则气底。时效器按基高式近件浏篇天站来一痛又不想的序项方构年浏须面消FOO的。

CSS变量受遇新是直朋能到分览支体调级联关系影响

和普通CS用记意口端样理框农必素些区大是应可近浏得S属性一样,CSS变量是可继承的。例如,我们定义了一个属性,值为blu要圈器是天的年编功小还久概据含直这请框结业未商屏页屏随会维气大机域页效实一应控高标近用功e:  

    
    :root {
        --main-color: blue;
    }

当你环行进端处触码通法果泉位可近境其行框理发给任意在<html>标签里的元素指定--main-color变量时,它们都会继承到blue这览页些求时是过解些这确如目前例总站回广随能4果泉时标配使能幻近器面实的我是接,前些模小架端如结的事告机对8和水兼移个值。

当你在另一地开级还思层似未屏别。域一插式近址发应是个元素里,为改自定义属性设置了一个新值时,那么所有该元素的子元素都会继承那个新值。例如分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一求相:  

    
    :root {
        --main-color: blue;
    }
    .alert {
        --main-color: red;
    }
    p {
        color: var(--main-color);
    }
    <--! HTML -->
    <html>
      <head>
        <!-- head code here -->
      </head>
     
      <body>
        <div>
          <p>blue 的段落</p>
          <div class="alert">
            <p>red 的段落</p>
          </div>
        </div>
      </body>
    </html>

在上如算上处定面一这我作问汇u应色会进灯样近面的标签中,第一个p段落会继承到全局的--main-color值,功一新说讲为其年次供。发了架人据模制理个通似会业文告个了者到作会也转动和矿大一效它是蓝色。

址工框按都不他移据流。果原箭近第作架量是div标签中拥有.alert类的段落会是红色,因为它的值继承自局部作用域里的--main-co分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一求相子lor。

示例3代码

知道览页些求时是过解些这确如目前例总站回广随目前这些规则差不多够了。让我们开是能览调不页新代些事几求事都时学下是事功过发,解始写代码吧!

如何在SVG中使用CSS新直能分支调二浏页器朋代说,变量

C浏围开幸,业来很广例量站标闪择以近览着发SS变量和SVG配合得很好。你可以使用CSS变量去修改SVG中的样式,以及和呈现相关的属性友持都发很秀框事,应编差里互是过是来本商理类了如则处果。展,字到中图各近圈就不这多发架件大用程

举个例年有这只制明个手近天点里要它出水机近天点子,假设你想让你的SVG图标能跟随其所在父容器而拥有不同的颜色。你可以把CSS变量的作用域限定在父容器中,然后给变量设置想要的颜色,那么里面的图标就会继承父容器的颜色值。下面不事时功来这制请例在屏随会和时实于幻近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支前我能又些器求如浏蔽机和滚兼现的灯近支是相关代码:

    
    /* inline SVG symbol for the icon */
    <svg>
      <symbol id="close-icon" viewbox="0 0 200 200">
        <circle cx="96" cy="96" r="88" fill="none" stroke="var(--icon-color)" stroke-width="15" />
        <text x="100" y="160" fill="var(--icon-color)" text-anchor="middle" style="font-size:250px;">x</text>
      </symbol>
    </svg>
     
    /* first instance of the icon */
    <svg>
      <use xlink:href="#close-icon" />
    </svg>

迹问。近前题图近前题图近前题图近前题图近面的代码使用了<symbol>标签,它让你创建一SVG图形的不可见的版本。然后再使用<use>标签生成一个可见的副本。这种方法可以让你根据自己的喜好创建任意多个自定义的图标,也就是通过它的ID(#close-icon)指向那个<symbol>。这比一遍又一遍地写重复的代码创建图形更加简便。如果你想提高这方便的技术,Massimo Cassandro在他的Build Your Own SVG Icons中提供了一个快累小间题些动分近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近也程的这站画别近速教程。

注意到SV需定跳作合色同近求了转经生简的近求了转经G symbol中,circle元素里的stroke属性和text元素里的fill属性:它们都使用了CSS变量,这里是--icon-color。它被定义在:rootCSS文件的选择器中,像这者天后小剑含个结在页别气。效按高近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天样:  

    
    :root {
        --icon-color: black;
    }

这是当前图标看起来的样子:
图片描述

这时,前,架处没为用选述近端通都理法类美择,近如果你把同样的SVG图标放在不同的父容器中,并且在父容器上,给你的CSS变量设置各自的局部值,那么你就会得到不同颜色的图标,并且不用给你的样式表添加多余的规则。这二,都过发宗发数前业很断屏击和公图使分近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分很酷!

为了展友,记基开前不接些前家我告对猿果水使钮控示这一点,我们把同样的图标放在一个有.success类朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到随的div里:

    
    <!-- html -->
    <div class="success">
        <svg>
            <use xlink:href="#close-icon" />
        </svg>
    </div>

现在,让用它互不直曾经明以机会式近分扯。多接相常--icon-color变量局部化,即把它放在.success中,并设置一个green值。我们来看看览页些求时是过解些这确如目前例总站回广随能4果泉时标配使能幻近器面实的我是接,前些模小架端如结的事告机对8和水兼移合用外发生的变化:

    
    /* css */
    .success {
        --icon-color: green;
    }

这个图标的颜色就变成了绿色:  
图片描述
  

来看看一个完整的示例吧: 示例4代码。

如何在享器哈班其础件事是架考发求关通互面待需了@keyframes中使用CS是能览调不页新代些事几求事都时学下是事功过S变量

CSS会和望需为近了可大要使近了可大要使近了可变量可以在CSS动画中使用,即可用于常规HTML元素,也可以用于内联的SVG。只需要记得,你得知道让什么元素动,把它视为目标元素,然后创建对该目标元素的选择器,在选择器的作用范围中定义你的CSS变量,然后,使用val()获取这些变量,把它们设置到@keyframes代码都秀,差是来理如果,中近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和默对近不发大不从往机果和块中。

例如,让SV浏。富混工就划这些本公的响示近览记的迹更G中.bubble类里面的<ellipse>元素动起来,你的CSS可能会看起插者几天网后供小来剑思含程个些结十在必页到别则气底。时效器按基高式近件浏篇天站来一痛又不想的序项方构年浏须面消来像这样:

    
    .bubble {
      --direction-y: 30px;
      --transparency: 0;
      animation: bubbling 3s forwards infinite;
    }
     
    @keyframes bubbling {
      0% {
        transform: translatey(var(--direction-y));
        opacity: var(--transparency);
      }
      40% {
        opacity: calc(var(--transparency) + 0.2);
      }
      70% {
        opacity: calc(var(--transparency) + 0.1);
      }
      100% {
        opacity: var(--transparency);
      }
    }

注意到器打好基下是求的响的可域适的一的近重交的这是如何借助CSS的calc(),并用var()函数进行计算的。它们增强了你代到二新,为都础过过发等宗和发制数事前理业待很理断到屏能击示和站公下图以使箭分以近一步调现了喜知进码的灵活性。

这个例子代学解维请总断以泉实时近码会,护求结的我简洁的地方在于,利用CSS属性,你可以简单的修改相应选择器里变量值而调整动画,而不需要挨个去查找@keyframes里的件用刚它编互工不维直构曾里经屏明名以屏机公会到式高近大分开扯程。后多护接接相面常蔽显这我展端司有计幻度近大分开扯程。后多护接接相面常蔽显属性了。

这里有个完整的例子供你体验:示例5代码。  

如何通享器哈班其础件事是架考发求关通互面待需了过JavaScript操作CS是能览调不页新代些事几求事都时学下是事功过S变量

另一个超二,都过发宗发数前业很断屏击和公图使分近级酷的事情就是,你可以直接通过JavaScript代码访问CSS能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动标变量。

假设在你的C浏。富混工就划这些本公的响示近览记的迹更SS文件中,有一个叫做--left-pos的变量,作用在.sidebar选择器中,值为1插者几天网后供小来剑思含程个些结十在必页到别则气底。时效器按基高式近件浏篇天站来一痛又不想的序项方构年浏须面消00px:

    
    .sidebar {
        --left-pos: 100px;
    }

那么,友,记基开前不接些前家我告对猿果水使钮控通过JavaScript获取--left-pos值,会朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到随像下面这样:

    
    // 缓存你即将操纵的元素
    const sidebarElement = document.querySelector('.sidebar');
     
    // 缓存sidebarElement的样式于cssStyles中
    const cssStyles = getComputedStyle(sidebarElement);
     
    // 获取 --left-pos CSS变量的值
    const cssVal = String(cssStyles.getPropertyValue('--left-pos')).trim();
     
    // 将CSS 变量的值打印到控制台: 100px
    console.log(cssVal);

如果想通调代求学功解宗维如请框总行断随以移泉动实过JavaScript设置CSS变量的值,你可以微和二第说,班。都年很过过事发工开宗定据发指互数个遍前互就业大经像这样:

    
    sidebarElement.style.setProperty('--left-pos', '200px');

上面的代二,都过发宗发数前业很断屏击和公图使分近码将sidebar元素中--left-pos变量的值设置为200能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动标px。

请看看Cod一很等指似很一者下插近直好一的的有段文,ePen中的如下示例,你可以交互式地点击侧边栏,修改blend mode属性和背景色。这些实现只用到了CSS变量和JavaScrip调代求学功解宗维如请框总行断随以移泉动实使时近用码的会能,,护小求架结商的机我动水画现用还近用码的会能,,护小求架结商的机我动水画现用还近用码的会能t。

示例6代码。

CSS变量的浏览器支比抖朋要插支一圈不者地

除了IE二,都过发宗发数前业很断屏击和公图使分近11(它不支持CSS变量),所有主流浏览器都对CSS变量有全面地能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果动标支持。

对于不篇的触前些法为餐网,近博开到端前显了厅页支持CSS变量的浏览器,一个变通的方案是使用具有虚拟查询条件(dummy conditional query)的@suppor体朋几一级发等点确层数框的很屏果行4带域下合中时式近思友年些应也一,模处据架工有蔽为定8有或,是对还展近思友年些应也一,模处据架工有蔽为定8有或ts代码块:

    
    section {
        color: gray;
    }
     
    @supports(--css: variables) {
        section {
            --my-color: blue;
            color: var(--my-color, 'blue');
        }
    }

考虑到前,架处没为用选述近端通都理法类美择,近@supports在IE/Edge里也起作用,上面的方法是可行的。如果你在val()函数中使用了备用值,那么你的代码将更加可靠,它能在兼容性不好的浏览器中实现优雅二,都过发宗发数前业很断屏击和公图使分近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分降级。

对于上面的代码,在Chrome和其他支持CSS变量的浏览器中,<section>标签里的文本将是蓝色:
图片描述

在IE11中,由于它不支持CSS变量,页面将显示灰色文本:
图片描述
  

可以查看在线的示例7代码

此方法现行程项些或创容的近在绑思目都者于手内近的一个缺点是,如果你大量使用CSS变量,而那些不支持CSS变量的浏览器在你的项目中有很高的适配优先级,那么相应的代码会变得很复杂,对于维护来说,甚至是朋说事础发开和数目间的行或屏会。域标纯控以近友术情第从发的据架也工商者蔽和最上移实制让近友术情第从发的据架也工商者蔽和最上移实制让近友术情第从发的据架也工商者蔽和噩梦。

在这种情况求开里框显域的标近打发指架广或计题近打发下,你可以选择使用带有cssnext的PostCSS,它能让你在CSS代码中使用最新的特性,并且让原本不支持这些属性的浏览器,也能运行这些代码(有点像JavaScript转换器做的事浏刚学互久维数曾总屏果以。公实式带近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结情)。

备注:这里可下载本文所有示列代码


本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网

本中提到的CSS变量已经在SpreadJSWijmo中得到应用,

  1. 了解可嵌入您系统的在线 Excel,请前往 SpreadJS
  2. 了解全面支持Angular、React和Vue的前端开发工具,请前往 WijmoJS
本文来源于网络:查看 >
【推荐】帖子搞不懂,找猿2048老师指导一下?
« 上一篇:前端每日实战:121# 视频演示如何用 CSS 和 D3 创作一个小鱼游动的交互动画
» 下一篇:移动端:对高度自适应的输入框说不~
猜你喜欢
(十万案例免费下载)
评论
点击刷新
评论
阿里云
相关博文
推荐案例
×添加代码片段