虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
虚位以待,此位置招租
NexaHub聚合登录 阿里云服务器 99元/年 大流量卡 - 免开卡,免运费 172 - 大流量卡 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租
九歌社区 门户 查看主题

HTML&CSS:速看!手把手教你实现超酷的动态滑动卡片(建议收藏)

33 0 2025-3-26 17:18 发布者: 青木 帖子模式

这段HTML和CSS代码实现了一个具有动态滑动效果的卡片式图片展示页面,包含三个不同的图片和对应的内容描述。

640.gif

HTML&CSS

<!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>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        html,
        body {
            height: 100vh;
            font-family: 'Open Sans', sans-serif;
            background-color: #666666;
        }

        body {
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .card {
            position: absolute;
            height: 350px;
            width: 100%;
            max-width: 850px;
            margin: auto;
            background-color: #ffffff;
            border-radius: 25px;
            box-shadow: 10px 0 50px rgba(0, 0, 0, 0.5);
        }

        .card .inner_part {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 0 0 0 30px;
            height: 350px;
            position: absolute;
        }

        #slideImg:checked~.inner_part {
            padding: 0;
            transition: .1s ease-in;
        }

        .inner_part .img {
            height: 260px;
            width: 260px;
            overflow: hidden;
            flex-shrink: 0;
            border-radius: 20px;
            box-shadow: 0 10px 50px rgba(0, 0, 0, 0.2);
        }

        #slideImg:checked~.inner_part .img {
            height: 350px;
            width: 850px;
            z-index: 99;
            transition: .3s .2s ease-in;
        }

        .img img {
            height: 100%;
            width: 100%;
            cursor: pointer;
            opacity: 0;
            transition: .6s;
        }

        #slide_1:checked~.inner_part .img_1,
        #slide_2:checked~.inner_part .img_2,
        #slide_3:checked~.inner_part .img_3 {
            opacity: 1;
            transition-delay: .2s;
        }

        .content {
            padding: 0 20px 0 35px;
            width: 530px;
            margin-left: 50px;
            opacity: 0;
            transition: .6s;
        }

        #slideImg:checked~.inner_part .content {
            display: none;
        }

        #slide_1:checked~.inner_part .content_1,
        #slide_2:checked~.inner_part .content_2,
        #slide_3:checked~.inner_part .content_3 {
            opacity: 1;
            margin-left: 0;
            z-index: 100;
            transition-delay: .3s;
        }

        .content .title {
            font-size: 30px;
            font-weight: 700;
            color: #0d0925;
            margin: 0 0 20px 0;
        }

        .content .text {
            font-size: 19px;
            color: #4e4a67;
            margin: 0 auto 30px auto;
            line-height: 1.5em;
            text-align: justify;
        }

        .content button {
            padding: 15px 20px;
            border: none;
            font-size: 16px;
            color: #fff0e6;
            font-weight: 600;
            letter-spacing: 1px;
            border-radius: 50px;
            cursor: pointer;
            outline: none;
            background: #000000;
            float: right;
        }

        .content button:hover {
            background: #cecece;
            color: #000000;
        }

        .slider {
            position: absolute;
            bottom: 25px;
            left: 55%;
            transform: translateX(-50%);
            z-index: 1;
        }

        #slideImg:checked~.slider {
            display: none;
        }

        .slider .slide {
            position: relative;
            height: 10px;
            width: 50px;
            background: #d9d9d9;
            border-radius: 5px;
            display: inline-flex;
            margin: 0 3px;
            cursor: pointer;
        }


        .slider .slide:before {
            position: absolute;
            content: '';
            top: 0;
            left: 0;
            height: 100%;
            width: -100%;
            background: #000000;
            ;
            border-radius: 10px;
            transform: scaleX(0);
            transition: transform .6s;
            transform-origin: left;
        }

        #slide_1:checked~.slider .slide_1:before,
        #slide_2:checked~.slider .slide_2:before,
        #slide_3:checked~.slider .slide_3:before {
            transform: scaleX(1);
            width: 100%;
        }

        input {
            display: none;
        }
    </style>
</head>

