【CSS3】css开篇基础(4)

1.❤️❤️前言~🥳🎉🎉🎉

Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。

如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的内容感兴趣,记得关注我👀👀以便不错过每一篇精彩。

当然,如果在阅读中发现任何问题或疑问,我非常欢迎你在评论区留言指正🗨️🗨️。让我们共同努力,一起进步!

加油,一起CHIN UP!💪💪

🔗个人主页:E绵绵的博客
📚所属专栏:

1. JAVA知识点专栏

        深入探索JAVA的核心概念与技术细节

2.JAVA题目练习

        实战演练,巩固JAVA编程技能

3.c语言知识点专栏

        揭示c语言的底层逻辑与高级特性

4.c语言题目练习

        挑战自我,提升c语言编程能力

5.Mysql数据库专栏

        了解Mysql知识点,提升数据库管理能力

6.html5知识点专栏

        学习前端知识,更好的运用它

7. css3知识点专栏

        在学习html5的基础上更加熟练运用前端

8.JavaScript专栏

        在学习html5和css3的基础上使我们的前端使用更高级

📘 持续更新中,敬请期待❤️❤️

这次我们要了解网页布局,要学习浮动和定位两个知识点。 

2.标准流 

标准流(Normal Flow)是网页布局的默认排版模式,指的是元素在没有使用浮动、定位等特殊布局属性时,按照默认的排列顺序进行排列的机制。所有元素默认情况下都会遵循标准流进行布局。


所谓的标准流:就是标签按照规定好的默认方式排列。

块级元素会独占一行,从上向下顺序排列。
行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行。


以上都是标准流布局,我们前面学习的就是标准流,标准流是最基本的布局方式。

这三种布局方式都是用来摆放盒子的,盒子摆放到合适位置,布局自然就完成了。

注意: 实际开发中,一个页面基本都包含了这三种布局方式

3.浮动 

loat 属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。

浮动特性 

加了浮动之后的元素,会具有很多特性,需要我们掌握。

  1. 浮动元素会脱离标准流(脱标)
  2. 浮动的元素会一行内显示并且元素顶部对齐
  3. 浮动的元素会具有行内块元素的特性

浮动元素会脱离标准流(脱标)

  • 脱离标准普通流的控制(浮) 移动到指定位置(动),(俗称脱标)
  • 浮动的盒子不再保留原先的位置

 


<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>浮动特性1</title><style>/* 设置了浮动(float)的元素会:1.脱离标准普通流的控制(浮)移动到指定位置(动)。2.浮动的盒子不再保留原先的位置 */.box1 {float: left;width: 200px;height: 200px;background-color: pink;}.box2 {width: 300px;height: 300px;background-color: gray;}</style>
</head><body><div class="box1">浮动的盒子</div><div class="box2">标准流的盒子</div>
</body></html>

浮动的元素会一行内显示并且元素顶部对齐 

  • 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列。
  • 浮动的元素是互相贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐。

浮动的元素会具有行内块元素的特性 

任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性,无需用display转换。

块级盒子:没有设置宽度时默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定
行内盒子:原本的宽度默认和内容一样宽,直接设置高宽无效,但是添加浮动后,它的宽度和高度可以直接设置,无需用display转换


浮动的盒子中间是没有缝隙的,是紧挨着一起的

 浮动带来的问题

后续标准流元素的正常布局 

一个元素浮动了,理论上其余的兄弟元素也要浮动。一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题。


这是因为浮动会脱标,导致不和标准流在一起排序了,这样就可能导致浮动和标准流发生重叠。


注意浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流.

也就是说标准流如果在浮动盒子前面,那么浮动盒子不会影响标准流,会在其下部。而在后面会发生重叠,可能影响到结果。

这时候如果要消除影响,我们就要消除浮动。

 父容器恢复高度

当产生浮动后,我们的浮动元素盒子默认高度是0,所以如果一个盒子里装的全是浮动盒子,该盒子高度就为0,就会坍塌掉,同时还会影响到后面标准流的布局。(当然前面的标准流不会被影响)

这时如果想要不被影响,就要清除浮动,从而它们就能使浮动的盒子恢复到标准流中:高度能恢复成应有的高度,也不会被之前的标准流给重叠影响到,同时它们浮动盒子之间的布局也不会被影响。 

