CSS实现Skeleton Screen骨架屏效果,是当前前端开发过程中一个非常实用的技巧。骨架屏通过设置占位符元素,使页面在加载数据的过程中也能够展示一定的样式和布局,为用户提供更好的交互体验。以下是具体的实现步骤:
在实现骨架屏之前,首先需要设计好页面的占位元素。在制作骨架屏的过程中,通常主要关注页面中的内容结构和布局样式。占位元素一般使用单色背景或者渐变色等,为用户提供较好的视觉感受。
下面是三个常见的骨架屏设计示例:
通常用于占位表单、图文列表等区域,使用纯色或渐变色填充方块,颜色值可自定义。
.square {
width: 100%;
height: 8px;
background-image: linear-gradient(90deg, #ffffff 0%, #f1f1f1 50%, #ffffff 100%);
}
通常用于文章段落、标题等区域,使用纯色或渐变色的文本块,颜色值可自定义。
.text {
width: 200px;
height: 20px;
background-image: linear-gradient(90deg, #ffffff 0%, #f1f1f1 50%, #ffffff 100%);
}
通常用于图文卡片、商品列表等区域,使用纯色或渐变色填充的卡片,颜色值可自定义。
.card {
width: 100%;
height: 170px;
background-image: linear-gradient(135deg, #ececec 10px, #ffffff 0%);
background-color: #ffffff;
background-repeat: repeat-y;
background-size: auto auto;
}
制作好占位元素后,接下来需要通过CSS动画将这些占位元素组合起来,制成一个完整的骨架屏效果。通过CSS3提供的transform、transition等属性来设置不同的“动画状态”,实现骨架屏效果的渐进加载。
CSS动画制作骨架屏过程中最常用的方式,一般有以下两种:
通过CSS伪元素制作出需要填充的占位符,并通过transition进行过渡,实现渐进加载动画效果。代码如下:
.placeholder:before {
position: absolute;
top: 0;
left: 0;
content: "";
width: 100%;
height: 100%;
background-image: linear-gradient(90deg, #ffffff 0%, #f1f1f1 50%, #ffffff 100%);
transform: translateX(-200%);
transition: transform 0.6s ease-out;
}
.placeholder.loading:before {
transform: translateX(100%);
transition: transform 0.6s ease-in;
}
通过CSS变量设置占位符的背景色或文本颜色,并通过transition进行过渡,实现渐进加载动画效果。代码如下:
.placeholder {
color: var(--placeholder-color, #f1f1f1);
transition: color 0.3s ease-in-out;
}
.placeholder.loading {
color: var(--placeholder-color, #f1f1f1);
transition: color 0.3s ease-in-out 0.2s;
}
通过设置loading class实现渐进加载的效果,可以在应用于需要异步加载数据的页面中,为用户提供更好的交互体验。
以上为CSS实现Skeleton Screen骨架屏效果的完整攻略,通过以上步骤和示例,您可以轻易制作出具有渐进加载效果的骨架屏。