当前位置: 首页 > article >正文

今日CSS学习浮动->定位

-------------------------------------------------------------------------------------------------------
CSS的浮动
float 属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。
float 属性定义元素在哪个方向浮动。
可能的值:
none - 默认值。元素不浮动。
left - 元素向左浮动。
right - 元素向右浮动。
inherit - 规定应该从父元素继承 float 属性的值。
-------------------------------------------------------------------------------------------------------浮动的原理 浮动以后脱离了文档流,不占据文档流的位置,只有左右浮动,没有上下浮动。
浮动的元素会生成一个块级框,而不论它本身是什么类型的元素。
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。
当容器不够时,会另起一行。
在两个行内块元素之间通常存在空隙,当这两个元素浮动起来便可以消除这个空隙.
-------------------------------------------------------------------------------------------------------
浮动元素还会造成父元素的高度塌陷,解决办法:任选其一
1. 给父元素设置高度
2. 给父元素设置overflow:hidden;
(搭配clear:both;使用清除浮动)
3. 给父元素设置浮动
4. 给父元素设置display:inline-block;
5. 给父元素设置伪元素:.clearfix::after{content: "";display: block;clear: both;}6, 给父元素设置display:flex;7,受影响的元素设置clear:both;
clear :left;清除左侧浮动
clear :right;清除右侧浮动
clear :both;清除左右两侧的浮动所以浮动在特殊情况时会出现一些问题,所以我们要尽量避免使用浮动。
将浮动应用到列表的<li></li>标签上,会使<li></li>标签变成行内块元素,横向排列,例如导航栏。
-------------------------------------------------------------------------------------------------------
CSS的定位
position 属性指定元素的定位类型。
可能的值:
static - 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。relative - 生成相对定位的元素,相对于其正常位置进行定位。
相对定位元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
注意:相对定位元素的位置是相对于其正常位置进行定位的,所以即使元素的位置发生了变化,但是它的相对位置是不变的,还是处于标准流。absolute - 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位,与相对定位不同的是脱离了文档流。
脱离文档流的元素不会占据文档流的位置,不会影响文档流的布局。与浮动类似,会浮在文档流的上方。
与普通浮动不同的是,每次绝对定位都创建一个浮动层,所以会造成层叠问题。
元素的位置也是通过 "left", "top", "right" 以及 "bottom" 属性进行规定。上述两种定位方式的区别在于,相对定位是相对于上一个具有定位的父元素进行定位。如果父级元素没有定位,则继续向上查找。
如果所有的父元素都没有定位,则相对于浏览器窗口进行定位。
-------------------------------------------------------------------------------------------------------
fixed - 生成固定定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
fixed元素的位置是相对于浏览器窗口进行定位的,所以即使元素的位置发生了变化,但是它的相对位置是不变的。
鼠标滑动时,元素不会随着鼠标的移动而移动。
-------------------------------------------------------------------------------------------------------
z-index 属性指定一个元素的堆叠顺序(哪个元素在前,哪个元素在后)。
z-index 只对定位元素有效(position:absolute, position:relative, position:fixed)。
z-index 的值可以是负数。
z-index 的值越大,元素就会越靠前。大的值覆盖小的值。
-------------------------------------------------------------------------------------------------------
CSS的动画
animation 属性是一个简写属性,用于设置六个动画属性:
animation-name - 规定需要绑定到选择器的 keyframe 名称。
animation-duration - 规定完成动画所花费的时间,以秒或毫秒计。
例如:
animation: myfirst 5s;
animation: myfirst 5s linear;
animation: myfirst 5s linear 2s;animation-timing-function - 规定动画的速度曲线。
例如:
animation-timing-function: linear;匀速
animation-timing-function: ease;逐渐变慢
animation-timing-function: ease-in;加速
animation-timing-function: ease-out;减速
animation-timing-function: ease-in-out;先加速后减速
animation-timing-function: cubic-bezier(n,n,n,n);自定义速度曲线
animation-timing-function: step-start;animation-delay - 规定在动画开始之前的延迟。
animation-iteration-count - 规定动画应该播放的次数。
animation-direction - 规定是否应该轮流反向播放动画。
例如:
animation-direction: normal;
animation-direction: reverse;
animation-direction: alternate;
animation-direction: alternate-reverse; 
animation-play-state - 规定动画是否正在运行或暂停。
例如:
animation-play-state: running;
animation-play-state: paused;animation-fill-mode - 规定对象动画时间之外的状态。
例如:
animation-fill-mode: none;
animation-fill-mode: forwards;@keyframes 规则
@keyframes 规则用于创建动画。
@keyframes 规则是 CSS3 中新增的功能。
@keyframes 规则由 @keyframes 关键字开始,后面跟着动画名称和动画内容。
动画名称可以是任何名称,但是必须以 @keyframes 关键字开始。
动画内容是由一个或多个百分比值和 CSS 样式组成的。
-------------------------------------------------------------------------------------------------------