清除浮动 

通常使用以下几种方法来清除浮动:

  1. 使用clearfix :在父元素上应用一个clearfix类,这个类定义了伪元素清除浮动。

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

    然后在父元素的类中添加 clearfix 类名,就能清除子元素的浮动。

  2. 使用overflow属性:将父元素的overflow属性设置为auto或者hidden,可以触发BFC(块级格式化上下文),从而清除浮动。

    .parent {overflow: hidden; /* 或者 overflow: auto; */
    }
    

    这有个缺点,就是溢出的部分还会隐藏起来。

这些方法可以根据具体情况选择,以确保浮动元素不会破坏页面布局。

浮动元素经常和标准流父级搭配使用

为了约束浮动元素位置,我们网页布局一般采取的策略是:

先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。符合网页布局第一准侧

 4.定位

在网页设计中,定位(Positioning)是一种CSS属性,用于控制元素在页面中的位置。常用的定位属性包括:

相对定位

相对于元素自身正常位置进行定位,通过top、right、bottom、left属性来调整位置,不会脱离文档流。

.element {position: relative;top: 10px;left: 20px;
}

相对定位相对的是它原本在文档流中的位置而进行的偏移,并且relative定位遵循正常的文档流,它没有脱离文档流,但是它的top/left/right/bottom属性是生效的。而且它还依然占有文档空间,占据的文档空间不会随 top / right / left / bottom 等属性的偏移而发生变动。也就是说相对定位并不会脱标,依然还是标准流,占据空间依然没变。只不过视觉上发生了变化。

虽然占据空间不会变,但相对定位能覆盖标准流在视觉上。 

绝对定位 

绝对定位不会保留原来的位置(脱离文档流),那后面盒子就会往上占了它的位置;
如果没有祖先元素或者祖先元素没有定位,则以浏览器为基准定位;
如果祖先元素有定位(可以是相对、绝对或者固定定位),则以最近的已经定位的祖先元素为基准移动位置。
子绝父相 —— 虽然父元素的定位可以是相对、绝对或者固定定位,但是绝对定位和固定定位都会脱离标准流,所以我们实际开发中,一般都使用相对定位,这就是常说的子绝父相。

.element {position: absolute;top: 50%;left: 50%;
}

 固定定位

固定定位相对于浏览器窗口,脱离文档流,使用fixed的元素不会随窗口的滚动而滚动

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>固定定位</title><style>.fixed {width: 200px;height: 200px;background-color: aqua;/* 使用固定定位 */position: fixed;top: 50px;left: 300px;}</style>
</head><body><div class="fixed"></div><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1><h1>我是h的内容</h1></body></html>

 

粘性定位 

  1. 基本语法

    .element {position: -webkit-sticky; /* 兼容性前缀 */position: sticky;top: 10px; /* 或者 bottom, left, right 中至少一个值 */
    }
    
  2. 工作原理

    • 元素在页面滚动时表现为相对定位,直到其达到指定的阈值位置(例如距离顶部10px),然后变为固定定位,保持在指定位置不动,直到离开阈值范围。
    • 如果元素离开视口顶部时没有足够的空间放置它,它将像相对定位一样继续滚动,直到可以固定在指定位置。
    • 粘性定位不脱标,原有空间一直不变。
  3. 兼容性

    • 在现代浏览器中有很好的支持,但老版本浏览器可能需要使用 -webkit-sticky 进行兼容性处理。

在设计中,粘性定位常用于创建导航栏在用户滚动时保持在屏幕顶部或侧边的效果,或者创建吸顶效果等。

定位的叠放顺序 

  • z-index 主要适用于已经设置了定位(position: relative, position: absolute, position: fixed, position: sticky)的元素。
  • 只有设置了定位的元素才能通过 z-index 控制其堆叠顺序,因为只有这些元素才能脱离正常文档流并具有层叠上下文。

数值可以是正整数、负整数或0,默认是 auto,数值越大,盒子越靠上
如果属性值相同,则按照书写顺序,后来居上

定位特性

