今日的CSS小案例

news/2024/11/7 14:36:35/

个人名片:
 😊作者简介:一名大一在校生,web前端开发专业
 🤡 个人主页:几何小超
 🐼
座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。
 🎅**学习目标: 坚持每一次的学习打卡,学好前端

今天需要做的是原神的手风琴,看其他挺好玩,我就做了一个,现在还是把展示图放出来吧哈哈,因为本人也是个二次元LSP

 点击之后实现悬浮效果,看起来挺好看的,然后让咱们一起来设置

架构

这个布局相对于简单一点,有一个大盒子shell

里面放了一个版心card

然后把图片放盒子里面

下面的文字放另外一张盒子里面

 <div class="shell">
            <div class="card">
                <div class="box">
                    <img src="./img/1.png" />
                </div>
                <div class="character">
                    <img src="./img/1.png" />
                </div>
                <h4>凝光</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/3.png" />
                </div>
                <div class="character">
                    <img src="./img/3.png" />
                </div>
                <h4>多莉</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/4.png" />
                </div>
                <div class="character">
                    <img src="./img/4.png" />
                </div>
                <h4>刻晴</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/5.png" />
                </div>
                <div class="character">
                    <img src="./img/5.png" />
                </div>
                <h4>七七</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/6.png" />
                </div>
                <div class="character">
                    <img src="./img/6.png" />
                </div>
                <h4>纳西妲</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/8.png" />
                </div>
                <div class="character">
                    <img src="./img/8.png" />
                </div>
                <h4>雷电将军</h4>
            </div>
            <div class="card">
                <div class="box">
                    <img src="./img/7.png" />
                </div>
                <div class="character">
                    <img src="./img/7.png" />
                </div>
                <h4>可莉</h4>
            </div>
            
            <div class="card">
                <div class="box">
                    <img src="./img/10.png" />
                </div>
                <div class="character">
                    <img src="./img/10.png" />
                </div>
                <h4>芭芭拉</h4>
            </div>
        </div>

简单介绍一下架构之后,接下展示css代码,里面大量运用到了子集选择器,伪类选择器

介绍一下子集选择器><是指选择这个内容里面单独的内容

还是老规矩清除默认边距然后在加上css3盒子模型

给body设置弹性布局,然后缩放盒子大小,加上背景颜色,基本的样式就完成

然后其他的我相信大家都应该清除差不多了,不懂的再去查查资料这里就重点讲几个标签

今天的练习中遇到的两个新标签

 object-fit 属性用于指定应如何调整 <img> 或 <video> 的大小以适合其容器。

这个属性告诉内容以不同的方式填充容器。比如“保留长宽比”或者“展开并占用尽可能多的空间

cube-bezier() 函数定义三次贝塞尔曲线(Cubic Bezier curve)。

三次贝塞尔曲线由 P0、P1、P2 和 P3 四个点进行定义。P0 和 P3 是曲线的起点和终点,在 CSS 中,这两个点是固定的,因为坐标是成比例。P0 为 (0, 0),代表初始时间和初始状态,P3 为 (1, 1),代表最终时间和最终状态。

伪类的话不用我多说了吧,详细情况还是查看W3C

这里是css代码

* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            min-height: 100vh;
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
            background-image: linear-gradient(120deg,#e0c3fc 0%,#8ec5fc 100%);
             background-size: cover;
        }
        .shell{
            width: 1700px;
            margin: 0 auto;
            margin-top: 5rem;
            height: 750px;
            display: flex;
        }
        .card{
            flex-basis: 13%;
            position: relative;
            overflow: hidden;
        }
        .card:not(:nth(1)){
            margin-left: 20px;
        }
        .card:hover{
            overflow: initial;
        }
        .box{
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            transition:  all .1s cubic-bezier(0.165,0.84,0.44,1);
            overflow: hidden;
            border-radius: 10px;
            background-image: linear-gradient(100deg,#a18cd1,#fcaa55c,#141414ce);
            
            
        }
        .box>img{
            object-fit: contain;
            width: 100%;
            height: 100%;
            transform: translate(-50%,10% ) scale(3);
            position: relative;
            z-index: -1;
        }
        .card:hover>.box img{
            opacity: 0;
        }
        .card:hover>.box{
            transform: scaleY(1.5);
            background-image: initial;
            background-color: #7d419f;
            z-index: 2;
            cursor: pointer;
        }
        .card>h4{
            position: absolute;
            display: block;
            width: 120px;
            text-align: center;
            color: rgba(255,255,255,0.2);
            bottom: 0;
            left: 50%;
            transform: translate(-50%, -35%);
            font-size: 28px;
            z-index: 100;
            transition: .2s;
        }
        .card:hover h4{
            color: #fff;
            transform: translate(-50%,250%);
        }
        .card:hover .character>img{
            opacity: 1;
        }
            
        .card>.character{
            position: absolute;
            top: -100px;
            left: -400px;
            width: 100%;
            height: 100%;
            z-index: 3;
            pointer-events: none;
        }
        .character>img{
            width: 820px;
            height: 820px;
            object-fit: contain;
            opacity: 0;
            transition: all .3s;
            position: relative;
            z-index: -10;
        }

这里提供源码,大家可以尝试一边理解一边来写哦,嘻嘻

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title><style type="text/css">* {margin: 0;padding: 0;box-sizing: border-box;}body {min-height: 100vh;overflow: hidden;display: flex;justify-content: center;align-items: center;background-image: linear-gradient(120deg,#e0c3fc 0%,#8ec5fc 100%);background-size: cover;}.shell{width: 1700px;margin: 0 auto;margin-top: 5rem;height: 750px;display: flex;}.card{flex-basis: 13%;position: relative;overflow: hidden;}.card:not(:nth(1)){margin-left: 20px;}.card:hover{overflow: initial;}.box{position: absolute;top: 0;left: 0;width: 100%;height: 100%;transition:  all .1s cubic-bezier(0.165,0.84,0.44,1);overflow: hidden;border-radius: 10px;background-image: linear-gradient(100deg,#a18cd1,#fcaa55c,#141414ce);}.box>img{object-fit: contain;width: 100%;height: 100%;transform: translate(-50%,10% ) scale(3);position: relative;z-index: -1;}.card:hover>.box img{opacity: 0;}.card:hover>.box{transform: scaleY(1.5);background-image: initial;background-color: #7d419f;z-index: 2;cursor: pointer;}.card>h4{position: absolute;display: block;width: 120px;text-align: center;color: rgba(255,255,255,0.2);bottom: 0;left: 50%;transform: translate(-50%, -35%);font-size: 28px;z-index: 100;transition: .2s;}.card:hover h4{color: #fff;transform: translate(-50%,250%);}.card:hover .character>img{opacity: 1;}.card>.character{position: absolute;top: -100px;left: -400px;width: 100%;height: 100%;z-index: 3;pointer-events: none;}.character>img{width: 820px;height: 820px;object-fit: contain;opacity: 0;transition: all .3s;position: relative;z-index: -10;}</style></head><body><div class="shell"><div class="card"><div class="box"><img src="./img/1.png" /></div><div class="character"><img src="./img/1.png" /></div><h4>凝光</h4></div><div class="card"><div class="box"><img src="./img/3.png" /></div><div class="character"><img src="./img/3.png" /></div><h4>多莉</h4></div><div class="card"><div class="box"><img src="./img/4.png" /></div><div class="character"><img src="./img/4.png" /></div><h4>刻晴</h4></div><div class="card"><div class="box"><img src="./img/5.png" /></div><div class="character"><img src="./img/5.png" /></div><h4>七七</h4></div><div class="card"><div class="box"><img src="./img/6.png" /></div><div class="character"><img src="./img/6.png" /></div><h4>纳西妲</h4></div><div class="card"><div class="box"><img src="./img/8.png" /></div><div class="character"><img src="./img/8.png" /></div><h4>雷电将军</h4></div><div class="card"><div class="box"><img src="./img/7.png" /></div><div class="character"><img src="./img/7.png" /></div><h4>可莉</h4></div><div class="card"><div class="box"><img src="./img/10.png" /></div><div class="character"><img src="./img/10.png" /></div><h4>芭芭拉</h4></div></div></body></body>
</html>


http://www.ppmy.cn/news/74438.html

相关文章

iptables防火墙1

iptables防火墙 iptables概述 Linux 系统的防火墙 &#xff1a;IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络层&#xff0c;针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。 netfilter/iptables 关系&#xf…

webmsxyw x-s分析

近期又更新了&#xff0c;先是改了x-s生成&#xff0c;然后又加上了a1校验。 后面可能会全参校验&#xff0c;比如再加上gid、deviceId、profileData、x-s-common、smidV2之类。 估计以后不能写了&#xff0c;大家且看且珍惜吧。之前相关的文章都被下架了 危&#xff01; 文…

(二十六)ATP应用测试平台——将一个微服务打包成含skywalking链路追踪的docker镜像

前言 延续前面的章节内容&#xff0c;本节内容我们以ht-atp的springboot应用为例&#xff0c;封装一个包含skywalking链路追踪的微服务docker应用。完成服务调用的链路追踪监控。skywalking采用字节码注入的方式实现代码的无侵入&#xff0c;探针采集数据粒度粗&#xff0c;但…

人大金仓KingBase-跨库连表查询(可参考修改)

使用dblink首先要去调用和被调用两个服务的库里执行dblink的创建语句 create extension if not exists dblink; 目前只测试了dblink的方式,business服务和user服务之间有跨库的连表操作,但是一般直接指定库名.模式.表明去连表,肯定会报错 com.kingbase8.util.KSQLException: 错…

MySQL查询性能优化

MySQL数据库配置参数建议如下&#xff1a; 建议设置default-storage-engineInnoDB,一般不建议使用MyISAM引擎调整InnoDB_buffer_pool_size的大小&#xff0c;如果是单实例且绝大多数是InnoDB引擎表的话&#xff0c;可考虑设置为物理内存的50%~70%设置InnoDB_file_per_table1&a…

量子OFFICE开源工程

量子OFFICE&#xff1a;Quantum Office 量子OFFICE由柳鲲鹏创立。 之所以创立量子OFFICE&#xff1a; 一方面是因为我对于OFFICE软件的各个方面(WORD布局绘制&#xff0c;EXCEL计算&#xff0c;POWERPOINT动画等等&#xff09;&#xff0c;均是世界第一&#xff0c;希望这一…

【STM32G431RBTx】备战蓝桥杯嵌入式→决赛试题→第十届

文章目录 前言一、题目二、模块初始化三、代码实现interrupt.h:interrupt.c:main.h:main.c: 四、完成效果五、总结 前言 无 一、题目 二、模块初始化 1.LCD这里不用配置&#xff0c;直接使用提供的资源包就行 2.双ADC:开启双ADCsingle-ended 3.LED:开启PC8-15,PD2输出模式就…

Bat批处理中的 FINDSTR用法

linux中的grep等同于win中的findstr命令。可以在txt文本中截取到有特定关键字的行&#xff0c;并显示出来。 grep也可以通过关键字&#xff0c;在一个文件夹下查找多个有这些关键字的文件&#xff0c;并生成结果。 一、findstr命令介绍 findstr是Windows系统自带的命令,简单来说…