1. 浮动属性(float)

定义float 属性用于创建浮动框,将元素移动到一边,直至其左边缘或右边缘触及包含块或另一个浮动框的边缘。
语法

.element {float: left; /* 也可以是 right、none、inherit */
}

属性值

  • none:默认值,元素不浮动。
  • left:元素向左浮动。
  • right:元素向右浮动。
  • inherit:规定从父元素继承 float 属性的值。

2. 浮动原理

  • 浮动元素脱离文档流,不占据文档流的位置,仅有左右浮动,无上下浮动。
  • 浮动的元素会生成一个块级框,不论其原本的元素类型是什么。
  • 浮动框可向左或向右移动,直到外边缘碰到包含框或另一个浮动框的边框。
  • 文档普通流中的块框表现得如同浮动框不存在。
  • 当容器空间不足时,浮动元素会另起一行。
  • 两个行内块元素浮动后可消除它们之间通常存在的空隙。

3. 浮动导致的父元素高度塌陷及解决办法

问题:浮动元素会使父元素的高度塌陷,因为浮动元素脱离了文档流,父元素无法感知其高度。
解决办法

  1. 给父元素设置固定高度
.parent {height: 200px;
}

  1. 使用 overflow:hidden(搭配 clear:both 使用清除浮动)

.parent {overflow: hidden;
}
.clear {clear: both;
}

  1. 给父元素设置浮动

.parent {float: left; /* 或 right */
}

  1. 给父元素设置 display:inline-block

.parent {display: inline-block;
}

  1. 给父元素设置伪元素清除浮动

.clearfix::after{content: "";display: block;clear: both;
}

  1. 给父元素设置 display:flex

.parent {display: flex;
}

  1. 给受影响的元素设置 clear 属性

.clear-left {clear: left; /* 清除左侧浮动 */
}
.clear-right {clear: right; /* 清除右侧浮动 */
}
.clear-both {clear: both; /* 清除左右两侧的浮动 */
}

注意:浮动在特殊情况时会引发一些问题,应尽量避免过度使用浮动。

4. 浮动在列表中的应用

将浮动应用到列表的 <li> 标签上,会使 <li> 标签变成行内块元素,横向排列,常用于制作导航栏。

html

<ul class="nav"><li>首页</li><li>产品</li><li>关于我们</li>
</ul>

.nav li {float: left;list-style: none;margin-right: 10px;
}

九、CSS 的定位

1. 定位属性(position)

定义position 属性指定元素的定位类型。
语法

.element {position: relative; /* 也可以是 static、absolute、fixed */
}

属性值

  • static:默认值,没有定位,元素出现在正常的流中,忽略 topbottomleftrightz-index 声明。
  • relative:生成相对定位的元素,相对于其正常位置进行定位,通过 lefttoprightbottom 属性规定位置,且元素仍处于标准流中。