定位也和浮动类似。
1.行内元素添加定位,可以直接设置高度和宽度
2.块级元素添加定位,如果不给宽度或者高度,默认大小是内容的大小。

让一个盒子绝对定位到盒子右中间 

.container {position: relative;width: 300px; /* 容器宽度 */height: 200px; /* 容器高度 */background-color: #f0f0f0;
}.element {position: absolute;top: 50%; /* 元素顶部定位在容器中间 */right: 0; /* 元素右侧与容器右侧对齐 */margin-top: -50px; /* 元素向上移动自身高度的一半 */width: 100px; /* 元素宽度 */height: 100px; /* 元素高度 */background-color: #3498db;
}

这种方法可以确保 .element 始终位于 .container 的中间,无论父容器的尺寸如何变化。

浮动元素不会压住标准流文字 

 浮动元素会脱标,当它压住标准流时,文字不会被压住,会环绕在周围显示。

 而定位元素脱标压住标准流时,文字会被压住。

这是因为浮动一开始就是为了环绕文字形成好的效果才设计出来的。

5.显示和隐藏元素 

display 属性可以用于设置一个元素应如何显示,
display:none;隐藏对象
display:block;除了转换为块级元素之外,同时还有显示元素的意思


display隐藏元素后,不再占有原来的位置,并且该空间从文档流中移除

visibility属性用于指定一个元素可见还是隐藏。
visibility:visible;元素可视
visibility:hidden; 元素隐藏


visibility隐藏元素后,继续占有原来的位置,该空间不变

overflow 属性的取值:

  1. overflow: visible;

    • 默认值,内容会溢出元素框外,可能覆盖其它内容。
  2. overflow: hidden;

    • 内容溢出时将被隐藏,不会显示在元素框外部。还能消除内部浮动
  3. overflow: scroll;

    • 无论内容是否溢出,始终显示滚动条。
  4. overflow: auto;

    • 仅在内容溢出时显示滚动条,否则不显示。这个我们经常用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot实现的动态化酒店住宿管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理酒店客房管理系统的相关信息成为必然。开发…

图文详解ChatGPT-o1完成论文写作的全流程

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 本月中旬OpenAI发布了OpenAI o1系列新的AI模型。 据OpenAI介绍&#xff0c;这些模型旨在花更多时间思考后再做出反应&#xff0c;就像人一样。通过训练&#xff0c;它们学会改进思维过…

深度学习(六)CNN:图像处理的强大工具(6/10)

一、CNN 的概述 卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;是深度学习的代表算法之一&#xff0c;在深度学习中占据着重要地位。 CNN 的发展历程可追溯至 20 世纪 80 至 90 年代&#xff0c;时间延迟网络和 LeNet - 5 是最早出现的卷…

conda虚拟环境中安装cuda方法、遇到的问题

conda虚拟环境中安装cuda方法、遇到的问题 文章目录 conda虚拟环境中安装cuda方法、遇到的问题conda虚拟环境中安装cudacuda.h和cuda_runtime.hpytorch运行时的CUDA版本其他问题检查包冲突nvcc -V和nvidia-smi显示的版本不一致cuda路径 conda虚拟环境中安装cuda 参考文章&…

【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;迈向AGI的新跨越&#x1f4af;BoT与CoT的技术对比技术原理差异推理性能提升应用范围和通用性从错误中学习的能力总结 &#x1f4af;BoT的工作流程和机制初始化过程生成推…

layaair获取组件里的脚本

获取脚本用getComponents方法&#xff0c;但是这个方法里的参数不是脚本的名称。而是组件类型。如果你需要获取脚本&#xff0c;则类型为Laya.Script。挺坑的。我在官网找都没找到这个是这么用的。我猜测的。没想到试了一下成功了。 property(Laya.Node)public img1: Laya.Node…

碰一碰支付系统搭建怎么做?头部公司源码大测评!

随着碰一碰支付dai li骗局的曝光&#xff0c;越来越多的人开始选择将目光转向碰一碰支付系统搭建这一入局方式&#xff0c;连带着与之相关的多个话题&#xff0c;如碰一碰支付系统搭建怎么做等也成为了当前的一大热点。 毕竟&#xff0c;相较于dai li 模式的与第三方公司合作、…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26 前言 本期相关论文可以从“下载” 资源中获取&#xff0c;如果有感兴趣的问题&#xff0c;欢迎交流探讨&#xff01; 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-26前言目…

