前端练习小项目——方向感应名片

        前言:在学习完HTML和CSS之后,我们就可以开始做一些小项目了,本篇文章所讲的小项目为——方向感应名片


✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

在开始学习之前,先让我们看一下最终效果:

        那么我们如何去实现这样的小案例呢?在下文中我们对每一段重要的代码都进行了解释,读者可以根据注释对代码进行理解。

1.HTML代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>fish</title> <!-- 设置页面标题为fish -->
    <link rel="stylesheet" href="./test.css"> <!-- 引入外部CSS样式表 -->
</head>

<body>
    <div class="shell"> <!-- 外层容器 -->
        <div class="box"> <!-- 盒子容器 -->
            <div class="images"> <!-- 图片容器 -->
                <img src="./item1.jpg"> <!-- 显示item1.jpg图片 -->
            </div>
            <div class="content"> <!-- 内容容器 -->
                <h2>ZeenChin</h2> <!-- 标题为ZeenChin -->
                <p>The style in the painting integrates temptation, fantasy and strangeness
                </p> <!-- 段落内容描述绘画风格 -->
            </div>
        </div>
        <!-- 后续box结构与前面类似,每个box包含图片和内容 -->
        <div class="box">
            <div class="images">
                <img src="./item2.jpg">
            </div>
            <div class="content">
                <h2>ZeenChin</h2>
                <p>The style in the painting integrates temptation, fantasy and strangeness
                </p>
            </div>
        </div>
        <div class="box">
            <div class="images">
                <img src="./item3.jpg">
            </div>
            <div class="content">
                <h2>ZeenChin</h2>
                <p>The style in the painting integrates temptation, fantasy and strangeness
                </p>
            </div>
        </div>
        <div class="box">
            <div class="images">
                <img src="./item4.jpg">
            </div>
            <div class="content">
                <h2>ZeenChin</h2>
                <p>The style in the painting integrates temptation, fantasy and strangeness
                </p>
            </div>
        </div>
        <div class="box">
            <div class="images">
                <img src="./item5.jpg">
            </div>
            <div class="content">
                <h2>ZeenChin</h2>
                <p>The style in the painting integrates temptation, fantasy and strangeness
                </p>
            </div>
        </div>
    </div>

</body>

</html>

        看完上述的代码之后,我相信读者已经有了大致的内容理解了,现在在让我们简单的回顾一下上述的代码:

   其中<head>部分包含网页标题“fish”和引入外部CSS样式表test.css。主体部分由一个外层容器<div class="shell">包裹,其中包含多个盒子<div class="box">,每个盒子内部有图片容器<div class="images">和内容容器<div class="content">,展示了不同的图片(如item1.jpgitem5.jpg

        ——这里读者可以先对HTML中的代码进行简单的编写,这里直接展示HTML代码的结果了:

这样我们就大致的将网页的骨架搭建完成了,接下来在让我们编写CSS代码来进行对其的美化。

2.CSS代码

* {
    margin: 0;
    padding: 0;
}

body {
    /* 将内容区域居中显示 */
    display: flex;
    /* 使用 Flex 布局 */
    justify-content: center;
    /* 水平居中 */
    align-items: center;
    /* 垂直居中 */
    min-height: 100vh;
    /* 最小高度占据整个视口 */
    /* 设置背景渐变色 */
    background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%);
}

.shell {
    /* 设置相对定位,启用3D变换 */
    position: relative;
    min-width: 1000px;
    /* 最小宽度为1000像素 */
    display: flex;
    /* 使用 Flex 布局 */
    justify-content: center;
    /* 水平居中 */
    flex-wrap: wrap;
    /* 换行排列子元素 */
    transform-style: preserve-3d;
    /* 保持3D变换 */
    perspective: 900px;
    /* 设置透视效果 */
}

.shell .box {
    /* 设置相对定位和固定宽高 */
    position: relative;
    width: 250px;
    /* 宽度250像素 */
    height: 350px;
    /* 高度350像素 */
    transition: 0.6s;
    /* 过渡效果时长 */
    overflow: hidden;
    /* 隐藏溢出部分 */
    margin: 30px;
    /* 外边距为30像素 */
    transform: rotateY(0deg);
    /* 默认Y轴旋转角度为0度 */
    transition-delay: .1s;
    /* 过渡延迟0.1秒 */
    border-radius: 5px;
    /* 设置圆角为5像素 */
    border: #fff 5px solid;
    /* 边框为白色5像素实线 */
}

/* 鼠标悬停在 .shell 上时 */
.shell:hover .box {
    transform: rotateY(20deg);
    /* 所有 .box 元素绕Y轴旋转20度 */
}

/* 鼠标悬停在 .box 上时 */
.shell .box:hover {
    transform: rotateY(0deg) scale(1.25);
    /* 当前 .box 元素恢复到0度旋转并放大到1.25倍 */
    box-shadow: 0 25px 40px rgba(0, 0, 0, 0.7);
    /* 添加阴影效果 */
    z-index: 1;
    /* 设置堆叠顺序为1,使其位于最顶层 */
}