.relative-element {position: relative;left: 20px;top: 10px;
}

  • absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位,脱离文档流,不占据文档流位置,会浮在文档流上方,可能造成层叠问题,通过 lefttoprightbottom 属性规定位置。

.absolute-element {position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);
}
  • fixed:生成固定定位的元素,相对于浏览器窗口进行定位,位置通过 lefttoprightbottom 属性规定,元素相对位置不变,鼠标滑动时元素不会随之移动。

.fixed-element {position: fixed;right: 10px;bottom: 10px;
}

2. 堆叠顺序属性(z-index)

定义z-index 属性指定一个元素的堆叠顺序,确定哪个元素在前,哪个元素在后。
适用范围:只对定位元素(position:absoluteposition:relativeposition:fixed)有效。
属性值:可以是负数,值越大,元素越靠前,大的值会覆盖小的值。

.element1 {position: relative;z-index: 1;
}
.element2 {position: relative;z-index: 2; /* 会覆盖 element1 */
}

十、CSS 的动画

1. 动画属性(animation)

定义animation 是一个简写属性,用于设置六个动画属性。
语法示例

.element {animation: myfirst 5s linear 2s infinite alternate paused forwards;
}

具体属性及解释

  • animation-name:规定需要绑定到选择器的 keyframe 名称。
  • animation-duration:规定完成动画所花费的时间,以秒或毫秒计,如 5s 或 5000ms
  • animation-timing-function:规定动画的速度曲线。
    • linear:匀速。
    • ease:逐渐变慢。
    • ease-in:加速。
    • ease-out:减速。
    • ease-in-out:先加速后减速。
    • cubic-bezier(n,n,n,n):自定义速度曲线。
    • step-start:动画开始即达到最终状态。

.element {animation-timing-function: ease-in-out;
}

  • animation-delay:规定在动画开始之前的延迟时间,如 2s 表示延迟 2 秒开始动画。
  • animation-iteration-count:规定动画应该播放的次数,可以是具体数字,也可以是 infinite(无限循环)。

.element {animation-iteration-count: 3; /* 播放 3 次 */
}

  • animation-direction:规定是否应该轮流反向播放动画。
    • normal:正常播放。
    • reverse:反向播放。
    • alternate:在奇数次(1、3、5 等)正向播放,在偶数次(2、4、6 等)反向播放。
    • alternate-reverse:在奇数次(1、3、5 等)反向播放,在偶数次(2、4、6 等)正向播放。

.element {animation-direction: alternate;
}

  • animation-play-state:规定动画是否正在运行或暂停。
    • running:运行。
    • paused:暂停。
.element {animation-play-state: paused;
}
  • animation-fill-mode:规定对象动画时间之外的状态。
    • none:默认值,动画结束后,元素回到原来的状态。
    • forwards:动画结束后,元素停留在动画的最终状态。
.element {animation-fill-mode: forwards;
}

2. @keyframes 规则

定义@keyframes 规则用于创建动画,是 CSS3 中新增的功能。
语法:由 @keyframes 关键字开始,后面跟着动画名称和动画内容,动画内容由一个或多个百分比值和 CSS 样式组成。

@keyframes myAnimation {0% {opacity: 0;transform: translateX(0);}50% {opacity: 0.5;transform: translateX(50px);}100% {opacity: 1;transform: translateX(100px);}
}

上述 @keyframes 定义了名为 myAnimation 的动画,在动画的 0%、50%、100% 阶段分别设置了不同的 opacity(透明度)和 transform(变换)样式。

相关文章:

今日CSS学习浮动->定位

------------------------------------------------------------------------------------------------------- CSS的浮动 float 属性用于创建浮动框&#xff0c;将其移动到一边&#xff0c;直到左边缘或右边缘触及包含块或另一个浮动框的边缘。 float 属性定义元素在哪个方向浮…...

如何实现Spring Boot应用程序的安全性:全面指南

