我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情
前言
卡片的陈列效果很常见,一个个摆平,铺到一个页面上,常见于某某管理中心,类似这样:
假如这时候产品经理来了一个紧急需求:
- 想要在当前页面中间位置再显示些其他内容
- 之前的card数量可能会增加到十几二十个不等
- 希望新产生的card一眼就能看见,其余的不要求
恰好这时候UI请假了🤣,那就只能自己上了。分析:
- 当前页面card的数量不是很多,不至于用真分页
- 像上图这样一直铺下去,又比较占空间
- 只要一次请求数据然后把card可以折叠起来,优先级高的显示在前边就可以了。
一、效果
直接看效果图:
二、实现
2.1 搭好骨架
html 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="popular-articles">
<div class="mini-card-grid">
<article class="mini-card ">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
<article class="mini-card">
<strong>
码上掘金挑战赛
</strong>
<br />
<h3 class="mini-card-title">
hello,掘友们好,本期的创意投稿大赛主题是码上掘金挑战赛!
</h3>
<div class="link">
<span>show出创意赢大奖!</span>
<br>
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">详情参见</a> </div>
<div class="author-row">
<a href="https://juejin.cn/post/7139728821862793223?utm_source=banner&utm_medium=createcenter&utm_campaign=codejj202209" rel="tag">
<img alt="" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3d31d5677e764ca99096c5b34a3ffddb~tplv-k3u1fbpfcp-zoom-mark-crop-v2:0:0:426:250.awebp" class="avatar avatar-80 photo jetpack-lazy-image jetpack-lazy-image--handled" height="80" width="80" srcset="https://secure.gravatar.com/avatar/2c12e74c8162614e08a31d704ed9e193?s=160&d=retro&r=pg 2x" data-lazy-loaded="1" loading="eager"></a>
<br />
<div data-v-230ce330="" class="date"><span data-v-230ce330="">
2022.09.05 ~
</span> <span data-v-230ce330="">
2022.09.25
</span>
</div>
</div>
</article>
</div>
<div>
</body>
</html>
css 代码
<style type="text/css">
.popular-articles {
display: flex;
padding: 1.5rem;
transform: translateY(-10px);
}
.mini-card-grid {
padding: 3rem 0 3rem 2rem;
margin: 0;
display: flex;
overflow-x: scroll;
}
.mini-card {
padding: 24px;
min-width: 300px;
min-height: 350px;
/*阴影和渐变*/
box-shadow: -2rem 0 3rem -2rem #000;
border-radius: 16px;
background: linear-gradient(85deg,#434343,#262626);
color: #fff;
display: flex;
flex-direction: column;
transition: .2s;
margin: 0;
}
.mini-card-title {
font-size: 1.3rem;
margin: 0 0 1rem;
}
.link span {
background: linear-gradient(130deg,#ff7a18,#af002d 41.07%,#319197 76.05%);
}
.link a {
font-family: MD Primer Bold;
font-style: normal;
font-weight: 700;
text-transform: uppercase;
color: #ff7a18;
}
</style>
骨架搭好之后,效果应该是这样的:
2.2 简单动画
2.2.1 简单叠起来
css加上如下代码
body .mini-card:not(:first-child) {
margin-left: -130px;
box-shadow: -3rem 0 3rem -2rem #000;
}
效果是这样的
2.2.2 可以拎起来
加个旋转,css加上如下代码
body .mini-card:focus-within, body .mini-card:hover {
transform: translateY(-1rem) rotate(3deg);
}
效果是这样的
2.2.3 后面卡片动起来
使用css兄弟选择器“~”,css加上如下代码
body .mini-card:hover~.mini-card {
transform: translateX(130px);
}
完成效果:
结语
这时候UI请假回来了,路过时候时候的瞅了一眼:“哎呦,不错哦~,给你点个赞👍🎉”。