web前端之文档流、浮动、定位详解

news2024/12/29 8:50:32

目录

一、文档流

二、浮动

1.添加浮动

2.清除浮动

三、定位

1.相对定位

2.绝对定位


一、文档流

什么是文档流?

        ● 文档流指的是文档中的标签在排列时所占用的位置。 将窗体自上而下分成一行行 ,并在每

行中按从左至右的顺序排放标签,即为文档流。

        ● 也就是说在文档流中标签默认会紧贴到上一个标签的右边,如果右边不足以放下标签,标签

则会另起一行,在新的一行中继 续从左至右摆放。

        ● 这样一来每一个块标签都会另起一行,那么我们如果想在文档 流中进行布局就会变得比较

麻烦。

例如我们想让两个盒子并排存放在网页中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div class="main_box" style="width: 200px;height: 200px;background-color: red;">
			我是第一个盒子<br />
			你们好
		</div>
		<div class="second_box" style="width: 200px;height: 200px;background-color: aqua;">
			我是第二个盒子<br />
			你们好
		</div>
	</body>
</html>

但实际情况是如下:

我们该如何解决这种问题呢?

这就引出了下面所讲的浮动了

二、浮动

1.添加浮动

        所谓浮动指的是使标签脱离原来的文档流,在父标签中浮动起来。

        语法:float:none/left/right;(分别表示:不浮动、向左浮动、向右浮动)

        注:当一个块级标签浮动以后,宽度会默认是内容的宽度,所以当漂浮一个块级标签时我们都会为其指定一个宽度

当一个标签浮动以后,其下方的标签会上移。
浮动会使标签完全脱离文档流,也就是不再在文档中在占用位置标签浮
动以后即完全脱离文档流 , 这时不会再影响父标签的高度 , 也就是浮动标签
不会撑开父标签。

        这时,我们通过给盒子添加浮动,就可以实现上面我们想要的结果了:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.main_box{
				float: left;
			}
			.second_box{
				float: left;
			}
		</style>
	</head>
	<body>
		<div class="main_box" style="width: 200px;height: 200px;background-color: red;">
			我是第一个盒子<br />
			你们好
		</div>
		<div class="second_box" style="width: 200px;height: 200px;background-color: aqua;">
			我是第二个盒子<br />
			你们好
		</div>
	</body>
</html>

2.清除浮动

        但是我们会发现,当我们想继续添加第三个盒子时会导致被第一个盒子覆盖(因为第一个盒子脱离了文档流):

这时就需要我们为第三个盒子清除浮动了:

clear属性可以用于清除标签周围的浮动对标签的影响,其他标签的位置不发生变化。
可选值:
        left : 忽略左侧浮动
        right :忽略右侧浮动
        both :忽略全部浮动
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.main_box{
				float: left;
				}
			.second_box{
				float: left;
			}
			.third_box{
				clear: left;/*让第三个盒子忽略浮动*/
			}
		</style>
	</head>
	<body>
		<div class="main_box" style="width: 200px;height: 200px;background-color: red;">
			我是第一个盒子<br />
			你们好
		</div>
		<div class="second_box" style="width: 200px;height: 200px;background-color: aqua;">
			我是第二个盒子<br />
			你们好
		</div>
		<div class="third_box" style="width: 300px;height: 300px;background-color: pink;">
			我是第三个盒子<br />
			你们好
		</div>
	</body>
</html>

        效果如下:

三、定位

        相信大家在平时浏览网页经常会看到一些轮播图片,图片两侧还有半透明的小箭头供用户选

择图片。这样的功能就需要用到定位操作了

        定位的基本思想很简单,它允许你定义的标签相对于其正常位置,或者相对于父标签、另一

个标签甚至浏览器窗口本身而出现的位置。

1.相对定位

        相对定位是一个非常容易掌握的概念. 相对于它的起点进行移动,移动后原来的位置还被占用。

可以通过position:relative; 开启相对定位

left right top bottom四个属性来设置标签的偏移量。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.main_box{
				position: relative;/*开启相对定位*/
				left: 100px;
				}
		</style>
	</head>
	<body>
		<div class="main_box" style="width: 200px;height: 200px;background-color: blue;">
			我是第一个盒子<br />
			你们好
		</div>
	</body>
</html>

相对定位的特点
        1.当开启了标签的相对定位以后,而不设置偏移量时,标签不会发生任何变化
        2.相对定位是相对于标签在文档流中原来的位置进行定位
        3.相对定位的标签不会脱离文档流