在现代 Web 开发中&#xff0c;安全性是 Spring Boot 应用程序的核心需求&#xff0c;尤其是在微服务、云原生和公开 API 场景中。Spring Boot 结合 Spring Security 提供了一套强大的工具&#xff0c;用于保护应用程序免受常见威胁&#xff0c;如未经授权的访问、数据泄露、跨…...

YOLOv8融合CPA-Enhancer【提高恶略天气的退化图像检测】

1.CPA介绍 CPA-Enhancer通过链式思考提示机制实现了对未知退化条件下图像的自适应增强&#xff0c;显著提升了物体检测性能。其插件式设计便于集成到现有检测框架中&#xff0c;并在物体检测及其他视觉任务中设立了新的性能标准&#xff0c;展现了广泛的应用潜力。 关于CPA-E…...

Python 项目环境配置与 Vanna 安装避坑指南 (PyCharm + venv)

在进行 Python 项目开发时&#xff0c;一个干净、隔离且配置正确的开发环境至关重要。尤其是在使用像 PyCharm 这样的集成开发环境 (IDE) 时&#xff0c;正确理解和配置虚拟环境 (Virtual Environment) 是避免许多常见问题的关键。本文结合之前安装 Vanna 库时遇到的问题&#…...

第52讲:农业AI + 区块链——迈向可信、智能、透明的未来农业

目录 一、为什么农业需要“AI+区块链”? 二、核心应用场景解读 1. 农产品溯源系统 2. 农业信贷与保险精准评估 3. 农业碳足迹追踪与碳汇交易 三、案例实战分享:智能溯源 + 区块链合约 四、面临挑战与展望 五、总结 在数字农业时代,“AI” 和 “区块链” 是两股不容忽…...

模板偏特化 (Partial Specialization)

C 模板偏特化 (Partial Specialization) 模板偏特化允许为模板的部分参数或特定类型模式提供定制实现&#xff0c;是 静态多态&#xff08;Static Polymorphism&#xff09; 的核心机制之一。以下通过代码示例和底层原理&#xff0c;全面解析模板偏特化的实现规则、匹配优先级…...

【防火墙 pfsense】1简介

&#xff08;1&#xff09; pfSense 有以下可能的用途&#xff1a; 边界防火墙 路由器 交换机 无线路由器 / 无线接入点 &#xff08;2&#xff09;边界防火墙 ->要充当边界防火墙&#xff0c;pfSense 系统至少需要两个接口&#xff1a;一个广域网&#xff08;WAN&#xff0…...

Qt UDP组播实现与调试指南

在Qt中使用UDP组播(Multicast)可以实现高效的一对多网络通信。以下是关键步骤和示例代码: 一、UDP组播核心机制 组播地址:使用D类地址(224.0.0.0 - 239.255.255.255)TTL设置:控制数据包传播范围(默认1,同一网段)网络接口:指定发送/接收的物理接口二、发送端实现 /…...

线上助农产品商城小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的线上助农产品商城小程序源码&#xff0c;旨在为农产品销售搭建一个高效、便捷的线上平台&#xff0c;助力乡村振兴。 一、技术架构 该小程序源码采用了ThinkPHP作为后端框架&#xff0c;FastAdmin作为快速开发框架&#xff0c;UniApp作为跨…...

【maven-7.1】POM文件中的属性管理:提升构建灵活性与可维护性

在Maven项目中&#xff0c;POM (Project Object Model) 文件是核心配置文件&#xff0c;而属性管理则是POM中一个强大但常被低估的特性。良好的属性管理可以显著提升项目的可维护性、减少重复配置&#xff0c;并使构建过程更加灵活。本文将深入探讨Maven中的属性管理机制。 1.…...

基于Matlab的车牌识别系统

1.程序简介 本模型基于MATLAB,通过编程创建GUI界面&#xff0c;基于Matlab的数字图像处理&#xff0c;对静止的车牌图像进行分割并识别&#xff0c;通过编写matlab程序对图像进行灰度处理、二值化、腐蚀膨胀和边缘化处理等&#xff0c;并定位车牌的文字&#xff0c;实现字符的…...

