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对…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...