/* 鼠标悬停在 .box 上时,其他 .box 元素的效果 */
.shell .box:hover~.box {
    transform: rotateY(-20deg);
    /* 其他 .box 元素绕Y轴反向旋转20度 */
}

.shell .box .images img {
    width: 100%;
    /* 图片宽度100% */
}

.shell .box .content {
    position: absolute;
    /* 绝对定位 */
    top: 0;
    /* 顶部与父元素对齐 */
    width: 90%;
    /* 宽度90% */
    height: 100%;
    /* 高度100% */
    z-index: 999;
    /* 设置堆叠顺序为999,使内容层位于最顶层 */
    padding: 15px;
    /* 内边距为15像素 */
}

.shell .box .content h2 {
    color: rgb(210, 140, 140);
    /* 设置标题颜色 */
    transition: 0.6s;
    /* 过渡效果时长 */
    font-size: 20px;
    /* 字体大小20像素 */
    transform: translateY(-100px);
    /* 初始位置向上偏移100像素 */
}

/* 鼠标悬停在 .box 上时的标题效果 */
.shell .box:hover .content h2 {
    transform: translateY(-15px);
    /* 标题向上偏移15像素 */
}

.shell .box .content p {
    color: rgb(0, 0, 0);
    /* 设置段落文本颜色 */
    transition: 0.6s;
    /* 过渡效果时长 */
    font-size: 14px;
    /* 字体大小14像素 */
    transform: translateY(600px);
    /* 初始位置向下偏移600像素 */
    background-color: rgba(255, 255, 255, 0.7);
    /* 设置背景颜色及透明度 */
}

/* 鼠标悬停在 .box 上时的段落效果 */
.shell .box:hover .content p {
    transform: translateY(220px);
    /* 段落向下偏移220像素 */
}

        注:上边的代码中我们将每一行代码的讲解都附在了代码的上边,希望读者可以跟随着代码中的注释来理解每行代码的用意。

这里我们在简单的进行解释一下:

  1. * { margin: 0; padding: 0; }: 将所有元素的内外边距重置为0,以确保整体布局的一致性。

  2. body: 设置了页面主体的样式,利用Flex布局将内容区域水平和垂直居中,并设置了背景渐变色作为背景图像。

  3. .shell: 这是一个容器,采用Flex布局,用于包裹一组具有动态效果的盒子(.box)。设置了透视效果(perspective)和3D变换(transform-style: preserve-3d),使得内容具有立体感。

  4. .shell .box: 每个.box代表一个盒子,固定了宽度和高度,带有圆角和边框。通过旋转(transform: rotateY())和过渡效果(transition),实现了鼠标悬停时的动画效果。

  5. .shell:hover .box.shell .box:hover: 当鼠标悬停在.shell.box上时,通过旋转和缩放动画(transform属性)以及阴影效果(box-shadow),增强了用户交互体验。

  6. .shell .box .content: 盒子内部的内容区域,利用绝对定位(position: absolute)来定位在盒子的顶部,设置了透明的背景颜色和过渡效果。

  7. .shell .box:hover .content h2.shell .box:hover .content p: 当鼠标悬停在.box上时,标题和段落文本通过transform属性实现了位置的变化,从而产生动态效果。

        ——最终我们将代码运行尽可以得到最终结果啦!(如图)


以上就是本篇文章的全部内容了~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/796758.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络——LeNet——FashionMNIST