three.js精灵及精灵材质、Shader源码分析

在Three.js中,Sprite(精灵)用于创建始终面向相机的2D元素,适用于标签、图标或粒子效果。本文将分析其源码及Shader实现。 1. sprite的基本使用方法 创建精灵材质: 精灵材质有个特殊的参数rotation,可以让其旋转一定的角度。 const material = new THREE.SpriteMateria…...

Kubernetes Docker 部署达梦8数据库

Kubernetes & Docker 部署达梦8数据库 一、达梦镜像获取 目前达梦官方暂未在公共镜像仓库提供Docker镜像&#xff0c;需通过达梦官网联系获取官方镜像包。 二、Kubernetes部署方案 部署配置文件示例 apiVersion: apps/v1 kind: Deployment metadata:labels:app: dm8na…...

探索 CameraCtrl模型:视频生成中的精确摄像机控制技术

在当今的视频生成领域&#xff0c;精确控制摄像机轨迹一直是一个具有挑战性的目标。许多现有的模型在处理摄像机姿态时往往忽略了精准控制的重要性&#xff0c;导致生成的视频在摄像机运动方面不够理想。为了解决这一问题&#xff0c;一种名为 CameraCtrl 的创新文本到视频模型…...

Streamlit从入门到精通:构建数据应用的利器

在数据科学与机器学习日益普及的今天&#xff0c;如何快速将模型部署为可交互的应用成为了许多数据科学家的重要任务。Streamlit&#xff0c;作为一个开源的Python库&#xff0c;专为数据科学家设计&#xff0c;能够帮助我们轻松构建美观且直观的Web应用。本文将从入门到精通&a…...

【计算机视觉】CV实战项目- 深度解析FaceAI:一款全能的人脸检测与图像处理工具库

深度解析FaceAI&#xff1a;一款全能的人脸检测与图像处理工具库 项目概述核心功能与技术实现1. 人脸检测与识别2. 数字化妆与轮廓标识3. 性别与表情识别4. 高级图像处理 实战指南&#xff1a;项目运行与开发环境配置典型应用示例常见问题与解决方案 学术背景与相关研究项目扩展…...

快速上手GO的net/http包,个人学习笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 针对GO中net/http包的学习笔记 基础快速了解 创建简单的GOHTTP服务 func …...

达梦DMDSC初研

1.文件系统 1.1文件系统DMASM DMASM是一个分布式文件系统&#xff0c;用来管理块设备的磁盘和文件&#xff0c;DMASMCMD将物理磁盘格式化后&#xff0c;变成可识别、可管理的 ASM磁盘&#xff0c;再通过 ASM磁盘组将一个或者多个 ASM磁盘整合成一个整体提供文件服务。ASM磁盘…...

Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力

前引&#xff1a;当算力不再是“奢侈品” &#xff0c;在人工智能、3D渲染、科学计算等领域&#xff0c;算力一直是横亘在个人与企业面前的“高墙”。高性能服务器价格动辄数十万元&#xff0c;专业设备维护成本高&#xff0c;普通人大多是望而却步。然而&#xff0c;Cephalon算…...

深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret

目录 深度解析 Kubernetes 配置管理&#xff1a;如何安全使用 ConfigMap 和 Secret一、目录结构二、ConfigMap 和 Secret 的创建1. 创建 ConfigMapconfig/app-config.yaml&#xff1a;config/db-config.yaml&#xff1a; 2. 创建 Secretsecrets/db-credentials.yaml&#xff1a…...

Redis的过期删除策略和内存淘汰策略

&#x1f914; 过期删除和内存淘汰乍一看很像&#xff0c;都是做删除操作的&#xff0c;这么分有什么意思&#xff1f; 首先&#xff0c;设置过期时间我们很熟悉&#xff0c;过期时间到了&#xff0c;我么的键就会被删除掉&#xff0c;这就是我们常认识的过期删除&#xff0c;…...