<body>
    <div class="card">
        <input type="radio" name="select" id="slide_1" checked>
        <input type="radio" name="select" id="slide_2">
        <input type="radio" name="select" id="slide_3">
        <input type="checkbox" id="slideImg">

        <div class="slider">
            <label for="slide_1" class="slide slide_1"></label>
            <label for="slide_2" class="slide slide_2"></label>
            <label for="slide_3" class="slide slide_3"></label>
        </div>

        <div class="inner_part">
            <label for="slideImg" class="img">
                <img class="img_1"
                    src="https://jxjy-att.whxunw.com/guotu_att/upload/images/2024082611/E885672B00074ABFBBDF667079BF2A85.jpg">
            </label>
            <div class="content content_1">
                <div class="title">湖光山色映夕阳</div>
                <div class="text">
                    夕阳西下,金色余晖洒在宁静的湖面上,倒映着远处的山峰,岸边的岩石与绿树相映成趣,构成一幅和谐美丽的自然画卷。
                </div>
                <button>Read More</button>
            </div>
        </div>

        <div class="inner_part">
            <label for="slideImg" class="img">
                <img class="img_2"
                    src="https://i2.hdslb.com/bfs/archive/7e5f144ce2730cee4a059865b3c7d2d27e2e35ce.jpg">
            </label>
            <div class="content content_2">
                <div class="title">绿野田园风光秀</div>
                <div class="text">
                    阳光明媚的乡村景色,绿意盎然的田野与蜿蜒的小路交错,点缀其间的小屋与远处的山峦构成一幅宁静和谐的田园画卷。
                </div>
                <button>Read More</button>
            </div>
        </div>

        <div class="inner_part">
            <label for="slideImg" class="img">
                <img class="img_3"
                    src="https://cos3.solepic.com/20231012/b_652261202310120839081636.jpg">
            </label>
            <div class="content content_3">
                <div class="title">晨晖雪岭映林间</div>
                <div class="text">清晨的光线洒在雪山之巅,山体被染上一抹粉红。山脚下,色彩斑斓的森林与远处的雪峰相映成趣,展现出大自然的壮丽与和谐。
                </div>
                <button>Read More</button>
            </div>
        </div>
    </div>
</body>

</html>

HTML 结构



  • radio:定义图片切换的控制按钮,通过name属性实现单选效果。
  • checkbox:定义图片放大切换的控制按钮。
  • slider:定义滑动按钮的容器,包含三个滑动按钮。
  • label:定义滑动按钮,通过for属性绑定对应的input>。
  • inner_part:定义每个图片和内容的容器。
  • img:定义图片,通过src属性加载图片资源。
  • content:定义内容区域,包含标题和描述文本。
  • button:定义按钮,用于引导用户查看更多内容。


CSS 样式



  • .card:定义卡片的样式,包括绝对定位、高度、宽度、最大宽度、背景颜色、圆角和阴影。
  • .inner_part:定义卡片内部内容的样式,包括弹性布局、对齐方式、内边距和高度。
  • #slideImg:checked~.inner_part:定义当图片放大切换按钮被选中时,内部内容的样式,包括内边距和过渡效果。
  • .img:定义图片容器的样式,包括高度、宽度、溢出隐藏、弹性收缩、圆角和阴影。
  • #slideImg:checked~.inner_part .img:定义当图片放大切换按钮被选中时,图片容器的样式,包括高度、宽度、层级和过渡效果。
  • .img img:定义图片的样式,包括高度、宽度、鼠标指针和透明度。
  • #slide_1:checked~.inner_part .img_1, #slide_2:checked~.inner_part .img_2, #slide_3:checked~.inner_part .img_3:定义当对应的图片切换按钮被选中时,图片的样式,包括透明度和过渡延迟。
  • .content:定义内容区域的样式,包括内边距、宽度、左边距、透明度和过渡效果。
  • #slideImg:checked~.inner_part .content:定义当图片放大切换按钮被选中时,内容区域的样式,包括隐藏显示。
  • #slide_1:checked~.inner_part .content_1, #slide_2:checked~.inner_part .content_2, #slide_3:checked~.inner_part .content_3:定义当对应的图片切换按钮被选中时,内容区域的样式,包括透明度、左边距、层级和过渡延迟。
  • .content .title:定义内容区域标题的样式,包括字体大小、加粗、颜色和外边距。
  • .content .text:定义内容区域文本的样式,包括字体大小、颜色、外边距、行高和对齐方式。
  • .content button:定义内容区域按钮的样式,包括内边距、边框、字体大小、颜色、字体加粗、字母间距、圆角、鼠标指针、轮廓和背景颜色。
  • .content button:hover:定义当鼠标悬停在按钮上时的样式,包括背景颜色和文字颜色的变化。
  • .slider:定义滑动按钮容器的样式,包括绝对定位、底部、左侧、变换、层级。
  • #slideImg:checked~.slider:定义当图片放大切换按钮被选中时,滑动按钮容器的样式,包括隐藏显示。
  • .slider .slide:定义滑动按钮的样式,包括相对定位、高度、宽度、背景颜色、圆角、内联弹性布局、外边距和鼠标指针。
  • .slider .slide:before:定义滑动按钮伪元素的样式,包括绝对定位、内容、顶部、左侧、高度、宽度、背景颜色、圆角、变换和过渡效果。
  • #slide_1:checked~.slider .slide_1:before, #slide_2:checked~.slider .slide_2:before, #slide_3:checked~.slider .slide_3:before:定义当对应的滑动按钮被选中时,伪元素的样式,包括变换和宽度。
  • input:定义隐藏的输入元素的样式,包括隐藏显示。

最新评论0

投诉/建议联系

jiubbs2025@163.com

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • QQ交流群
  • 微信公众号
Copyright © 2001-2025 九歌社区 版权所有 All Rights Reserved.

手机版|小黑屋|帮助|九歌社区   |   GMT+8, 2025-4-1 04:35 , Processed in 0.140730 second(s), 29 queries .

关灯 在本版发帖
扫一扫添加微信客服
手机扫一扫访问
返回顶部
快速回复 返回顶部 返回列表