Day11-网页布局实战-CSS3动画

news2025/1/26 15:47:43

文章目录

  • 一 CSS3动画
    • 1 2D动画
      • 案例1-鼠标输入移入DIV 让图片旋转90度
      • 案例2-鼠标输入移入DIV 缩放图片
      • 案例3-贯穿项目-DIV移动
    • 2 animation动画
      • 播放器
      • 案例1-基础案例
      • 案例2-使用百分比关键帧定义动画
      • 案例3-旋转的图片
      • 案例4-贯穿案例-轮播图
    • 3 多余文本省略号...代替
      • 案例1-多余文本...代替
    • 4 雪碧图技术(了解)

一 CSS3动画

1 2D动画

  • css3提供了transiform属性来对图形在2D上进行一系列的 旋转、缩放、位移等

  • 一般搭配hover以及transition来使用

rotate 旋转 
scale  缩放 
translate 位移 
skew	倾斜
选择器 {transiform: rotate(10deg) scale(2) translate(100px,0) }
	旋转10度	体积放大2倍	往右移动100像素

案例1-鼠标输入移入DIV 让图片旋转90度

image-20221215154645860

<!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>Document</title>
    <style>
        .box1{
            width: 100px;
            height: 100px;
            border: 1px red solid;
            display: flex;
            justify-content: center;
            align-items: center;
        }


        .box1 img{
            transition: all 1s;
        }

        .box1:hover img{
            /* 
                transform:2D动画要配合 过度 和悬浮一起使用
                    rotate 旋转
            */
            transform: rotate(90deg);
        }
    </style>
</head>
<body>
    <div class="box1">
        <img src="./img/icon-1.png" alt="">
    </div>
</body>
</html>

案例2-鼠标输入移入DIV 缩放图片

image-20221215161252037