2.绝对定位

        绝对定位是不占空间的,运用了绝对定位的标签会脱离原来的文档流,浮动起来,因此视觉

上会其他的标签重叠。

可以通过position: absolute; 开启绝对定位
left right top bottom四个属性来设置标签的偏移量
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.main_box{
				position: relative;
				width: 400px;
				}
				.butr{
					width: 20px;
					position: absolute;
					margin-left: 380px;
					margin-top: 120px;
					opacity: 0.5;
				}
				.butl{
					width: 20px;
					position: absolute;
					margin-top: 120px;
					opacity: 0.5;
				}
				.butr{
					right: 0px;
				}
				.butl{
					left: 0px;
				}
				img{
					width: 400px;
				}
		</style>
	</head>
	<body>
		<div class="main_box">
			<img src="img/aliyun.jpg" alt="" />
			<input type="button" value=">" class="butr"/>
			<input type="button" value="<" class="butl"/>
		</div>
	</body>
</html>

        这样,我们就完成了一个轮播图片的设计。效果如下:

绝对定位的特点:
        1.开启绝对定位,会使标签脱离文档流
        2.开启绝对定位以后,如果不设置偏移量,则标签的位置不会发生变化
        3.绝对定位是相对于离他最近的开启了定位的祖先标签进行定位(一般情况,开启了子标签 的绝对定位都会同时开启父标签的相对定位) 如果所有的祖先标签都没有开启定位,则会相对于浏览器窗口进行定位

        以上就是关于web前端css部分最后一点内容的补充,希望本篇文章内给大家带来帮助!

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

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

相关文章

智慧校园-学工管理系统总体概述

智慧校园学工管理系统是高等教育机构内部管理不可或缺的一部分&#xff0c;它通过集成信息技术&#xff0c;全面覆盖学生从入学至毕业的各类事务&#xff0c;旨在优化学生工作流程&#xff0c;强化管理效率&#xff0c;同时深化学生与学校间的互动&#xff0c;确保学生需求得到…

【红帽战报】6月RHCE考试喜报!

往期战报回顾&#xff1a; 点击查看【战报】5月RHCE考试喜报&#xff01;通过率100% 点击查看【战报】4月份红帽考试战报&#xff01; 点击查看【战报】PASS&#xff01;PASS&#xff01;2023年终来一波RHCE考试 微思网络-红帽官方授权合作伙伴&#xff01;面向全国招生&…

【华为战报】5月、6月HCIP考试战报!

华为认证&#xff1a;HCIA-HCIP-HCIE 点击查看&#xff1a; 【华为战报】4月 HCIP考试战报&#xff01; 【华为战报】2月、3月HCIP考试战报&#xff01; 【华为战报】11月份HCIP考试战报&#xff01; 【HCIE喜报】HCIE备考2个月丝滑通关&#xff0c;考试心得分享&#xff…

项目管理中常见的6种度量指标,你知道吗?

在项目管理中&#xff0c;为了有效地监控和控制项目的进展、成本、质量等方面&#xff0c;我们通常会采用一系列的度量指标。这些度量指标不仅可以帮助项目经理了解项目的当前状态&#xff0c;还能预测未来的趋势&#xff0c;从而作出相应的决策。以下是六种常见的项目度量数据…

基于大模型的Agent进行任务规划的10种方式(附代码和论文)

在 OpenAI AI 应用研究主管 Lilian Weng 的博客**《大语言模型&#xff08;LLM&#xff09;支持的自主式代理》**[1]中&#xff0c;将规划能力视为关键的组件之一&#xff0c;用于将任务拆解为更小可管理的子任务&#xff0c;这对有效可控的处理好更复杂的任务效果显著。 基于…

自适应蚁群算法优化的攀爬机器人的路径规划

大家好&#xff0c;我是带我去滑雪&#xff01; 攀爬机器人是一种能够在复杂环境中自主移动和攀爬的具有广阔应用前景的智能机器人&#xff0c;具有较强的应用潜力和广泛的研究价值。随着科技的不断发展&#xff0c;攀爬机器人在许多领域中的应用越来越广泛&#xff0c;例如建筑…

Python 面试【初级】

阐述以下方法 classmethod, staticmethod, property&#xff1f; 解释什么是lambda函数&#xff1f;它有什么好处&#xff1f;

phpMyAdmin 4.0.10 文件包含 -> getshell

