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对…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