MySQL:数据库设计

目录 一、范式 二、第一范式 二、第二范式 三、第三范式 四、设计 &#xff08;1&#xff09;一对一关系 &#xff08;2&#xff09;一对多关系 &#xff08;3&#xff09;多对多关系 一、范式 数据库的范式是一种规则&#xff08;规范&#xff09;&#xff0c;如果我们…...

Android Kotlin AIDL 完整实现与优化指南

本文将详细介绍如何在Android中使用Kotlin实现AIDL&#xff08;Android Interface Definition Language&#xff09;&#xff0c;并提供多种优化方案。 一、基础实现 1. 创建AIDL文件 在src/main/aidl/com/example/myapplication/目录下创建&#xff1a; IMyAidlInterface.…...

synchronized关键字的实现

Java对象结构 synchronized锁升级过程 为了优化synchronized锁的效率&#xff0c;在JDK6中&#xff0c;HotSpot虚拟机开发团队提出了锁升级的概念&#xff0c;包括偏向锁、轻量级锁、重量级锁等&#xff0c;锁升级指的就是“无锁 --> 偏向锁 --> 轻量级锁 --> 重量级…...

Ubuntu K8s集群安全加固方案

Ubuntu K8s集群安全加固方案 在Ubuntu系统上部署Kubernetes集群时&#xff0c;若服务器拥有外网IP&#xff0c;需采取多层次安全防护措施以确保集群安全。本方案通过系统防火墙配置、TLS通信启用、网络策略实施和RBAC权限控制四个核心层面&#xff0c;构建安全的Kubernetes环境…...

如何在spark里搭建local模式

在Spark里搭建local模式较为简单&#xff0c;下面详细介绍在不同环境下搭建local模式的步骤。 ### 环境准备 - **Java**&#xff1a; Spark是基于Java虚拟机&#xff08;JVM&#xff09;运行的&#xff0c;所以要安装Java 8及以上版本。 - **Spark**&#xff1a; 可从[Apache…...

opencv 图像的旋转

图像的旋转 1 单点旋转2. 图片旋转&#xff08;cv2.getRotationMatrix2D&#xff09;3. 插值方法3.1 最近邻插值(cv2.INTER_NEAREST)3.2 双线性插值(cv2.INTER_LINEAR)3.3 像素区域插值&#xff08;cv2.INTER_AREA&#xff09;3.4 双三次插值&#xff08;cv2.INTER_CUBIC&#…...

【DNS】BIND 9的配置

该文档围绕BIND 9的配置与区域文件展开&#xff0c;介绍了BIND 9配置文件及区域文件的相关知识&#xff0c;以及权威名称服务器、解析器的相关内容&#xff0c;还阐述了负载均衡和区域文件的详细知识&#xff0c;具体如下&#xff1a; 基础配置文件&#xff1a; named.conf&am…...

Spring Boot常用注解详解:实例与核心概念

Spring Boot常用注解详解&#xff1a;实例与核心概念 前言 Spring Boot作为Java领域最受欢迎的快速开发框架&#xff0c;其核心特性之一是通过注解&#xff08;Annotation&#xff09;简化配置&#xff0c;提高开发效率。注解驱动开发模式让开发者告别繁琐的XML配置&#xff…...

【多线程】线程互斥 互斥量操作 守卫锁 重入与线程安全

文章目录 Ⅰ. 线程互斥概念Ⅱ. 互斥锁的概念Ⅲ. 互斥锁的接口一、互斥锁的定义二、初始化互斥锁三、销毁互斥锁四、互斥量的加锁和解锁① 加锁接口② 解锁接口五、改进买票系统💥注意事项Ⅳ. 互斥锁的实现原理一、问题引入二、复习知识三、实现原理Ⅴ. 封装锁对象 &&…...