0


CSS中的变量

1.1 变量的声明

声明变量的时候,变量名前面要加两根连词线(

  1. --

)。变量名大小写敏感,

  1. --header-color

  1. --Header-Color

是两个不同变量。

  1. body {
  2. --foo: red;
  3. --bar: #336699
  4. }

上面代码中,

  1. body

选择器里面声明了两个变量:

  1. --foo

  1. --bar

。使用变量用var()函数。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=p, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style>
  9. :root{
  10. /* 变量分 全局变量和局部变量 */
  11. --foo:red;
  12. --myy:#006699;
  13. }
  14. body{
  15. /* 变量的定义 */
  16. font-size:30px;
  17. }
  18. p{
  19. /* 变量的使用,用var()函数 */
  20. color:var(--foo);
  21. }
  22. h1{
  23. color:var(--foo);
  24. background-color:var(--myy);
  25. }
  26. </style>
  27. </head>
  28. <body>
  29. <p>网易</p>
  30. <h1>优酷</h1>
  31. <div class="box">爱奇艺</div>
  32. </body>
  33. </html>

它们与

  1. color

  1. font-size

等正式属性没有什么不同,只是没有默认含义。所以 CSS 变量(CSS variable)又叫做**"CSS 自定义属性"**(CSS custom properties)。因为变量与自定义的 CSS 属性其实是一回事。

你可能会问,为什么选择两根连词线(

  1. --

)表示变量?因为

  1. $foo

被 Sass 用掉了,

  1. @foo

被 Less 用掉了。为了不产生冲突,官方的 CSS 变量就改用两根连词线了。

变量分:全局变量和局部变量

全局变量

:root的作用:

  1. /* 在这里定义的css变量,叫做全局css变量。在任何选择器中,都可以去使用。 */
  2. :root{
  3. }

CSS 变量中,可以放置 各种值:

  1. /* 在这里定义的css变量,叫做全局css变量。在任何选择器中,都可以去使用。 */
  2. :root{
  3. /* css变量中的值,可以是“任何值” */
  4. --main-bg:rgb(255,255,255);
  5. --logo-border-color: orange;
  6. --header-color:green;
  7. --Header-Color:pink;
  8. --header-height:68px;
  9. --content-padding:10px 20px;
  10. --base-line-height:1.4;
  11. --margin-top: calc(100px - 80px);
  12. }
  1. <link rel="stylesheet" href="./css/base.css">
  2. <style>
  3. .box1{
  4. width: 50%;
  5. height: var(--header-height);
  6. border: 1px solid var(--logo-border-color);
  7. }
  8. /* 变量名大小写敏感,--header-color和--Header-Color是两个不同变量。 */
  9. .box1 h3{
  10. color: var(--Header-Color);
  11. }
  12. .box1 p{
  13. color: var(--header-color);
  14. }
  15. </style>
  16. <div class="box1">
  17. <h3>box1</h3>
  18. <p>box1</p>
  19. </div>

局部变量:定义某元素下的变量。只能在某元素身上,以及这个元素的内部的所有的标签去使用。

  1. .box2{
  2. --border-color:green;
  3. }
  4. .box2{
  5. width: 300px;
  6. height: 300px;
  7. border: 5px solid var(--border-color);
  8. }

使用:

  1. <div class="box1">
  2. <h3>box1</h3>
  3. <p>box1</p>
  4. </div>
  5. <!-- 只能在.box2身上以及其内部元素上去使用 -->
  6. <div class="box2">
  7. <h2>box2</h2>
  8. <h3>box2</h3>
  9. <p>box2</p>
  10. </div>

1.2 var() 函数

  1. var()

函数用于读取变量。

  1. <style>
  2. body{
  3. --foo:#515151;
  4. --bar:#a10000;
  5. }
  6. .t1 a{
  7. color: var(--foo);
  8. text-decoration: none;
  9. }
  10. .t1 a:hover{
  11. color: var(--bar);
  12. text-decoration: underline;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <h1 class="t1">
  18. <a href="">小余</a>
  19. </h1>

  1. var()

函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。

  1. color: var(--bar,red);

注意:--bar在申明的时候,没有值可以,但是不能把值写错。写错的话。两个地方的颜色都不会使用。

--bar:a10000; --第1个地方 ( --bar: ; ---这样写,也是不显示的。)

color: var(--bar,red); --第2个地方

第二个参数不处理内部的逗号或空格,都视作参数的一部分。

  1. padding: var(--pad,10px 15px 20px);
  1. <style>
  2. .box1{
  3. width: 300px;
  4. height: 300px;
  5. border: 5px solid blue;
  6. margin-top: 20px;
  7. padding: var(--pad,10px 15px 20px);
  8. }
  9. </style>
  10. </head>
  11. <div class="box1">
  12. box1
  13. </div>

注意,变量值只能用作属性值,不能用作属性名。

  1. .foo {
  2. --side: margin-top;
  3. /* 无效 */
  4. var(--side): 20px;
  5. }

1.3 calc() 函数

calc() 函数用于动态计算长度值。

  • 需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px)
  • 任何长度值都可以使用calc()函数进行计算;
  • calc()函数支持 "+", "-", "*", "/" 运算;
  • calc()函数使用标准的数学运算优先级规则;

支持版本:CSS3

创建一个横跨屏幕的div,div 两边有 50px 的间隙

  1. <style>
  2. *{
  3. margin: 0;
  4. padding: 0;
  5. }
  6. .box{
  7. border-top: 1px solid black;
  8. border-bottom: 1px solid black;
  9. background-color: yellow;
  10. padding: 5px 0;
  11. text-align: center;
  12. /* calc()函数:用于动态计算长度值 */
  13. width: calc(100% - 100px);
  14. /* 绝对定位 */
  15. position: absolute;
  16. left: 50px;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <p>创建一个横跨屏幕的div,div 两边有 50px 的间隙</p>
  22. <div class="box">一些文本...</div>

注意:

这里绝对定位的top值 设置 了 top:0, 这个盒子会把段落标签p盖住。

这里绝对定位的top不写。这个盒子只是 水平向右移动了50px。垂直方向没有,还是在段落标签的下面显示的。

1.4 修改input 的 placeholder 样式

  1. <style>
  2. body{
  3. --color-placeholder:red;
  4. --font-size-placeholder:12px;
  5. }
  6. input::-webkit-input-placeholder{
  7. color:var(--color-placeholder);
  8. font-size:var(--color-placeholder);
  9. }
  10. input::placeholder{
  11. color:var(--color-placeholder);
  12. font-size:var(--color-placeholder);
  13. }
  14. </style>
  15. </head>
  16. <link href="./img/favicon.ico" type="image/x-icon" rel="icon">
  17. <body>
  18. 用户名:<input type="text" name="" id="" placeholder="请输入用户名">

预览:

标签: css3 前端 css

本文转载自: https://blog.csdn.net/weixin_52629158/article/details/129955720
版权归原作者 仙鹤__ 所有, 如有侵权,请联系我们删除。

“CSS中的变量”的评论:

还没有评论