<!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>Document</title>
    <style>
        div{
            width: 260px;
            height: 350px;
            border: 1px solid red;
            /* 内容溢出隐藏 */
            overflow: hidden;
            position: relative;
        }
        div img{
            width: 100%;
            /* 消除图片的基线 */
            vertical-align: top;
            /* 过度 */
            transition: all 1s;
        }
        /* 当鼠标移动到div时,放大图片 */
        div:hover img{
            transform: scale(1.2);
        }
        /* 使用伪元素做一个浏览按钮 */
        div::after{
            content: "快速浏览";
            width: 100px;
            height: 50px;
            background-color: white;
            text-align: center;
            line-height: 50px;
            /* 居中 */
            position: absolute;
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            margin: auto;
            /* 透明不显示 */
            opacity: 0;
            /* 过度 */
            transition: all 2s;
        }
        /* 当鼠标移动到div时显示伪元素 */
        div:hover::after{
            opacity: 0.6;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div>
        <img src="./images/i1.jpg" alt="">
    </div>
</body>
</html>

案例3-贯穿项目-DIV移动

image-20221215164522425

<!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>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        img{
            vertical-align: top;
        }


        .box{
            width: 268px;
            height: 268px;
            position: fixed;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            margin: auto;
            /* 溢出隐藏 */
            overflow: hidden;
        }

        /* 添加伪元素 */
        .box::before{
            content: "";
            display: block;
            width: 268px;
            height: 268px;
            background-color: paleturquoise;
            position: absolute;
            opacity: 0.3;
            top: -268px;
            left: -268px;

            /* 过度效果 */
            transition: all 1s;
        }

        /* 添加伪元素 */
        .box::after{
            content: "";
            display: block;
            width: 268px;
            height: 268px;
            background-color: paleturquoise;
            position: absolute;
            opacity: 0.3;
            top: 268px;
            left: 268px;
            /* 过度效果 */
            transition: all 1s;
        }

        /* 给伪元素添加动画 */
        .box:hover::before{
            transform: translate(268px,268px);
        }

        /* 给伪元素添加动画 */
        .box:hover::after{
            transform: translate(-268px,-268px);
        }
        
    </style>
</head>
<body>
    <div class="box">
        <img src="./img/s7.jpg" alt="">
    </div>
</body>
</html>

2 animation动画

动画的实现步骤:

  1. 关键帧(动作)

    • css3提供了(@keyframes来定义关键帧)

      • 例子:蹲下(两个关键帧)——开始蹲下——》结束蹲下
  2. animation播放器属性通过控制关键帧来播放动画

播放器

播放器属性
animation-name
设置动画名要和关键帧对应
animation-duration
设置动画时长,单位秒
animation-timing-function
设置动画的执行速率
ease
默认值,前后减速,中间加速
linear
匀速
animation-iteration-count
设置动画的执行次数
infinite
无限次
animation-fill-mode
设置动画结束后保持的状态
forwards
保持结束后的状态
animation-play-state
播放过程中的状态,一般搭配hover使用
paused
暂停

案例1-基础案例

image-20221216143741143

案例2-使用百分比关键帧定义动画

<!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>Document</title>
    <style>

        /* 1定义关键帧 */
        @keyframes move{
            0%{
                transform: translate(0,0);
            }
            25%{
                transform: translate(200px,0);
            }
            50%{
                transform: translate(200px,200px); 
            }
            75%{
                transform: translate(0,200px)
            }  

        }
        .box1{
            width: 100px;
            height: 100px;
            background-color: red;
            /* 2使用animation播放器播放动画 */
            animation-name: move;
            /* 设置动画的播放时长 */
            animation-duration: 2s;
            /* 设置动画的播放速率 */
            animation-timing-function: linear;
            /* 设置动画的执行次数 */
            animation-iteration-count: infinite;

        }
    </style>


</head>
<body>
    <div class="box1"></div>
</body>
</html>

案例3-旋转的图片

image-20230303121604885

<!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>Document</title>
    <style>
        /* 定义关键帧 */
        @keyframes go {
            form{
                transform: rotate(0deg);
            }
            to{
                transform: rotate(360deg);
            }
        }


        img{
            width: 300px;
            border-radius: 200px;
            border: 4px solid #cccccc;
            /* 动画名称 */
            animation-name: go;
            /* 动画时长 */
            animation-duration: 3s;
            /* 动画速率-匀速 */
            animation-timing-function:linear;
            /* 动画一直执行 */
            animation-iteration-count:infinite;
        }
        /* 鼠标移入图片,暂停动画 */
        img:hover{
            animation-play-state:paused;
        }
    </style>
</head>
<body>
    <img src="./images/lh.png" alt="">
</body>
</html>

案例4-贯穿案例-轮播图

image-20221216170152526

<!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>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }

        img{
            vertical-align: top;
        }

        /* 定义关键帧 */
        @keyframes banner {
            0%{
                transform: translate(0,0);
            }
            30%{
                transform: translate(0,0);
            }
            50%{
                transform: translate(-33.3%,0);
            }
            80%{
                transform: translate(-33.3%,0);
            }
            100%{
                transform: translate(-66.6%,0);
            }
        }

        .box{
            width: 100%;
            border: 1px red solid;
            overflow: hidden;
        }

        .box .banner{
            width: 300%;
            display: flex;
            /* animation动画 */
            animation-name: banner;
            /* 动画时间 */
            animation-duration: 6s;
            /* 设置动画的执行次数为无限次 */
            animation-iteration-count: infinite;
        }
        .box .banner img{
            width: 100%;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="banner">
            <img src="./img/banner1.jpg" alt="">
            <img src="./img/banner2.jpg" alt="">
            <img src="./img/banner1.jpg" alt="">
        </div>
    </div>
</body>
</html>

3 多余文本省略号…代替

在页面中经常会遇到文字太多,放不下需要用省略号来实现。

案例1-多余文本…代替

<!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>Document</title>
    <style>
        .box1{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            /* 添加省略号 */
            /* 规定我们文本是否换行显示 wrap换行 nowrap设置不换行 */
            white-space:nowrap;
            /* 溢出隐藏 */
            overflow: hidden;
            /* 多余的文字用省份略代替 */
            text-overflow: ellipsis;
        }
    </style>
</head>
<body>
    <div class="box1">
        落霞与孤鹜齐飞,秋水共长天一色
    </div>
</body>
</html>

4 雪碧图技术(了解)

CSS sprites 雪碧图技术(精灵图技术)

将多张小图片有序的组合在一起,形成一张图片。减少网络请求次数,只需要加载一次就能加很多的小图片

https://static.ws.126.net/163/f2e/www/index20170701/images/sprite_img20211126.png

image-20221128094534308

<!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>Document</title>
    <style>
        .box1{
            width: 50px;
            height: 50px;
            background-image: url("./img/20221128094534.png");
            /* 修改背景图片的位置 */
            background-position: -50px -50px;
        }

        .box2{
            width: 50px;
            height: 50px;
            background-image: url("./img/20221128094534.png");
            /* 修改背景图片的位置 */
            background-position: -110px -50px;
        }

        .box1:hover{
            /* 修改背景图片的位置 */
            background-position: -54px -154px;
        }
    </style>


</head>
<body>
    <div class="box1"></div>

    <div class="box2"></div>

</body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一 Go环境搭建

1. 下载地址 https://golang.google.cn/dl/ 傻瓜式安装&#xff0c;自动会配置path的变量&#xff0c;安装完成后可以使用go version 查看当前安装的版本 本文使用目前最新的1.20.2版本 2. 配置go环境 cmd控制栏打开输入以下命令&#xff08;如果cmd有问题可以尝试powershe…

340秒语音芯片,轻松实现语音交互,畅享智能生活WTV380语音ic方案

随着智能家居、安防报警、宠物用品 等&#xff0c;智能设备的普及&#xff0c;语音交互技术正在逐渐成为人机交互的主要方式之一。而如何实现稳定高效的语音交互&#xff0c;就需要借助先进的语音芯片技术。今天&#xff0c;我们介绍的是一款高性能的语音芯片——WTV380&#x…

Gamma矫正

Gamma 曲线Gamma校正被使用在8位RGB图中。用来解决在有限的存储空间中保存尽可能多的人类感受敏感的色彩内容。Gamma 矫正Gamma校正的方式就是采样时,和输出到显示器给人类看时,对亮度进行的调整.如采样时 Gamma1/2.2 调亮Gamma&#xff0c;如显示时 Gamma2.2 调暗Gamma实际亮度…

【Redis】Redis慢查询

文章目录慢查询记录慢查询两个配置参数修改配置参数慢查询日志慢查询记录 我们都知道像mysql等持久化数据库会有慢查询日志&#xff0c;其实Redis中也有慢查询日志的功能。慢查询就是系统在执行命令的前后计算每条命令的执行时间&#xff0c;如果超过我们预设的时间&#xff0c…

登录接口-简约版(工作日记4)

前提条件&#xff1a; 1、jmeter接口测试工具 2、接口信息 获取验证码信息 登录接口信息 题外话&#xff1a; 接口返回的数据中如果有文字就会乱码 怎么解决 1、进入jmter文件–进入bin文件夹&#xff0c;找到jmeter.properties文件 2、右键打开&#xff0c;可以用文本模…

基于遗传算法的CVRP建模求解(Python)

带容量约束的车辆路径优化问题&#xff0c;CVRP&#xff0c;对一系列装卸货点进行适当的路径规划&#xff0c;在满足约束条件&#xff08;客户需求、车辆载重和容积、车型、车辆行驶里程、配送中心数量等限制&#xff09;和目标最优化&#xff08;路程最短、成本最低、使用车辆…

点灯大师--点个正点原子阿尔法开发板的灯

点灯大师–点个正点原子阿尔法开发板的灯 文章目录点灯大师--点个正点原子阿尔法开发板的灯正点原子阿尔法开发板点灯1、使能 GPIO1 时钟2、设置 GPIO1_IO03 的复用功能3、配置 GPIO1_IO034、设置 GPIO5、控制 GPIO 的输出电平五种点灯的方法1.在一个驱动文件中实现寄存器初始化…

【C语言】编译+链接

一、程序的翻译环境和执行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0c;它用于实际执行代码。详解编译链接翻译环境1.组成一个程序的每个源文件通过…

STM32电动车报警器

目录 项目需求 项目框图 硬件清单 振动传感器介绍及实战 振动传感器介绍 振动传感器编程实现 继电器介绍及实战 继电器工作原理 433M无线发射接收模块介绍及实战 433M无线发射接收模块介绍 ​编辑 433M编程实现 项目设计及实现 编程实现 项目需求 点击遥控器A 按键…

规约第二章

文章目录有限域的定义Definition of Finite Field单位元运算举例素数域群阿贝尔群阿贝尔循环群循环子群阿贝尔循环群且阶是素数的有限域的定义Definition of Finite Field 单位元 这里一般只需要记住2个0&#xff0c;1 。0是加法的单位元&#xff0c;1是乘法的单位元。以及逆…

【JavaScript UI库和框架】上海道宁与Webix为您提供用于跨平台Web应用程序开发的JS框架及UI小部件

Webix是Javascript库 一种软件产品 用于加速Web开发的 JavaScript UI库和框架 Webix用于跨平台Web应用程序开发的JS框架&#xff0c;为您提供102个UI小部件和功能丰富的CSS/HTML5 JavaScript控件 开发商介绍 Webix团队由由热衷于创建高质量网络产品的专业人士组成&#xff…

docker desktop安装K8S

文章目录一、配置镜像源二、使用步骤1.引入库2.安装k8s3.加载资源4.K8S官方dashboard总结摘抄这个&#xff0c;因为这个有些不全 导致走了一些弯路 一、配置镜像源 国外特别的慢 {"debug": true,"experimental": false,"insecure-registries":…

CSS的常用元素属性,显示模式,盒模型,弹性布局

目录 1.常用元素属性 1.1字体属性 设置字体 设置大小 字体粗细 文字样式 1.2文本属性 文字颜色 文字对齐 ​编辑文本装饰 文本缩进 ​编辑行高 ​编辑1.3背景属性 背景颜色 背景位置 背景尺寸 1.4圆角矩形 2.元素的显示模式 2.1块级元素(display:block) 2.…

Excel绘制数据对比表格-表格可视化

Word中生成的表格一般比较单调&#xff0c;若一组数据存在对比的情况时&#xff0c;读者/审稿人难以直接通过详细对比数据来分析&#xff0c;此时若可以将该组数据可视化来对比则为好&#xff0c;Excel则可实现该功能。 关于有些期刊需要提供表格中的数据便于复制等情况时&…

新闻发布网站分析及适用场景

在当今数字时代&#xff0c;发布新闻的渠道已经不再局限于传统媒体&#xff0c;越来越多的企业、组织和个人开始使用互联网平台发布新闻稿&#xff0c;以提升品牌知名度和影响力。本文将介绍一些可以发布新闻的网站&#xff0c;并分析其特点和适用场景。一、新闻稿发布平台1.新…

SpringCloud+SpringCloudAlibaba

架构的演进1.1单体架构将所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中&#xff0c;最终经过编译、打包&#xff0c;部署在一台服务器上。◆ 1.1.1单体架构的优点1&#xff09;部署简单: 由于是完整的结构体&#xff0c;可以直接部署在一个服务器上即可。2&…

启动Idea报Failed to create JVM. JVM Path:

一、如果设置Idea自定义虚拟内存错误导致无法正常打开Idea 1.1、打开自定义Idea虚拟内存&#xff1a;Help - Edit Custom VM Options 1.2、如果idea64.exe.vmoptions设置非法字符&#xff0c;会导致打开idea报错 1.3、打开Idea提示如下 内容如下&#xff1a; ----------------…

信号、signal 函数、sigaction 函数

文章目录1.信号的基本概念2.利用 kill 命令发送信号3.信号处理的相关动作4.信号与 signal 函数4.1 signal 函数示例一4.2 signal 函数示例二5.利用 sigaction 函数进行信号处理6.利用信号处理技术消灭僵尸进程1.信号的基本概念 发送信号是进程之间常用的通信手段。信号用来通知…

算法刷题-只出现一次的数字、输出每天是应该学习还是休息还是锻炼、将有序数组转换为二叉搜索树

只出现一次的数字&#xff08;位运算、数组&#xff09; 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a; 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&…

有java基础学习大数据该如何规划

大数据开发对于Java语言的依赖程度比较高&#xff0c;如果想尝试大数据开发&#xff0c;学习过Java语言就很容易上手 Java是目前使用广泛的编程语言之一&#xff0c;具有的众多特性&#xff0c;特别适合作为大数据应用的开发语言。 目前很多大数据开发团队都在使用Java语言&a…