style: slogan区域移动端样式
This commit is contained in:
@@ -1,9 +1,5 @@
|
||||
<template>
|
||||
<div
|
||||
class="blocks-list flex"
|
||||
ref="root"
|
||||
:class="{ 'in-view': inView }"
|
||||
>
|
||||
<div class="blocks-list flex" ref="root" :class="{ 'in-view': inView }">
|
||||
<div
|
||||
class="block-item flex flex-col flex-center"
|
||||
v-for="(item, idx) in blocksList"
|
||||
@@ -47,7 +43,7 @@
|
||||
|
||||
onMounted(() => {
|
||||
io = new IntersectionObserver(
|
||||
entries => {
|
||||
(entries) => {
|
||||
for (const entry of entries) {
|
||||
if (entry.isIntersecting) {
|
||||
// 延迟 0.5s 后触发动画并断开观察
|
||||
@@ -153,4 +149,132 @@
|
||||
height: 27.4rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* 移动端 <= 1200px 四宫格布局 */
|
||||
@media (max-width: 1200px) {
|
||||
.blocks-list {
|
||||
height: auto;
|
||||
flex-wrap: wrap;
|
||||
padding: 2rem 1.5rem;
|
||||
column-gap: 0;
|
||||
row-gap: 0;
|
||||
|
||||
.block-item {
|
||||
flex: none;
|
||||
width: 50%;
|
||||
height: 18rem;
|
||||
padding: 2rem 1rem;
|
||||
box-sizing: border-box;
|
||||
|
||||
.number {
|
||||
font-size: 2.8rem;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.line {
|
||||
display: none;
|
||||
}
|
||||
&:nth-child(1)::after,
|
||||
&:nth-child(2)::after,
|
||||
&:nth-child(3)::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background-color: #8d8d8d;
|
||||
}
|
||||
/* 第一行的两个item底部需要分隔线 */
|
||||
&:nth-child(1)::after,
|
||||
&:nth-child(2)::after {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 0.1rem;
|
||||
}
|
||||
|
||||
/* 第一个item右侧需要分隔线 */
|
||||
&:nth-child(1)::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
width: 0.1rem;
|
||||
background-color: #8d8d8d;
|
||||
}
|
||||
|
||||
&:nth-child(4)::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 0.1rem;
|
||||
height: 100%;
|
||||
background-color: #8d8d8d;
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
.in-view {
|
||||
.block-item {
|
||||
&:nth-child(1)::before {
|
||||
transform-origin: bottom;
|
||||
transform: scaleY(0);
|
||||
animation: growUp 2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
||||
animation-delay: calc(var(--delay) + 0.5s);
|
||||
}
|
||||
&:nth-child(1)::after {
|
||||
transform-origin: right;
|
||||
transform: scaleX(0);
|
||||
animation: growRight 2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
||||
animation-delay: calc(var(--delay) + 0.5s);
|
||||
}
|
||||
&:nth-child(2)::after {
|
||||
transform-origin: left;
|
||||
transform: scaleX(0);
|
||||
animation: growLeft 2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
||||
animation-delay: calc(var(--delay) + 0.5s);
|
||||
}
|
||||
&:nth-child(4)::before {
|
||||
transform: translateX(-100%) scaleY(0);
|
||||
transform-origin: top;
|
||||
animation: growDown 2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
||||
animation-delay: calc(var(--delay) + 0.5s);
|
||||
}
|
||||
}
|
||||
}
|
||||
@keyframes growUp {
|
||||
0% {
|
||||
transform: scaleY(0);
|
||||
}
|
||||
100% {
|
||||
transform: scaleY(1);
|
||||
}
|
||||
}
|
||||
@keyframes growDown {
|
||||
0% {
|
||||
transform: translateX(-100%) scaleY(0);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(-100%) scaleY(1);
|
||||
}
|
||||
}
|
||||
@keyframes growLeft {
|
||||
0% {
|
||||
transform: scaleX(0);
|
||||
}
|
||||
100% {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
}
|
||||
@keyframes growRight {
|
||||
0% {
|
||||
transform: scaleX(0);
|
||||
}
|
||||
100% {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user