【C++进阶】C++11(上)

【C进阶】C11(上) &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. C11的发展史 2. 列表初始化 2.1 C98的传统{} 2.2 C11中的{} 2.3 C11中的std::initializer_list 3. 右值引用…

Kaggle竞赛——灾难推文分类(Disaster Tweets)

目录 1. 准备工作2. 资源导入3. 数据处理4. 绘制词云图5. 数据可视化5.1 词数和字符数可视化5.2 元特征可视化5.3 类别可视化 6. 词元分析6.1 一元语法统计6.2 多元语法统计 7. 命名实体识别8. 推文主题提取9. 构建模型9.1 数据划分与封装9.2 模型训练与验证 10. 模型评估11. 测…

jvm虚拟机介绍

Java虚拟机&#xff08;JVM&#xff09;是Java语言的运行环境&#xff0c;它基于栈式架构&#xff0c;通过加载、验证、准备、解析、初始化等类加载过程&#xff0c;将Java类文件转换成平台无关的字节码&#xff0c;并在运行时动态地将其翻译成特定平台的机器码执行。 JVM的核心…

App测试环境部署

一.JDK安装 参考以下AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 二.SDK安装 安装地址&#xff1a;https://www.androiddevtools.cn/ 解压 环境变量配置 变量名&#xff1a;ANDROID_SDK_HOME 参考步骤&#xff1a; A…

K8s中TSL证书如何续期

TSL是什么 K8s中的作用是什么&#xff1f; 在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;TSL 指的是 Transport Layer Security&#xff0c;也就是传输层安全协议。它是用来保护在网络上传输的数据的安全性和隐私性。 TSL 在 Kubernetes 中的作用包括&#xff1a;…

铜业机器人剥片 - SNK施努卡

SNK施努卡有色行业电解车间铜业机器人剥片 铜业机器人剥片技术是针对传统人工剥片效率低下、工作环境恶劣及生产质量不稳定的痛点而发展起来的自动化解决方案。 面临人工剥片的诸多挑战&#xff0c;包括低效率、工作环境差、人员流动大以及产品质量控制不精确等问题。 人工剥片…

OSPF特殊区域及其他特性

不用的链路这状态信息没必要一直保存&#xff0c;要不路由器承受不了。用OSPF 特殊区域解决 1. Stub区域和Totally Stub区域 R1作为ASBR引入多个外部网段&#xff0c;如果Area 2是普通区域&#xff0c;则R3将向该区域注入5类和4类LSA。 当把Area 2配置为Stub区域后&#xff1a…

51单片机之蜂鸣器驱动

1.简介 蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电&#xff0c;广泛应用于计算机、打印机、 复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   压电式蜂鸣器主要…

Linux练习_2账户管理

题目描述1 建立用户组 [rootlocalhost ~]# groupadd -g 2000 shengchan [rootlocalhost ~]# groupadd -g 2001 caiwu [rootlocalhost ~]# groupadd -g 2002 jishu [rootlocalhost ~]# tail -3 /etc/group shengchan:x:2000: caiwu:x:2001: jishu:x:2002: [rootlocalhost ~]# 建…

【IC每日一题】

IC每日一题 1 组合逻辑VS时序逻辑1.1 组合逻辑1.1.1 竞争冒险1.1.2 解决方法 1.2 时序逻辑1.3 比较1.4 场景 2 计数器2.1 代码片段法2.2 实现计数器--异步复位&#xff0c;带clear端&#xff0c;计10则归0&#xff1b; 1 组合逻辑VS时序逻辑 1.1 组合逻辑 组合逻辑&#xff1…

SSM-Springboot笔记(2)- SpringBoot常用开发技能

1 SpringBoot常用开发技能 1.1 项目架构 创建项⽬配置启动类建⽴对应的包&#xff0c;先建⽴这些包&#xff0c;其他⽤到再补充 controller service mapper domain utils1.2 开发HTTP接⼝GET请求 GET请求 场景&#xff1a;⼀般的查询接⼝就是get请求 注解&#xff1a;GetMappin…