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对…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
flow_controllers
关键点: 流控制器类型: 同步(Sync):发布操作会阻塞,直到数据被确认发送。异步(Async):发布操作非阻塞,数据发送由后台线程处理。纯同步(PureSync…...
基于Java项目的Karate API测试
Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...
MCP和Function Calling
MCP MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大模型与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而…...
c++算法学习3——深度优先搜索
一、深度优先搜索的核心概念 DFS算法是一种通过递归或栈实现的"一条路走到底"的搜索策略,其核心思想是: 深度优先:从起点出发,选择一个方向探索到底,直到无路可走 回溯机制:遇到死路时返回最近…...
