目录
一、scss中的插值语法
插值语法
#{}
是一种动态注入变量或表达式到选择器、属性名、属性值等位置的机制.类名:nth-child(n) 表示需同时满足为父元素的第n个元素且类名为给定条件
效果图:
<div class="parent">
<div class="child2"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
//nth是针对父元素下所有子元素进行选择
$height: 400px; // 视口高度
.parent {
width: 400px;
height: #{$height}; // 背景容器高度为视口高度
.child {
width: 50px;
height: 50px;
background-color: pink;
margin: 10px;
}
.child2 {
width: 30px;
height: 30px;
}
//表示类名为.child2且为parent的第一个元素
.child2:nth-child(1) {
background-color: #6dd5ed; // 白色背景,透明度0.05
}
@for $i from 2 through 4 {
//父元素所有子元素的1-4
:nth-child(#{$i}) {
background-color: red; // 白色背景,透明度0.05
}
}
}
二、方块在界面上滚动的动画
示例图:
方块滚动
<div class="main">
<div class="bg-container">
<ng-container *ngFor="let item of countList">
<div class="square"></div>
</ng-container>
</div>
</div>
// 基础配置
$bg-color: #ffd6e7; // 粉色背景
$square-count: 40; // 方块数量
$min-size: 2vmin; // 最小尺寸
$max-size: 10vmin; // 最大尺寸
$animation-duration: 20s; // 基础动画时长
//背景方块
.main {
width: 100%;
height: 100%;
// 容器样式
.bg-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
}
// 方块基础样式
.square {
position: absolute;
background: rgba(255, 255, 255, 0.3);
border-radius: 10%;
animation: float linear infinite;
background: linear-gradient(to bottom, #ee9ca7, #ffdde1);
opacity: 0;
// 生成随机方块 random随机生成0-给定数值的随机数,左闭右开
@for $i from 1 through $square-count {
&:nth-child(#{$i}) {
$size: random($max-size - $min-size) + $min-size;
$delay: random(30) * 0.1s;
$duration: 15 + random(20) * 0.1s;
$startX: random(50) * 1vw;
$endX: $startX + (random(40) - 20) * 1vw;
$rotation: random(360) * 1deg;
width: #{$size};
height: #{$size};
animation-delay: $delay;
animation-duration: $duration;
left: $startX;
@keyframes float {
0% {
transform: translateY(110vh) rotate(0deg);
opacity: 0;
}
10% {
opacity: 0.7;
}
50% {
opacity: 1;
}
90% {
opacity: 0.7;
}
100% {
transform: translateY(-10vh) translateX($endX) rotate($rotation);
opacity: 0;
}
}
}
}
}