css 布局及动画应用(flex+transform+transition+animation)
文章目录
- css 布局及动画应用
- animation
- transform,transition,animation 综合应用实例
- 代码实例解释
css 布局及动画应用
- Display用法
- 作用:用于控制元素的显示类型,如块级元素、内联元素、无显示等。
- 常见属性值及示例:
block:使元素显示为块级元素,会独占一行,并且可以设置宽度、高度、内外边距等属性。例如:
div {display: block;width: 200px;height: 100px;background-color: lightblue;margin: 10px;
}
inline:使元素显示为内联元素,不会独占一行,宽度和高度属性会根据内容自适应,并且垂直方向的外边距和内边距等属性可能不会像块级元素那样正常起作用。例如:
span {display: inline;background-color: yellow;padding: 5px;
}
none:元素不会被显示,并且不会在文档流中占据空间。例如:
.hidden-element {display: none;
}
- Flex布局相关CSS
- 作用:用于创建灵活的布局,方便实现水平或垂直方向的对齐、分布等布局效果。
- 基本属性及示例:
- 容器属性(父元素):
display: flex:将容器设置为flex布局。例如:
- 容器属性(父元素):
.container {display: flex;border: 1px solid black;
}
flex-direction:定义主轴的方向,有row(水平方向,从左到右)、row - reverse(水平方向,从右到左)、column(垂直方向,从上到下)、column - reverse(垂直方向,从下到上)。例如:
.container-row {display: flex;flex-direction: row;
}
.container-column {display: flex;flex-direction: column;
}
justify-content:用于在主轴上对齐子元素,有flex-start(从主轴起点开始对齐)、flex-end(从主轴终点开始对齐)、center(在主轴中心对齐)、space-between(子元素之间均匀分布,两端对齐)、space-around(子元素周围均匀分布)。例如:
.container {display: flex;justify-content: space-between;
}
- 项目属性(子元素):
flex-grow:定义项目的放大比例。如果所有项目的flex - grow属性都为1,则它们将等分剩余空间;如果一个项目的flex - grow为2,其他项目为1,则前者占据的剩余空间将是其他项目的两倍。例如:
.item-grow {flex-grow: 1;
}
.item-double-grow {flex-grow: 2;
}
flex - shrink:定义项目的缩小比例。例如,当容器空间不足时,flex - shrink属性控制子元素如何缩小。例如:
.item - shrink {flex-shrink: 1;
}
- Transform用法
- 作用:用于对元素进行旋转、缩放、平移和倾斜等变换操作。
- 常见函数及示例:
translate():用于平移元素。例如,transform: translate(50px, 100px);会将元素在水平方向移动50px,在垂直方向移动100px。
.transform-translate {transform: translate(50px, 100px);width: 100px;height: 100px;background-color: green;
}
rotate():用于旋转元素。例如,transform: rotate(45deg);会将元素顺时针旋转45度。
.transform-rotate {transform: rotate(45deg);width: 100px;height: 100px;background-color: orange;
}
scale():用于缩放元素。例如,transform: scale(1.5, 1.5);会将元素在水平和垂直方向都放大1.5倍。
.transform - scale {transform: scale(1.5, 1.5);width: 100px;height: 100px;background-color: purple;
}
- Transition用法
-
作用:用于实现元素状态变化时的过渡效果,如颜色变化、尺寸变化等。
-
基本属性及示例:
transition - property:指定要应用过渡效果的CSS属性。例如,transition - property: width, height;表示宽度和高度属性变化时应用过渡效果。transition - duration:过渡效果的持续时间,以秒(s)或毫秒(ms)为单位。例如,transition - duration: 0.5s;表示过渡效果持续0.5秒。transition - timing - function:指定过渡的时间曲线,如ease(默认,慢-快-慢)、linear(匀速)等。例如,transition - timing - function: ease - in - out;transition - delay:过渡效果的延迟时间,以秒(s)或毫秒(ms)为单位。例如,transition - delay: 0.2s;表示延迟0.2秒后开始过渡。
完整示例:
-
.button {width: 100px;height: 30px;background-color: blue;transition-property: background - color;transition-duration: 0.3s;transition-timing - function: ease;transition-delay: 0;
}
.button:hover {background-color: red;
}
- 在这个示例中,当鼠标悬停在按钮上时,按钮的背景颜色会在0.3秒内以
ease的时间曲线从蓝色过渡到红色,没有延迟。
- Float用法
- 作用:用于使元素向左或向右浮动,使得文本或其他内联元素可以环绕在它周围。
- 常见属性值及示例:
left:元素向左浮动。例如:
img {float: left;width: 100px;height: 100px;margin-right: 10px;
}
- `right`:元素向右浮动。例如:
.ad-box {float: right;width: 200px;height: 300px;background-color: lightgray;margin-left: 10px;
}
需要注意的是,当使用float布局时,可能需要清除浮动(使用clear: both;等属性)来避免父元素高度塌陷等问题。例如:
.clear-fix:after {content: "";display: table;clear: both;
}
在父元素的类中添加clear-fix,可以在浮动元素之后清除浮动,确保父元素能够正确地包含浮动元素。
animation
animation的基本用法animation是CSS中用于创建动画的一个简写属性,它可以将多个与动画相关的属性组合在一起。其基本语法如下:animation: name duration timing-function delay iteration-count direction fill-mode play-state;- 其中各参数的含义如下:
name:指定要应用的动画名称,这个名称是通过@keyframes规则定义的动画序列的名称。duration:动画的持续时间,以秒(s)或毫秒(ms)为单位。例如,3s表示动画持续3秒。timing-function:指定动画的时间曲线,用于控制动画在每个阶段的速度。常见的值有ease(默认,慢 - 快 - 慢)、linear(匀速)、ease - in(慢 - 快)、ease - out(快 - 慢)、cubic - bezier(n,n,n,n)(自定义贝塞尔曲线)等。delay:动画的延迟时间,以秒(s)或毫秒(ms)为单位。例如,1s表示动画延迟1秒后开始。iteration-count:动画的播放次数。可以是一个数字(如3,表示播放3次),也可以是infinite(无限次播放)。direction:指定动画的播放方向。常见的值有normal(正常方向,从起始关键帧到结束关键帧)、reverse(反向,从结束关键帧到起始关键帧)、alternate(交替,先正常播放,然后反向播放,重复此过程)、alternate - reverse(先反向播放,然后正常播放,重复此过程)。fill-mode:指定动画在播放之前和之后如何应用样式。常见的值有none(默认,动画结束后回到初始状态)、forwards(动画结束后保持在结束状态)、backwards(在延迟期间应用起始关键帧的样式)、both(结合forwards和backwards的效果)。play-state:控制动画的播放或暂停状态。常见的值有running(播放)和paused(暂停),不过通常通过JavaScript来动态改变这个值。
animation的实例- 简单的淡入淡出动画
- 首先,定义
@keyframes规则来创建动画序列:
- 首先,定义
- 简单的淡入淡出动画
@keyframes fade-in-out {from {opacity: 0;}to {opacity: 1;}
}
- 然后,将这个动画应用到一个元素上:
div {width: 100px;height: 100px;background - color: lightblue;animation: fade-in-out 3s ease-in-out 0s infinite alternate;
}
- 在这个例子中,创建了一个名为
fade - in - out的动画,它会让元素的透明度从0(完全透明)变化到1(完全不透明)。这个动画应用到一个div元素上,动画持续时间为3秒,时间曲线是ease - in - out(淡入淡出效果),没有延迟,会无限次交替播放(先淡入,再淡出,然后再淡入,如此循环)。 - 元素移动和旋转动画
- 定义
@keyframes规则:
- 定义
@keyframes move-and-rotate {0% {transform: translate(0, 0) rotate(0deg);}50% {transform: translate(100px, 100px) rotate(180deg);}100% {transform: translate(200px, 0) rotate(360deg);}
}
- 应用动画到元素:
img {width: 50px;height: 50px;animation: move-and-rotate 5s linear 0s infinite;
}
- 这个例子中,
@keyframes规则定义了一个动画序列,元素从初始位置(0,0)开始,先移动到(100px,100px)并旋转180度,然后移动到(200px,0)并旋转360度。动画应用到一个img元素上,持续时间为5秒,以线性速度播放,没有延迟,并且无限次播放。这样,图片会在页面上一边移动一边旋转,形成一个动态的效果。
transform,transition,animation 综合应用实例
以下是一个将transform、transition和animation综合应用的实例,通过一个简单的方块元素在鼠标悬停时产生多种动态效果来展示这三个属性的协同工作:
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF - 8"><meta name="viewport" content="width=device-width, initial-scale = 1.0"><title>Transform, Transition, Animation综合应用</title><style>/* 定义动画 */@keyframes colorChange {0% {background-color: lightblue;}50% {background-color: lightgreen;}100% {background-color: lightcoral;}}/* 定义元素的基本样式 */.box {width: 100px;height: 100px;background-color: lightblue;margin: 50px auto;/* 过渡效果 */transition: transform 0.5s ease-in-out;/* 动画 */animation: colorChange 5s ease-in-out infinite alternate;}/* 鼠标悬停时的样式 */.box:hover {/* 变换效果 */transform: scale(1.5) rotate(45deg);}</style>
</head><body><div class="box"></div>
</body></html>
代码实例解释
@keyframes colorChange:定义了一个名为colorChange的动画,该动画使元素的背景颜色在lightblue(浅蓝色)、lightgreen(浅绿色)和lightcoral(浅珊瑚色)之间交替变化。.box类样式:- 定义了一个宽度和高度均为
100px的方块,背景颜色为lightblue,并居中显示在页面上。 - 使用
transition: transform 0.5s ease - in - out;设置了过渡效果,当transform属性发生变化时(例如在鼠标悬停时),将以ease - in - out的时间曲线在0.5秒内平滑过渡。 - 使用
animation: colorChange 5s ease - in - out infinite alternate;应用了之前定义的colorChange动画。该动画将以ease - in - out的时间曲线持续5秒,无限次播放,并且每次播放方向交替(即从浅蓝色到浅绿色再到浅珊瑚色,然后反过来)。
- 定义了一个宽度和高度均为
.box:hover样式:当鼠标悬停在方块上时,应用transform: scale(1.5) rotate(45deg);,使方块在放大到原来的1.5倍的同时顺时针旋转45度。由于之前设置了过渡效果,这个变换过程会平滑地进行。
通过这个例子,展示了transform用于实现即时的元素变换,transition用于创建平滑的过渡效果,animation用于实现更复杂的动画序列,三者结合可以创造出丰富多样的动态交互效果。
相关文章:
css 布局及动画应用(flex+transform+transition+animation)
文章目录 css 布局及动画应用animationtransform,transition,animation 综合应用实例代码实例解释 css 布局及动画应用 Display用法 作用:用于控制元素的显示类型,如块级元素、内联元素、无显示等。常见属性值及示例:…...
springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)
线上预览: 移动端 http://8.146.211.120:8081/ 管理端 http://8.146.211.120:8088/ 小红书凭借优秀的产品体验 和超高人气 目前成为笔记类产品佼佼者 此项目将详细介绍如何使用Vue.js和Spring Boot 集合uniapp 开发一个仿小红书应用,凭借uniapp 可以在h5 小程序 app…...
lombok在高版本idea中注解不生效的解决
环境: IntelliJ IDEA 2024.3.1.1 Spring Boot Maven 问题描述 使用AllArgsConstructor注解一个用户类,然后调用全参构造方法创建对象,出现错误: java: 无法将类 com.itheima.pojo.User中的构造器 User应用到给定类型; 需要:…...
跨境电商领域云手机之选:亚矩阵云手机的卓越优势
在跨境电商蓬勃发展的当下,云手机已成为众多企业拓展海外市场的得力助手。亚矩阵云手机凭借其独特优势,在竞争激烈的云手机市场中崭露头角。不过,鉴于市场上云手机服务供应商繁多,企业在抉择时需对诸多要素予以审慎考量。 跨境电商…...
Linux第二课:LinuxC高级 学习记录day02
2.4、shell中的特殊字符 2.4.4、命令置换符 或者 $() 反引号:esc下面的按键,英文状态下直接按 功能:将一个命令的输出作为另一个命令的参数 echo 不会认为hostname是一个命令 加上 之后,先执行hostname,拿到主机名…...
6. NLP自然语言处理(Natural Language Processing)
自然语言是指人类日常使用的语言,如中文、英语、法语等。 自然语言处理是人工智能(AI)领域中的一个重要分支,它结合了计算机科学、语言学和统计学的方法,通过算法对文本和语音进行分析,使计算机能够理解、解…...
win10电脑 定时关机
win10电脑 定时关机 https://weibo.com/ttarticle/p/show?id2309405110707766296723 二、使用任务计划程序设置定时关机打开任务计划程序: 按下“Win S”组合键,打开搜索框。 在搜索框中输入“任务计划程序”,然后点击搜索结果中的“任务…...
linux删除用户
1、查看账号 cat /etc/passwd 查看所有用户账号信息:该文件记录了系统中的所有用户账号信息,包括用户名、用户ID、用户所属组等。 2、删除账号 基本删除:使用userdel命令删除用户账号,格式为userdel [选项] 用户名。如果不加任…...
FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )
以Xilinx 公司Virtex-II 系列FPGA 为例,其基本结构由下图所示。它是主要由两大部分组成:可编程输入/输出(Programmable I/Os)部分和内部可配置(Configurable Logic)部分。 可编程输入/输出(I/Os…...
Springboot项目如何消费Kafka数据
目录 一、引入依赖二、添加Kafka配置三、创建 Kafka 消费者(一)Kafka生产的消息是JSON 字符串1、方式一2、方式二:需要直接访问消息元数据 (二)Kafka生产的消息是对象Order 四、创建 启动类五、配置 Kafka 生产者&…...
LeetCode 热题 100 | 子串
子串基础 前缀和:前面的数加在一起等于多少,放进map里,key为和,value为这个和出现的次数。单调队列:单调递增/递减队列,每次加入新元素,比新元素大/小的元素全部弹出。滑动窗口:两层…...
深度学习笔记11-优化器对比实验(Tensorflow)
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 目录 一、导入数据并检查 二、配置数据集 三、数据可视化 四、构建模型 五、训练模型 六、模型对比评估 七、总结 一、导入数据并检查 import pathlib,…...
【掌握 JavaScript 数组迭代:map 和 includes 的使用技巧】
map map()方法是数组原型的一个函数,用于对数组的每个元素执行一个函数,并返回一个新的数组,其中包含么哦一个元素执行的结果。 语法 const newArray array.map(callback(currentValue, index, arr), thisValue)参数 callback࿱…...
深入浅出 Android AES 加密解密:从理论到实战
深入浅出 Android AES 加密解密:从理论到实战 在现代移动应用中,数据安全是不可忽视的一环。无论是用户隐私保护,还是敏感信息的存储与传输,加密技术都扮演着重要角色。本文将以 AES(Advanced Encryption Standard&am…...
Clickhouse基础(一)
数据存储的目录,在存储数据时是先经过压缩后再存储的,压缩效率很高 操作命令: sudo clickhouse start sudo clickhouse restart sudo clickhouse status进入clickhouse clickhouse-client -mCREATE TABLE db_13.t_assist (modelId UInt64,…...
深度学习|表示学习|一个神经元可以干什么|02
如是我闻: 如果我们只有一个神经元(即一个单一的线性或非线性函数),仍然可以完成一些简单的任务。以下是一个神经元可以实现的功能和应用: 1. 实现简单的线性分类 输入:一组特征向量 x x x 输出ÿ…...
ubuntu22.04降级安装CUDA11.3
环境:主机x64的ubuntu22.04,原有CUDA12.1,但是现在需要CUDA11.3,本篇文章介绍步骤。 一、下载CUDA11.3的run文件 下载网址:https://developer.nvidia.com/cuda-11-3-1-download-archive?target_osLinux&target_…...
为AI聊天工具添加一个知识系统 之32 三“中”全“会”:推理式的ISA(父类)和IOS(母本)以及生成式CMN (双亲委派)之1
本文要点和问题 要点 三“中”全“会”:推理式的ISA的(父类-父类源码)和IOS的(母本-母类脚本)以及生成式 CMN (双亲委派-子类实例)。 数据中台三端架构的中间端(信息系统架构ISA :…...
Python----Python高级(函数基础,形参和实参,参数传递,全局变量和局部变量,匿名函数,递归函数,eval()函数,LEGB规则)
一、函数基础 1.1、函数的用法和底层分析 函数是可重用的程序代码块。 函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。 在编写函数时…...
spring解决循环依赖的通俗理解
目录标题 1、什么是循环依赖2、解决循环依赖的原理3、Spring通过三级缓存解决循环依赖4、为什么要使用三级缓存而不是二级缓存?5、三级缓存中存放的是lambda表达式而不是一个半成品对象 1、什么是循环依赖 众所周知,Spring的容器中管理整个体系的bean对…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...