目录 一、文件结构二、model.py三、model_train.py四、model_test.py 一、文件结构 二、model.py import torch from torch import nn from torchsummary import summaryclass LeNet(nn.Module):def __init__(self):super(LeNet,self).__init__()self.c1 nn.Conv2d(in_channe…

基于SSM的校园一卡通管理系统的设计与实现

摘 要 本报告全方位、深层次地阐述了校园一卡通管理系统从构思到落地的整个设计与实现历程。此系统凭借前沿的 SSM&#xff08;Spring、Spring MVC、MyBatis&#xff09;框架精心打造而成&#xff0c;旨在为学校构建一个兼具高效性、便利性与智能化的一卡通管理服务平台。 该系…

liunx硬盘分区挂载笔记

NAME: 设备名称。 MAJ : 主设备号和次设备号。 RM: 只读标志&#xff08;0 表示可读写&#xff0c;1 表示只读&#xff09;。 SIZE: 设备的总大小。 RO: 只读状态&#xff08;0 表示可读写&#xff0c;1 表示只读&#xff09;。 TYPE: 设备类型&#xff08;disk 表示物理磁盘设…

C 语言结构体

由于近期项目需求,需使用到大量的指针与结构体&#xff0c;为更好的完成项目&#xff0c;故对结构体与指针的内容进行回顾&#xff0c;同时撰写本博客&#xff0c;方便后续查阅。 本博客涉及的结构体知识有&#xff1a; 1.0&#xff1a;结构体的创建和使用 2.0: typedef 关…

怎样在 C 语言中进行类型转换?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

记一次 .NET某上位视觉程序 离奇崩溃分析

一&#xff1a;背景 1. 讲故事 前段时间有位朋友找到我&#xff0c;说他们有一个崩溃的dump让我帮忙看下怎么回事&#xff0c;确实有太多的人在网上找各种故障分析最后联系到了我&#xff0c;还好我一直都是免费分析&#xff0c;不收取任何费用&#xff0c;造福社区。 话不多…

快速读出linux 内核中全局变量

查问题时发现全局变量能读出来会提高效率&#xff0c;于是考虑从怎么读出内核态的全局变量&#xff0c;脚本如下 f open("/proc/kcore", rb) f.seek(4) # skip magic assert f.read(1) b\x02 # 64 位def read_number(bytes):return int.from_bytes(bytes, little,…

每日一练:奇怪的TTL字段(python实现图片操作实战)

打开图片&#xff0c;只有四种数字&#xff1a;127&#xff0c;191&#xff0c;63&#xff0c;255 最大数字为255&#xff0c;想到进制转换 将其均转换为二进制&#xff1a; 发现只有前2位不一样 想着把每个数的前俩位提取出来&#xff0c;组成新的二进制&#xff0c;然后每…

c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决

有需求需要对。多边形 获取中心点方法&#xff0c;绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…

AI绘画Midijourney操作技巧及变现渠道喂饭式教程!

前言 盘点Midijourney&#xff08;AIGF&#xff09;热门赚米方法&#xff0c;总有一种适合你之AI绘画操作技巧及变现渠道剖析 【表情包制作】 首先我们对表情包制作进行详细的讲解&#xff1a; 当使用 Midjourney&#xff08;AIGF&#xff09; 绘画来制作表情包时&#xff…

ensp防火墙综合实验作业+实验报告

实验目的要求及拓扑图&#xff1a; 我的拓扑&#xff1a; 更改防火墙和交换机&#xff1a; [USG6000V1-GigabitEthernet0/0/0]ip address 192.168.110.5 24 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit [Huawei]vlan batch 10 20 [Huawei]int g0/0/2 [Huawei-…

218.贪心算法:分发糖果(力扣)

核心思想 初始化每个学生的糖果数为1&#xff1a; 确保每个学生至少有一颗糖果。从左到右遍历&#xff1a; 如果当前学生的评分高于前一个学生&#xff0c;则当前学生的糖果数应比前一个学生多一颗。从右到左遍历&#xff1a; 如果当前学生的评分高于后一个学生&#xff0c;则…

排序【选择排序和快速排序】

1.选择排序 1.1基本思想 每次选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在数组的起始位置&#xff0c;直到所有元素都排完。 1.2直接插入排序&#xff1a; 在数组arr[i]到arr[n-1]中选出最大&#xff08;小&#xff09;的元素。若该元素不是数组的…

前端的页面代码

根据老师教的前端页面的知识&#xff0c;加上我也是借鉴了老师上课所说的代码&#xff0c;马马虎虎的写出了页面。如下代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</ti…

小型 FPGA 瞄准 4K 视频接口,MiSTer FPGA 现已支持 Sinden 光枪-FPGA新闻速览

无需矩阵乘法&#xff0c;在 FPGA 上实现低功耗、高性能的 LLM UC Santa Cruz, Soochow University, UC Davis 和 LuxiTech 发表了一篇题为“可扩展的无 MatMul 语言建模”的新技术论文。 “矩阵乘法 (MatMul) 通常占据大型语言模型 (LLM) 总体计算量的主导地位。随着 LLM 扩展…

PLC物联网关在工业自动化领域的应用的意义-天拓四方

随着信息技术的飞速发展&#xff0c;物联网技术正逐步渗透到各个行业领域&#xff0c;其中&#xff0c;工业自动化领域的PLC与物联网的结合&#xff0c;为工业自动化的发展开辟了新的道路。PLC物联网关作为连接PLC与物联网的重要桥梁&#xff0c;其重要性日益凸显。 PLC物联网…

单例模式Singleton

设计模式 23种设计模式 Singleton 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法。 饿汉式 public class BankTest {public static void main(…

四个“一体化”——构建数智融合时代下的一站式大数据平台

随着智能化技术的飞速发展&#xff0c;尤其是以生成式AI为代表的技术快速应用&#xff0c;推动了数据与智能的深化融合&#xff0c;给数据基础设施带来了新的变革和挑战。如何简化日益复杂的系统架构&#xff0c;提高数据处理效率&#xff0c;降低开发运维成本&#xff0c;促进…

Selenium使用注意事项:

find_element 和 find_elements 的区别 WebDriver和WebElement的区别 问题&#xff1a; 会遇到报错&#xff1a; selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector",&…

STM32智能空气质量监测系统教程

目录 引言环境准备智能空气质量监测系统基础代码实现&#xff1a;实现智能空气质量监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;空气质量监测与优化问题解决方案与优化收尾与总结 1. 引言 智能空…