HTML&CSS:必学!用骨架屏卡片布局,让信息页“高级感爆棚”

这段代码实现了一个简洁的卡片式布局,适用于展示电影信息或其他内容。通过骨架屏效果模拟加载状态,增强了页面的交互性和用户体验。


大家复制代码时,可能会因格式转换出现错乱,导致样式失效。建议先少量复制代码进行测试,若未能解决问题,私信回复源码两字,我会发送完整的压缩包给你。

演示效果

HTML&CSS

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>公众号关注:前端Hardy</title>
    <style>
        *,
        *:after,
        *:before {
            box-sizing: border-box;
        }

        body {
            font-family: "Inter", sans-serif;
            background-color: #f2f5f7;
        }

        .card {
            display: flex;
            flex-direction: column;
            flex-basis: 300px;
            flex-shrink: 0;
            flex-grow: 0;
            max-width: 100%;
            background-color: #FFF;
            box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.15);
            border-radius: 10px;
            overflow: hidden;
            margin: 1rem;
        }

        .card-img {
            padding-bottom: 56.25%;
            position: relative;

            img {
                position: absolute;
                width: 100%;
            }
        }

        .card-body {
            padding: 1.5rem;
        }

        .card-title {
            font-size: 1.25rem;
            line-height: 1.33;
            font-weight: 700;

            &.skeleton {
                min-height: 28px;
                border-radius: 4px;
            }
        }

        .card-intro {
            margin-top: .75rem;
            line-height: 1.5;

            &.skeleton {
                min-height: 72px;
                border-radius: 4px;
            }
        }

        .skeleton {
            background-color: #e2e5e7;
            background-image:
                linear-gradient(90deg,
                    rgba(255, 255, 255, 0),
                    rgba(255, 255, 255, 0.5),
                    rgba(255, 255, 255, 0));
            background-size: 40px 100%;
            background-repeat: no-repeat;
            background-position: left -40px top 0;
            animation: shine 1s ease infinite;
        }

        @keyframes shine {
            to {

                background-position: right -40px top 0;
            }
        }


        .container {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-wrap: wrap;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="card">
            <div class="card-img skeleton">
            </div>
            <div class="card-body">
                <h2 class="card-title skeleton">
                </h2>
                <p class="card-intro skeleton">
                </p>
            </div>
        </div>
        <div class="card">
            <div class="card-img">
                <img src="https://assets.codepen.io/285131/uslmOwQpdRRUwr6AmBP6JdzeHjS.jpg" />
            </div>
            <div class="card-body">
                <h2 class="card-title">
                    Drive (2011)
                </h2>
                <p class="card-intro">
                    Driver is a skilled Hollywood stuntman who moonlights as a getaway driv...
                </p>
            </div>
        </div>
    </div>

</body>

</html>

HTML 结构

  • container:定义一个容器,用于包裹所有卡片内容,实现居中布局。
  • card:定义一个卡片容器,包含图片区域和内容区域。
  • card-img:定义卡片的图片区域,用于显示图片或骨架屏效果。
  • card-body:定义卡片的内容区域,包含标题和简介。
  • card-title:定义卡片的标题,显示电影名称或其他内容。
  • card-intro:定义卡片的简介,显示电影简介或其他描述性内容。
  • img:定义图片元素,用于加载外部图片资源。

CSS 样式

  • *, *:after, *:before:设置全局样式,确保所有元素的box-sizing为border-box。
  • body:设置页面的整体布局,包括字体、背景颜色和默认样式。
  • .card:定义卡片的样式,包括布局方式、宽度、背景颜色、阴影、圆角和外边距。
  • .card-img:定义图片区域的样式,通过padding-bottom实现响应式图片占位,并设置相对定位。
  • .card-img img:定义图片的样式,确保图片宽度为100%,并绝对定位。
  • .card-body:定义内容区域的样式,设置内边距。
  • .card-title:定义标题的样式,包括字体大小、行高和加粗。
  • .card-title.skeleton:定义骨架屏效果的标题样式,设置最小高度和圆角。
  • .card-intro:定义简介的样式,包括行高和上边距。
  • .card-intro.skeleton:定义骨架屏效果的简介样式,设置最小高度和圆角。
  • .skeleton:定义骨架屏的样式,包括背景颜色、渐变背景、动画效果和圆角。
  • @keyframes shine:定义骨架屏的闪烁动画,通过改变背景位置实现动态效果。
  • .container:定义容器的样式,使用绝对定位和flex布局实现水平和垂直居中。

各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!

相关推荐
文阿花13 分钟前
Echarts实现自定旋转3D饼状图
javascript·3d·echarts·饼状图
meilindehuzi_a1 小时前
深入理解 JavaScript 的同步与异步机制:从单线程设计到 Promise 核心应用
开发语言·javascript·ecmascript
如烟花的信页1 小时前
加速乐cookie逆向分析
javascript·爬虫·python·js逆向
永远的WEB小白1 小时前
css改变svg图标的颜色
前端·javascript·css
ikoala1 小时前
Codex 不得不装的 12 个插件,都在这了
前端·javascript·后端
赵庆明老师2 小时前
JS检查提交的文件是否合规
开发语言·前端·javascript
颂love2 小时前
Vue的两大生态以及组件通信
前端·javascript·vue.js·typescript
光影少年2 小时前
js单线程,为什在node环境下的js可以处理高并发请求?
前端·javascript·掘金·金石计划
moMo3 小时前
# JavaScript 的“等等我”:聊聊同步与异步
javascript
Xzh04233 小时前
Web 前端开发 — 期末复习指南(Html、Css、Js)
css·html5·web·js·期末