• 【我不熟悉的css】05. csc中使用变量,:root伪元素的应用


    每日鸡汤:越努力,越幸运

    目录

    前言

    一、root伪类和css变量

    1. :root伪类

    2. css变量

    二、应用实例

    1. 变量的应用

    2. 设置主题色

    3. 响应式布局

    总结


    前言

    使用css的全局变量,可以减少写很多重复代码。比如设置一个全局主题色变量,整个项目用到这个颜色的地方,都用变量设置,就很方便了。


    一、root伪类和css变量

    1. :root伪类

    在刚入行的时候,我根本不知道有这么一个类,在css中发挥着很大的作用。(原谅我的愚蠢)

    :root这个css伪类匹配文档树的根元素,对html来说代表元素,除了优先级更高之外,和html选择器相同

    2. css变量

    也可以称之为自定义属性,总之是开发者自己定义的,比如在一个class中可以这样定义

    1. .box {
    2. --border-color: red; // 定义一个box作用域下的颜色
    3. }

    注意,这个属性是有作用域的,也就是在.box下面声明的变量,只能在box以及他的子元素下面才有效,我们使用的时候需要配合var函数。

    1. .box {
    2. --border-color: red; // 定义一个box作用域下的颜色
    3. border: 1px solid var(--border-color);
    4. .box-inner {
    5. border: 1px solid var(--border-color); // 这个地方是有效的
    6. }
    7. }
    8. .new-box {
    9. // 这样用是无效的,但是也不会报错。
    10. border: 1px solid var(--border-color);
    11. // 所以一给var函数传一个备用值,在变量无效的时候使用
    12. border: 1px solid var(--border-color, blue);
    13. }

     鉴于,属性有作用域的限制,所以多数情况下,我们在设置全局属性的时候,需要定义在:root伪元素下面,这样项目中的任何地方都可以使用到:

    1. // :root 和css变量的合理搭配
    2. :root {
    3. --border-color: red;
    4. --font-color: red;
    5. }

    二、应用实例

    1. 变量的应用

    关于css变量的应用,我在我的系列文章【跟着官网学习vue3】有提到过

    大家可以参考【2. 在scss中使用js变量】这一小节的内容

    【vue3】06. 跟着官网学习vue3_我有一棵树的博客-CSDN博客跟着官网学习vue3 ,class style的绑定,使用cs变量https://blog.csdn.net/qq_17335549/article/details/126669483

    2. 设置主题色

    我遇到的关于root伪元素的应用,一个很典型的例子就是主题色的设置,项目中可以能需要增加两套主题色【白天、黑夜】两种主题,那么我们肯定是不能对每个样式都重复写两遍,效率低下。

    所以解决办法是,写一套代码,但是在涉及到颜色的地方统一使用css变量,而这一系列的css变量需要写在:root中,使其成为全局变量,请看下面的例子:

    1. // theme.scss
    2. // 别忘了在全局引入(在vue项目中就是在main.js引入)这个theme.scss文件
    3. :root {
    4. --theme-color: #fff;
    5. --theme-border-color: #000;
    6. --theme-font-color: #000;
    7. // 这样我们在切换成黑夜模式的时候,只需要给body元素增加一个名为dark的class
    8. // 为什么设置body元素,因为:root代表html,在内一层,并且可以覆盖全局的dom就是body
    9. .dark {
    10. --theme-color: #000;
    11. --theme-border-color: #fff;
    12. --theme-font-color: #fff;
    13. }
    14. }
    15. // 应用
    16. .login-page {
    17. background: var(--theme-color);
    18. border: 1px solid var(--theme-border-color);
    19. }

    3. 响应式布局

    同样root+css变量,可以应用在响应式布局中

    1. <template>
    2. <div class="login-page">
    3. hello word
    4. div>
    5. template>
    6. <style lang="scss">
    7. // 这个style标签不能加scoped否则:root不会生效,不会应用于全局
    8. :root {
    9. --theme-color: red;
    10. }
    11. @media screen and (max-width: 500px) {
    12. :root {
    13. --theme-color: blue;
    14. }
    15. }
    16. .login-page {
    17. color: var(--theme-color);
    18. }
    19. style>

    总结

    善用css变量可以提高效率,让我们继续努力,掌握更多新鲜的知识。

  • 相关阅读:
    MYSQL 中连接的使用
    python之模块动态加载
    Pytorch框架学习记录4——数据集的使用(torchvision.dataset)
    老卫带你学---leetcode刷题(139. 单词拆分)
    全新线控制动系统产品发布,清智科技正式完成业务拓展
    [SLAM] 旋转的表示
    mysql基础知识(四) 聚合函数
    调研:huggingface-diffusers
    传奇列表获取失败与登录器太老怎么解决
    纯CSS实现点击动画
  • 原文地址:https://blog.csdn.net/qq_17335549/article/details/126683840