相信刚刚接触CSS变量的大家,对CSS变量一定有许多的问题,那么下面就给大家聊聊CSS变量。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
如何定义和使用CSS变量
从我们最熟悉的语言JavaScript开始:在JavaScript中定义变量使用vars。
要声明一个简单的JavaScript var,如下内容:
var mainColor = 'red';
要声明一个CSS变量,您必须在该var的名称前添加一个双短划线。例如:
body{ --color:red; }
现在,为了使用CSS变量的值,我们可以使用var(...)函数。如下:
.demo{ background:var(--color); }
管理CSS变量的最简单方法是将它们声明为:root伪类。鉴于CSS变量遵循规则,就像任何其他CSS定义一样,将它们放在:root中将确保所有选择器都可以访问这些变量。
:root{ --color:red; } .demo{ background:var(--color); } p{ color:var(--color); }
浏览器支持CSS变量?
浏览器对CSS变量的支持还算不错的。只是IE浏览器不支持。想查看浏览器兼容性的可以点击这里,那么您将看到所有主流浏览器都支持开箱即用的CSS变量。无论是手机还是台式机。
CSS变量的实质应用
示例1 - 管理颜色
到目前为止,使用CSS变量的最佳候选者之一是管理网页的颜色。我们可以将它们放在变量中,而不是一遍又一遍地复制和粘贴相同的颜色。如果有人要求我们更新特定的绿色阴影或使所有按钮变为红色而不是蓝色,那么只需更改该CSS变量的值,就是这样。您不必搜索和替换该颜色的所有实例。
列如:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>管理颜色</title> <style type="text/css"> /*css_vars.css*/ :root { --primary-color: #ed6564; --accent-color: #388287; } html { background-color: var(--primary-color); } h3 { border-bottom: 2px solid var(--primary-color); } button { color: var(--accent-color); border: 1px solid var(--accent-color); } p { color: var(--accent-color); } /*base.css*/ * { margin: 0; padding: 0; box-sizing: border-box; } html { padding: 30px; font: normal 13px/1.5 sans-serif; color: #546567; background-color: var(--primary-color); } .container { background: #fff; padding: 20px; } h3 { padding-bottom: 10px; margin-bottom: 15px; } p { background-color: #fff; margin: 15px 0; } button { margin:0 5px; font-size: 13px; padding: 8px 12px; background-color: #fff; border-radius: 3px; box-shadow: none; text-transform: uppercase; font-weight: bold; cursor: pointer; opacity: 0.8; outline: 0; } button:hover { opacity: 1; } .center { text-align: center; } </style> </head> <body> <div class="container"> <h3>管理颜色</h3> <p>管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色管理颜色</p> <div class="center"> <button>查看详情</button><button>取消</button> </div> </div> </body> </html>
效果图:
示例2 - 删除重复的代码
通常,您需要构建一些不同的组件变体。相同的基本样式,略有不同。让我们使用一些颜色不同的按钮。典型的解决方案是创建一个基类,比如.btn并添加变体类。
.btn { border: 2px solid black;} .btn:hover {background: black;} .btn.red {border-color: red} .btn.red:hover {background: red}
现在使用它们像这样:
<button class="btn">Hello</button> <button class="btn red">Hello</button>
但是,这会添加一些代码重复。在.red变体上,我们必须将border-color和background设置为红色。
这中情况可以使用CSS变量轻松修复。如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>删除重复的代码</title> <style type="text/css"> .btn{ border-radius:4px; text-align:center; padding:.5em; margin-bottom:0.5em; background:#fff; border:1px solid var(--color, black); } .btn:hover{ color:#fff; cursor:pointer; background:var(--color, black); } .btn.red{ --color:red; } .btn.green{ --color:green; } .btn.blue{ --color:blue; } </style> </head> <body> <div class="btn">HMOE</div> <div class="btn red">HMOE</div> <div class="btn green">HMOE</div> <div class="btn blue">HMOE</div> </body> </html>
效果图:
示例3 - 使一些属性可读
如果我们想要创建更复杂的属性值的快捷方式,CSS vars非常适合使用,因此我们不必记住它。CSS属性,如box-shadow,transform和font或其他带有多个参数的CSS规则就是完美的例子。我们可以将属性放在变量中,以便我们可以通过更易读的格式重用它。
例如:
:root { --tiny-shadow: 4px 4px 2px 0 rgba(0, 0, 0, 0.8); --animate-right: translateX(20px); } li { box-shadow: var(--tiny-shadow); } li:hover { transform: var(--animate-right); }
例4 - 级联变量
标准级联规则也适用于CSS变量。因此,如果多次声明自定义属性,则css文件中最低的定义将覆盖其上方的定义。下面的示例演示了动态操作用户操作的属性是多么容易,同时仍然保持代码清晰简洁。
CSS_var.css文件:
.orange-container { --main-text: 18px; } .orange-container:hover { --main-text: 22px; } .red-container:hover { --main-text: 26px; } .title { font-size: var(--title-text); } .content { font-size: var(--main-text); }.container:hover { --main-text: 18px; }
base.css文件:
* { margin: 0; padding: 0; box-sizing: border-box; }html { background: #eee; padding: 30px; font: 500 14px sans-serif; color: #333; line-height: 1.5; }.orange-container { background: orange; }.red-container { background: red; }.red-container, .orange-container { padding-top: 10px; padding-left: 50px; }.container { background: blue; padding: 20px; color: white; }p { transition: 0.4s; }.title { font-weight: bold; }
index.html文件:
<html> <head> <link rel="stylesheet" type="text/css" href="base.css"> <link rel="stylesheet" type="text/css" href="css_vars.css"> </head> <body> <div class="orange-container"> Hover orange to make blue bigger. <div class="red-container"> Hover red to make blue even bigger. <div class="container"> <p class="content">Hover on the different color areas to change the size of this text and the title.</p> </div> </div> </div> </body> </html>
效果图:
示例5 - 具有CSS变量的主题切换器
CSS变量的一个好处是它的反应性。一旦我们更新它,任何具有CSS变量值的属性也会更新。因此,只需几行Javascript和CSS变量的智能使用,我们就可以制作一个主题切换器机制。
例如:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>具有CSS变量的主题切换器</title> <style> body { background-color: var(--bg, #b3e5fc); color: var(--bg-text, #37474f); font-family: sans-serif; line-height: 1.3; } .toolbar { text-align: center; } </style> </head> <body> <div class="toolbar"> <button value="dark">dark</button> <button value="calm">calm</button> <button value="light">light</button> </div> <h2>Stackoverflow Question</h2> <p>I would like to use an external javascript file in another javascript file. For example, I could store all my global variables in a globals.js file and then call then from the website logic logic.js. Then in the index.html, i would insert the tag. How do I use the globals.js inside the logic.js? </p> <script> var root = document.documentElement; var themeBtns = document.querySelectorAll(".toolbar > button"); themeBtns.forEach(function (btn){ btn.addEventListener("click", handleThemeUpdate); }); function handleThemeUpdate(e) { switch (e.target.value) { case "dark": root.style.setProperty("--bg", "black"); root.style.setProperty("--bg-text", "white"); break; case "calm": root.style.setProperty("--bg", "#B3E5FC"); root.style.setProperty("--bg-text", "#37474F"); break; case "light": root.style.setProperty("--bg", "white"); root.style.setProperty("--bg-text", "black"); break; } } </script> </body> </html>
效果图1--刚运行:
效果图2--点击dark:
效果图3--点击calm:
效果图4--点击light:
CSS变量的使用提示
像CSS中几乎所有的东西一样,变量也非常简单易用。以下是一些未包含在示例中的提示,但在某些情况下仍然非常有用:
1)css变量区分大小写。下面的示例是两个不同的变量:
:root { --color: blue; --COLOR: red; }
2)当您使用var()函数时,您可以使用第二个参数。如果找不到自定义属性,将使用第二个参数为默认值:
width: var(--custom-width, 50%);
3)可以直接将CSS变量用于HTML:
<!--HTML--><html style="--size: 600px"><!--CSS-->body { max-width: var(--size) }
4) 可以在其他CSS var中使用CSS变量:
--base-red-color: #f00; --background-gradient: linear-gradient(to top, var(--base-red-color), #222);
5) 可以使用媒体查询使CSS变量成为条件。例如,以下代码根据屏幕大小更改填充的值:
:root { --padding: 15px }@media screen and (min-width: 750px) { --padding: 30px}
6) 不要害怕在 clac() 函数中使用CSS变量。
--text-input-width: 5000px; max-width: calc(var(--text-input-width) / 2);
当然,CSS变量不是灵丹妙药。不会解决你在CSS领域遇到的每一个问题。但是,使用它使您的代码更具可读性和可维护性。此外,它极大地改善了大型文档的易变性。只需将所有常量设置在一个单独的文件中,当您只想对变量进行更改时,就不必跳过数千行代码。
以上是初次接触CSS变量的详细内容。更多信息请关注PHP中文网其他相关文章!

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

使用滚动阴影,尤其是对于移动设备,是克里斯以前涵盖的一个微妙的UX。杰夫(Geoff)涵盖了一种使用动画限制属性的新方法。这是另一种方式。

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)