【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.mzph.cn/diannao/58136.shtml

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

相关文章

[免费]SpringBoot+Vue智慧校园(校园管理)系统[论文+源码+SQL脚本]

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue智慧校园(校园管理)系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue智慧校园(校园管理)系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术的迅猛发展&#xff0c…

3DS MAX三维建模平面基础与修改工具(图形编辑与二维建模修改工具)

又是一年1024祝大家程序员节日快乐 3DS MAX三维建模平面基础与修改工具&#xff08;图形编辑与二维建模修改工具&#xff09; 欢迎大家来学习3DS MAX教程&#xff0c;在这里先说一下研究好3ds Max一定要一边看教程一边要自己学的操作才能更快的进步&#xff0c;预祝大家学习顺利…

Linux 进程间通信_匿名管道

1.程间通信目的 : 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&#xff08;如…

家庭网络光猫到客厅通过VLAN实现单线复用

大部分家庭装修时没有提前考虑网线分布&#xff0c;一般装修公司都是从各个房间拉一根网线到弱电箱&#xff0c;就结束了&#xff0c;如下图。但是弱电箱在大部分家庭&#xff0c;空间非常小&#xff0c;很难放下一些常见的路由器&#xff0c;花大价钱买了个路由器作为主路由&a…

【C++】继承与模板

继承 1.继承的概念 概念&#xff1a;继承(inheritace)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称之为派生类。继承呈现了面向对象程序设计的…

信息安全工程师(68)可信计算技术与应用

前言 可信计算技术是一种计算机安全体系结构&#xff0c;旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。 一、可信计算技术的定义与原理 可信计算技术通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段&#xff0c;确保计算机系统在各种攻击和…

融合DevOps打造企业高效流程体系的实践与探索

一、引言 转眼间&#xff0c;我已毕业十多年&#xff0c;在IT领域深耕不辍&#xff0c;曾涉足全栈研发、大数据研发、架构设计与项目管理等多个岗位&#xff0c;更主导过公司从市场到交付再到运营的全链条流程建设。在这漫长的职业生涯中&#xff0c;一个问题始终萦绕在我心头&…

Linux安装部署数据库:PostgreSQL14

Linux安装部署数据库&#xff1a;PostgreSQL14 一、安装环境1、虚拟机环境2、下载安装包 二、安装步骤1、在线安装 PGSQL2、离线安装 PGSQL3、源码安装 PGSQL 三、基本操作1、初始化配置2、数据库登录3、常用命令项 四、常见问题1、对用户 "postgres" 的对等认证失败…

App测试环境部署

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

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络 1. Scope4. 非地面网络背景介绍4.1 5G中的非地面网络4.2 非地面网络在5G中的用例4.3 卫星和空中接入网的架构4.4 卫星和空中接入网终端的特点4.5 空气/星载飞行器特性4.6 NTN的覆盖模式4.7 NTN网络架构选项4.8 频谱 5. 非地面网络应用场景5.1 应用场景概览5.2 属性介…

CHAPTER 14 Nonlinearity and Mismatc

CHAPTER 14 Nonlinearity and Mismatch 第6,7章我们介绍了两种非理想: 频率响应和噪声. 这一章我们介绍另外两种非理想现象: 非线性和失配. 我们首先定量化nonlinearity, 学习差分电路和反馈系统的非线性, 以及线性化技术. 然后学习差分电路中的失配和dc offset. 最后学习一些…

51单片机之蜂鸣器驱动

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

【C++】vector<string>-动态数组存储多个string

#1024程序员节 | 征文# //demo #include <iostream> #include <vector> #include <string>using namespace std; int main() {// 创建一个存储字符串的向量vector<string> Record;// 向向量中添加字符串Record.push_back("example");Record…

Node-RED的面板的认识及操作

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 文章引言 &#x1f4df; 面板…

深入探索:深度学习在时间序列预测中的强大应用与实现

引言&#xff1a; 时间序列分析是数据科学和机器学习中一个重要的研究领域&#xff0c;广泛应用于金融市场、天气预报、能源管理、交通预测、健康监控等多个领域。时间序列数据具有顺序相关性&#xff0c;通常展示出时间上较强的依赖性&#xff0c;因此简单的传统回归模型往往…

论文略读:Less is More: on the Over-Globalizing Problem in Graph Transformers

2024 ICML 主要观点&#xff1a;Graph Transformer 中的过全局化问题 (Over-Globalizing Problem) 当前 Graph Transformer 的注意力机制过度关注那些远端节点&#xff0c;而实际上包含了大部分有用信息的近端节点则被相对忽视了——>提出了一种新的采用协同训练的两级全局…

【Ubuntu】服务器系统重装SSHxrdpcuda

本文作者&#xff1a; slience_me Ubuntu系统重装操作合集 文章目录 Ubuntu系统重装操作合集1.1 系统安装&#xff1a;1.2 安装openssh-server更新系统包安装OpenSSH服务器检查SSH服务的状态配置防火墙以允许SSH测试SSH连接配置SSH&#xff08;可选&#xff09; 1.3 安装远程连…

力扣之612.平面上的最近距离

文章目录 1. 612.平面上的最近距离1.1 题目说明1.2 准备数据1.3 解法1.4 结果截图 1. 612.平面上的最近距离 1.1 题目说明 Point2D 表&#xff1a; ----------------- | Column Name | Type | ----------------- | x | int | | y | int | ----------------- (x, y) 是该表的…

微信小程序——消息订阅

首先用到的就是wx.requestSubscribeMessage接口。 注意&#xff1a;用户发生点击行为或者发起支付回调后&#xff0c;才可以调起订阅消息界面 requestSubscribeMessage() {uni.requestSubscribeMessage({tmplIds: [],//需要订阅的消息模板的id的集合&#xff0c;一次调用最多可…

阿里云用STS上传oss的完整程序执行流程图 和前端需要哪些参数uniapp

H5 微信小程序可用的前端直传阿里云OSS(STS临时凭证前端签名)直接下载插件 阿里云sts使用官方文档 下面是原理说明&#xff1a; 前端上传文件到阿里云OSS需要携带的具体参数&#xff1a; 从服务器获取的 STS 凭证&#xff1a; // 这些参数需要从你的后端服务器获取 {acc…