CSS 变量是 CSS 引入的一个新特性,目前绝大多数浏览器已经支持了,它可以帮助我们用更少的代码写出同样多的样式,大大提高了工作效率,本篇文章将教你如何使用 CSS 变量(css variable)。

CSS中原生的变量定义语法是:--*,变量使用语法是:var(--*),其中*表示变量名称

变量声明

使用 :root 来声明 css 变量,root 相当于根元素 html,例如声明一个背景颜色为红色的 red 变量,示例如下

:root{
   --red: #f00;
}

如何应用这个变量呢?使用 var() 函数。

div{
   background-color: var(--red);
}

这样,我们就给一个 div 盒子添加了一个属性,即设置它的背景颜色为红色。当然也可以同时定义多个变量,方便使用,注意:变量名对大小写敏感,nav-color 和 Nav-color 是完全不同的变量。

:root{
   --margin-top: 20px;
   --nav-color: #ff0;
   --Nav-color: #fff;
   --transition-duration: .5s;
}

全局变量与局部变量

前面我们在 :root里声明的变量都属于全局变量,也就是可以在 html 包裹下的任一class,id 都可以使用它;除此之外也可以定义局部变量,例如我们在 class 为 left 的 div 下定义局部变量:

.left{
   --left-margin: 60px;
   --left-background-color: #333;
}

这个时候,--left-margin 和 --left-background-color 就只能在 .left 包含下的容器才能使用这两个属性,同样是使用margin:var(--left-margin);来书写。

JavaScript 操作变量

JavaScript 可以操纵 css 变量,例如在 index.js 文件中有如下代码:

var root = document.querySelector(':root');     //获取根元素
var rootStyle = getComputedStyle(root);       //获取元素的 css
var red = rootStyle.getPropertyValue('--left-margin');   //获取 css 的样式值   60px
root.style.setProperty('--left-margin','50px');          //更改样式

响应式布局

由于事先定义好了变量,只需引入就可以使用,这样的话当我们想要修改一个属性值,例如修改某个盒子的背景颜色,只需更改变量的值,就可以全局应用到所有元素中,利用这一特性可以做响应式布局。

:root{
   --bg-color: #fff;
   --height: 1080px;
}
body{
   background-color: var(--bg-color);
   height: var(--height);
}
@media all and (max-width:450px) {
   :root{
       --bg-color: #000;
       --height: auto;
   }
}

上面的代码表示正常宽度下的 body 背景颜色为白色,高度为 1080 像素,而当宽度为 450px 大小的时候,此时 body 的背景颜色就变为了黑色,高度也变成自适应,只需要更改变量的值就可以实现响应,是不是很方便呢?

实现响应式——CSS变量的更多相关文章

  1. SpaceBase – 基于 Sass 的响应式 CSS 框架

    SpaceBase 是一个基于 Sass 的响应式 CSS 框架.SpaceBase 是可以在建立和定制您的需要的一个样板层,它结合最佳实践为今天的响应式网页与我们对每一个项目中使用的核心组件. 在线 ...

  2. LayoutSimple简易响应式CSS布局框架

    开发这个css布局的目的是为了少做一些重复的工作,一是前端或多或少会开发一些很小的响应式项目, 二是UI设计的出来的界面总是各种布局各种样式,这个时候如果前端去使用Bootstrap或者Foundat ...

  3. kube框架结构-一个小型响应式CSS框架

    当你开始初建一个新的项目时,你可能需要一个不太复杂的基础框架,Kube框架应该是你最好的选择.一个独立的CSS文件,帮助你更简单的创建响应式的的布局设计. Kube Framework包括网格.按钮. ...

  4. elf,基于flexbox的响应式CSS框架

    官网地址:http://jrainlau.github.io/elf/项目地址:https://github.com/jrainlau/elf 介绍 取名为"精灵"的elf,是一个 ...

  5. Gumby – 基于 Sass 的灵活的,响应式 CSS 框架

    Gumby 框架是一个基于 SASS 的灵活的,响应式的 CSS 框架.可以借助其灵活,响应式的网格系统和 UI 套件快速创建逻辑的页面布局和应用程序原型. 您可能感兴趣的相关文章 35个让人惊讶的 ...

  6. 响应式css样式

    <div class="a"> 123 </div> @media(orientation:portrait) and (max-width:600px){ ...

  7. 响应式 css

    1.class 样式一般用class,命名:中横线分隔,如:div-logo id 一般用于js快速地区别和获取元素,命名:驼峰命名法,如:divLogo (中间首字母大写) 2.必不可少的图片,用& ...

  8. css 响应式(媒介查询)

    1.CSS 来实现响应式 CSS实现响应式网站的布局要用到的就是CSS中的媒体查询接下来来简单介绍一下: @media 类型 and (条件1) and (条件二){css样式} <link r ...

  9. 响应式开发(二)-----Bootstrap框架的介绍

    简介 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架,是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的, ...

随机推荐

  1. h5面试题

    一.匿名函数实现阶乘第一种写法: 43 > F = fun(Func, 1) -> 1;43 > (Func, N) -> N * Func(Func, N - 1) end. ...

  2. 【详记MySql问题大全集】三、安装之后没有my.ini配置文件怎么办

    系列目录 一.安装MySql 二.安装并破解Navicat 三.没有my.in配置文件怎么办 四.设置MySql的大小写敏感 五.重置MySql登陆密码 之前说过,Windows操作系统中,我们安装M ...

  3. Python 22端口发邮件

    #!/usr/bin/python#-*-coding:UTF-8-*- import smtplibimport timeimport os from email.mime.text import ...

  4. java中根据key获取resource下properties资源文件中对应的参数

    properties资源文件是放在resource目录下的: 新建工具类: package com.demo.utils; import java.io.InputStream; import jav ...

  5. 解决 Chrome 下载不了东西 失败 - 已屏蔽 的问题

    或许你怎么也想不到是IE的问题 由于IE的安全设定问题 但是这个锅 确实不应该是IE来背. 因为我IE下载都没出现这个问题. 解决方法是这样的: IE>Internet选项>安全>自 ...

  6. Nginx 搭建图片缓存服务器-转

    文章:https://waver.me/2019/04/11/Nginx-Cache-Server/ 参考: Nginx 配置详解Nginx 简易教程Nginx 配置总结

  7. NodeJS学习笔记 - Apache反向代理集成实现

    初学,简单的实现,为进行优化. 1. 假设NodeJS服务端监听3000端口 2. Apache反向代理设置 a. 在httpd.conf配置文件中开启代理模块 LoadModule proxy_mo ...

  8. RabbitMQ配置

    RabbitMQ Configuration RabbitMQ提供多种配置方式:配置文件.环境变量.运行时参数等等. 默认配置文件的位置在/etc/rabbitmq/ Config File Loca ...

  9. 没搞懂的package.json

    事情是这样的,今天上午,后端同学 clone 了我们的一个小程序项目,希望到自己的电脑上跑起来. 然而,令人尴尬的是,他在 npm install 之后,项目并没有如愿运行,并抛出一个大大的错误. 后 ...

  10. Ioc及Bean容器(三)

    专题一 IoC 接口及面向接口编程 什么是 IoC Spring 的Bean配置 Bean 的初始化 Spring 的常用注入方式 接口 用于沟通的中介物的抽象化 实体把自己提供给外界的一种抽象化说明 ...