美文网首页
css变量详解

css变量详解

作者: 高速迷彩蛙 | 来源:发表于2021-02-25 17:28 被阅读0次

    css变量

    css变量可以优雅的利用js控制css动画。改变传统通过js设置css样式的模式。使代码更加整洁。

    vue单文件组件,示例一:
    <template>
      <ul class="loading c-flex-x-start">
        <li v-for="v in 6" :key="v" :style="`--line-index: ${v}`"></li>
      </ul>
    </template>
    
    <style lang="scss">
    .loading {
      // width: 200px;
      // height: 200px;
      padding: 0;
      
      .c-flex-x-start{
          display: flex;
          justify-content: flex-start;
          align-items: center;
        }
    
      li {
        --time: calc((var(--line-index) - 1) * 200ms);
        border-radius: 3px;
        width: 6px;
        height: 30px;
        background-color: #f66;
        animation: beat 1.5s ease-in-out var(--time) infinite;
        list-style-type: none;
        & + li {
          margin-left: 5px;
        }
      }
    }
    @keyframes beat {
      0%,
      100% {
        transform: scaleY(1);
      }
      50% {
        transform: scaleY(0.5);
      }
    }
    </style>
    
    <script>
    export default {
      name: "loading",
    };
    </script>
    
    效果:
    vue单文件组件,示例二:
    <template>
      <div class="car-part" :style="cssVar">
        <h4>二、css变量和"calc"计算属性结合,使js控制css样式更优雅。</h4>
        <div class="car">我是丰田卡罗拉</div>
      </div>
    </template>
    
    <style lang="scss">
    .car-part {
        height: 100px;
        .car {
          font-size: calc(var(--size) * 1px);
        }
      }
    }
    </style>
    
    <script>
    export default {
      name: "car",
      data() {
        return {
          cssVar: {
            "--size": 12,
          },
          mark: 0,
          type: "add", // add 或 sub
        };
      },
      mounted() {
        this.change();
      },
      methods: {
        change() {
          requestAnimationFrame(() => {
            let size = this.cssVar["--size"];
            // size++
    
            this.mark++;
    
            if (this.mark >= 20) {
              this.mark = 0;
              this.type = this.type === "add" ? (this.type = "sub") : "add";
            }
    
            if (this.type === "add") {
              this.cssVar["--size"]++;
            } else {
              this.cssVar["--size"]--;
            }
    
            this.change();
          });
        },
      },
    };
    </script>
    
    效果:

    注:css变量最好和calc计算属性结合使用,因为calc方法可以带单位;使js控制css更优雅,只需要控制定义的css变量即可。

    相关文章

      网友评论

          本文标题:css变量详解

          本文链接:https://www.haomeiwen.com/subject/souufltx.html