phpMyAdmin 4.0.10 文件包含 -> getshell 前言&#xff1a;这里这个漏洞相对来说审计起来不是特别难&#xff0c;但是对于初学者还是有点挑战性的&#xff0c;从zkaq web课过来的小伙伴想挑战一下自己代码审计能力的话&#xff0c;可以直接跳到最后下载源码&#xff0c;聂风…

一键进阶ComfyUI!懂AI的设计师现在都在用的节点式Stable Diffusion

前言 _ 万字教程&#xff01;奶奶看了都会的 ComfyUI 入门教程 推荐阅读 一、川言川语 大家好&#xff0c;我是言川。 阅读文章 > ](https://www.uisdc.com/comfyui-3) 目前使用 Stable Diffusion 进行创作的工具主要有两个&#xff1a;WebUI 和 ComfyUI。而更晚出现的…

顶顶通呼叫中心中间件-透传uuid并且导入对端变量到本端(mod_cti基于Freeswitch)

一、配置拨号方案 win-ccadmin配置方法 点击拨号方案 -> 点击进入排队 -> 根据图中配置。如果不是排队转人工是机器人转人工那么就是在机器人那个拨号方案配置&#xff0c;并且需要配置在"cti_robot"之前即可 action"set" data"sip_h_X_tas…

【HTML03】HTML表单语法笔记,附带案例-作业

文章目录 表单概述一、表单容器&#xff08;form&#xff09;二、控件相关单词获取本次课程作业和案例 表单概述 允许用户输入信息&#xff0c;和提交信息的-收集用户信息。 表单&#xff1a;表单容器表单控件组成。 控件&#xff1a;输入框、单选按钮、多选、下拉框、多行文…

72V转12V非隔离DC/DC电源原理图+PCB源文件

资料下载地址&#xff1a;72V转12V非隔离DCDC电源原理图PCB源文件 电动车所用的非隔离DC/DC电源&#xff0c;采用BUCK电路&#xff0c;运行稳定&#xff0c;为已经在产品中使用的电路 1、原理图 2、PCB

2006年下半年软件设计师【上午题】试题及答案

文章目录 2006年下半年软件设计师上午题--试题2006年下半年软件设计师上午题--答案2006年下半年软件设计师上午题–试题

linux rocky9.2系统搭建sqle数据库审核平台

文章目录 前言一、环境准备?二、开始部署前言 关于SQLE SQLE 是由上海爱可生信息技术股份有限公司 开发并开源,支持SQL审核、索引优化、事前审核、事后审核、支持标准化上线流程、原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。 产品特色 支持通过插件的形式扩展…

使用 WebGL 创建 3D 对象

WebGL Demohttps://mdn.github.io/dom-examples/webgl-examples/tutorial/sample5/index.html 现在让我们给之前的正方形添加五个面从而可以创建一个三维的立方体。最简单的方式就是通过调用方法 gl.drawElements() 使用顶点数组列表来替换之前的通过方法gl.drawArrays() 直接…

docker 多网卡指定网卡出网

前言 宿主机中有多个网卡 ens160 192.168.4.23/20 内网通信用 ens192 10.31.116.128/24 出公网访问-1 ens193 10.31.116.128/24 出公网访问-2 现在需要不同容器中不同出网访问&#xff0c;举例 容器1 192.168.0.1/20 网段走宿主机 ens160网卡&#xff0c;否则全部走ens192 网…

从@Param注解开始,深入了解 MyBatis 参数映射的原理

系列文章目录 MyBatis缓存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 启动到SQL执行全流程 数据库操作不再困难&#xff0c;MyBatis动态Sql标签解析 Mybatis的CachingExecutor与二级缓存 使用MybatisPlus还是MyBaits &#xff0c;开发者应该如何选择&#xff1f; 巧…

Socket编程详解:FrmTCPServer与FrmTCPClient的双向对话

目录 预备知识 视频教程 项目前准备知识点 1、服务器端程序的编写步骤 2、客户端程序编写步骤 代码部分 1、服务端FrmServer.cs文件 2、客户端FrmClient.cs文件 3、启动文件Program.cs 结果展示 预备知识 请查阅博客http://t.csdnimg.cn/jE4Tp 视频教程 链接&#…

面经总结系列(六): 奇安信技术研究院算法工程师

&#x1f468;‍&#x1f4bb;作者简介&#xff1a; CSDN、阿里云人工智能领域博客专家&#xff0c;新星计划计算机视觉导师&#xff0c;百度飞桨PPDE&#xff0c;专注大数据与AI知识分享。✨公众号&#xff1a;GoAI的学习小屋 &#xff0c;免费分享书籍、简历、导图等&#xf…