当前位置: 首页 > news >正文

【SCSS】网格布局中的动画

效果

在这里插入图片描述

index.html

<!DOCTYPE html>
<html><head><title> Document </title><link type="text/css" rel="styleSheet" href="index.css" /></head><body><div class="container"><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div></div></body>
</html>

index.scss

vs code 中使用Live Sass Compiler自动编译scss文件。

body {background: #23262d;
}
.container {width: 400px;height: 400px;margin: 0 auto;margin-top: 50px;//以网格显示display: grid;//自定义css变量--c1: 1fr;--c2: 1fr;--c3: 1fr;--r1: 1fr;--r2: 1fr;--r3: 1fr;//设置列数和宽度grid-template-columns: var(--c1) var(--c2) var(--c3);//设置行数和高度grid-template-rows: var(--r1) var(--r2) var(--r3);//平滑过渡网格单元尺寸变化transition: 0.5s;// 每个格子间距grid-gap: 10px;
}@for $i from 0 to 9 {//变量每个ITEM.item:nth-child(#{$i + 1}) {//使用色相环对每个格子设置不同的颜色background: hsl($i * 40%, 100%, 64%);}//判断container元素内部item是否触发hover事件.container:has(.item:nth-child(#{$i + 1}):hover) {//计算行号$r: floor($i/3) + 1;//计算列号$c: $i%3 + 1;//对相应css 行变量设置宽度--r#{$r}: 2fr;//对相应css 列变量设置高度--c#{$c}: 2fr;}
}
  • transition: 0.5s;平滑过渡单元格的尺寸变化,解决鼠标移动画面切换的卡顿问题

  • grid-gap: 10px;设置格子的间距

  • grid-template-columns: var(--c1) var(--c2) var(--c3);使用自定义变量设置格子的列数和宽度

  • grid-template-rows: var(--r1) var(--r2) var(--r3);使用自定义变量设置格子的行数和高度

  • --c1: 1fr;第一列的宽度

  • --c2: 1fr;第二列的宽度

  • --c3: 1fr;第三列的宽度

  • --r1: 1fr;第一行的宽度

  • --r2: 1fr;第二行的宽度

  • --r3: 1fr;第三行的宽度

  • $r: floor($i/3) + 1; sass变量行号

  • $c: $i%3 + 1; sass变量列号

  • background: hsl($i * 40%, 100%, 64%);使用sass变量$i与色相环hsl对每个格子设置不同的背景颜色

index.css

此文件由index.scss文件自动编译生成

body {background: #23262d;
}.container {width: 400px;height: 400px;margin: 0 auto;margin-top: 50px;display: grid;--c1: 1fr;--c2: 1fr;--c3: 1fr;--r1: 1fr;--r2: 1fr;--r3: 1fr;grid-template-columns: var(--c1) var(--c2) var(--c3);grid-template-rows: var(--r1) var(--r2) var(--r3);transition: 0.5s;grid-gap: 10px;
}.item:nth-child(1) {background: hsl(0, 100%, 64%);
}.container:has(.item:nth-child(1):hover) {--r1: 2fr;--c1: 2fr;
}.item:nth-child(2) {background: hsl(40, 100%, 64%);
}.container:has(.item:nth-child(2):hover) {--r1: 2fr;--c2: 2fr;
}.item:nth-child(3) {background: hsl(80, 100%, 64%);
}.container:has(.item:nth-child(3):hover) {--r1: 2fr;--c3: 2fr;
}.item:nth-child(4) {background: hsl(120, 100%, 64%);
}.container:has(.item:nth-child(4):hover) {--r2: 2fr;--c1: 2fr;
}.item:nth-child(5) {background: hsl(160, 100%, 64%);
}.container:has(.item:nth-child(5):hover) {--r2: 2fr;--c2: 2fr;
}.item:nth-child(6) {background: hsl(200, 100%, 64%);
}.container:has(.item:nth-child(6):hover) {--r2: 2fr;--c3: 2fr;
}.item:nth-child(7) {background: hsl(240, 100%, 64%);
}.container:has(.item:nth-child(7):hover) {--r3: 2fr;--c1: 2fr;
}.item:nth-child(8) {background: hsl(280, 100%, 64%);
}.container:has(.item:nth-child(8):hover) {--r3: 2fr;--c2: 2fr;
}.item:nth-child(9) {background: hsl(320, 100%, 64%);
}.container:has(.item:nth-child(9):hover) {--r3: 2fr;--c3: 2fr;
}/*# sourceMappingURL=index.css.map */
http://www.lryc.cn/news/104235.html

相关文章:

  • Docker基础命令(一)
  • django4.2 day1Django快速入门
  • linux的exec和system函数介绍及选择
  • 150行代码写一个Qt井字棋游戏
  • k8s概念-controller
  • Gis入门,根据起止点和一个控制点计算二阶贝塞尔曲线(共三个控制点组成的线段转曲线)
  • 第1集丨Vue 江湖 —— Hello Vue
  • PCB制版技术
  • 大数据课程E7——Flume的Interceptor
  • P2P网络NAT穿透原理(打洞方案)
  • Gof23设计模式之桥接外观模式
  • 微服务性能分析工具 Pyroscope 初体验
  • 工作记录------单元测试(持续更新)
  • C#再windowForm窗体中绘画扇形并给其填充颜色
  • MBA拓展有感-见好就收,还是挑战到底?MBA拓展有感-见好就收,还是挑战到底?
  • 综合布线系统光缆分类及其特点?
  • 前端构建(打包)工具发展史
  • 【数据可视化】(一)数据可视化概述
  • GoogleLeNet Inception V2 V3
  • 【css】背景图片附着
  • 解决运行flutter doctor --android-licenses时报错
  • 在使用Python爬虫时遇到503 Service Unavailable错误解决办法汇总
  • 小研究 - 主动式微服务细粒度弹性缩放算法研究(一)
  • 【LeetCode】215.数组中的第K个最大元素
  • MySQL学习记录:第七章 存储过程和函数
  • Docker中gitlab以及gitlab-runner的安装与使用
  • 一起学SF框架系列5.12-spring-beans-数据绑定dataBinding
  • 火热报名中 | 赛宁独家技术支持第七届“蓝帽杯”网络安全技能大赛
  • 无涯教程-jQuery - Ajax Tutorial函数
  • Android日志