CSS基础——盒子模型的一些属性概念

news2025/1/21 15:31:12

目录

display

visibility

overflow

文档流

元素在文档流中的特点

块元素

内联元素

浮动

float

浮动元素特点

清除浮动

clear

小练习

效果图

 具体实现

高度塌陷问题

BFC

特点

如何开启BFC

解决方案

本篇的最终练习

效果图如下:

具体实现 


display

通过display样式可以修改元素的类型。将一个内联元素变成一个块元素

可选值:

        inline:可以将一个元素作为一个内联元素显示;

        block:可以将一个元素作为一个块元素显示;

        inline-block:可以将一个元素作为一个行内块元素(使一个元素既有块元素特点,又有块元素标签特点,既可以设置宽高,又不会独自占有一行);

        none:这个元素不会被现实出来,不会占有位置,也就是隐藏元素;

visibility

可以用来设置元素的隐藏和显示状态

可选值:

        visible:默认值,元素会正常显示出来;

        hidden:元素会被隐藏起来,并且占有位置;

overflow

子元素默认是存在于父元素内容区中,子元素在理论上的最大可以和父元素内容区一致。如果子元素的大小超过了父元素的内容区,则会出现一种情况,就是超过父元素大小的的部分会显示在父元素内容区以外。超出这部分内容,我们称它为溢出部分。

父元素默认将溢出内容在外面显示。通过overflow可以设置父元素如何处理溢出的内容

可选值:

        visible:默认值,可见的。元素不会对溢出内容做任何处理,元素会在父元素以外的显示。

        hidden:溢出的内容会被修剪,不会显示。(一剪没))

        scroll:会为父元素添加滚动条,查看完整内容的时候需要拖动滚动条(无论内容是否溢出,他都会在水平和垂直方向添加滚动条)

        auto:这个很智能,他会根据需求来自动添加滚动条。(水平和垂直,哪个需要,那个显示)

文档流

文档流出在网页的最底层,他表示的就是文档中的一个位置。

文档指的就是网页。文档流就是网页中的一个位置(网页中的一层,也就是网页中最基础的一层)。

我们所创建的元素默认都是出在文档流中的。

元素在文档流中的特点

块元素

        1、块元素在文档流中会独占一行,块元素会从上到下布局排列

        2、块元素在文档流中的宽度,默认是父元素的100%,宽度值是auto。

        3、块元素在文档流中的高度,默认是被子元素内容撑开的。

当元素的宽度为auto的时候,指定的内边距不会影响可见框的大小,而是会去自动修改宽度,自适应内边距     

内联元素

        1、内联元素在文档流中只会占据自身大小,内联元素会从左到右布局排列。如果一行不足以容纳全部内联元素,就会自动换行,并且是从左到右排列布局。

        2、内联元素在文档流中,内联元素的高度和宽度默认是被内容撑开

浮动

上面我们说了,块元素在文档流中默认是垂直排列的。

假如有三个div我们想让他水平排列,如何实现呢?

如果希望块元素在页面水平排列,可以使块元素脱离文档流!!!!

使用float来使的元素浮动,也就达到了脱离文档流的目的

float

当我们为一个元素设置了浮动以后,float属性是一个非none的值。

可选值:

        none:默认值,元素默认在文档流中进行拍了

        left:元素会立即进行脱离文档流,想页面的左侧进行浮动

        right:元素会立即进行脱离文档流,想页面的右侧进行浮动

浮动元素特点

1、元素会立即脱离文档流,元素脱离文档流易后,他下面的元素会立即向上浮动。

2、元素浮动以后会尽量想页面的坐上或者右上浮动。直到遇到父元素的边框或者其他浮动元素边框就会停止。

3、如果我们的浮动元素上边没有浮动块元素,则浮动元素不会向上超过块元素。

4、浮动的元素不会超过他的兄弟元素,顶多会和他的兄弟元素一边齐

5、浮动的元素不会盖住文字,文字他会去自动环绕在浮动元素的周围。我们在文章中使用这个特性来设置文字环绕图片。

6、块元素脱离文档流之后,高度和宽度不会占用父元素的全部,而是被其内容撑开。

7、内联元素脱离文档流以后,会变成块元素。(也就是脱离文档流制后,全部看做块元素)

清除浮动

有时候我们会遇到这种需求:就是当一个元素浮动的时候,另一个元素不要受到他的影响。也就是说:我们希望清除掉其他元素浮动对当前元素产生的一个影响。此时我们就可以使用clear来实现。

clear

他就是可以用来清除其他浮动元素

可选值:

         none:不清楚浮动;默认值

        left:清除左侧浮动元素对当前元素的影响

        right:清除右侧浮动元素对当前元素的影响

        both:清除两侧浮动元素对当前元素的影响,实际上他是清除对他影响最大的元素

清除浮动以后,元素会回到其他元素浮动之前的位置。

小练习

讲到盒子这里,基本的布局就能够实现了, 我们来做一下,简单的联系。

效果图

实现如下图所示的布局, 大概如下图,小伙伴们可以自由发挥一下:

注意:要自己先实现,再看看我们的实现的代码,大家可以看看有多种实现方式

 具体实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			*{
				margin: 0;
			}
			body{
				height: 100%;
			}
			html{
				height: 100%;
			}
			.box1{
				width: 90%;
				height: 10%;
				background-color: red;
				margin: 0 auto;
			}
			.content{
				width: 90%;
				height: 80%;
				background-color: yellow;
				margin: 15px auto;
				
			}
			.content-left{
				float: left;
				width: 10%;
				height: 90%;
				background-color: orange;
				margin: 5% auto;
				
			}
			.content-center{
				float: left;
				width: 79%;
				height: 90%;
				background-color: cornflowerblue;
				margin: 5% 0.5%;
				
			}
			.content-right{
				float: right;
				width: 10%;
				height: 90%;
				background-color: orchid;
				margin: 5% auto;
			}
			.footer{
				width: 90%;
				height: 10%;
				background-color: green;
				margin: 0 auto;
			}
			
		</style>
	</head>
	<body class="body">
		<div class="box1">1</div>
		<div class="content">
			<div class="content-left">1</div>
			<div class="content-center">2</div>
			<div class="content-right">3</div>
			
		</div>
		<div class="footer">脚</div>
	</body>
</html>

高度塌陷问题

文档流中,父元素的高度默认是被子元素撑起来的,换句话说,子元素有多高,父元素就会有多高。(我们可以简单的理解为无论你多大,在父亲眼中,永远是孩子)

当为子元素设置浮动后,子元素已经完全脱离文档流,这个时候就会出现子元素无法撑起父元素的高度,那么就导致了父元素的高度塌陷。当父元素高度塌陷以后,父元素下面的所有元素都会向上移动,此时就会出现页面布局的改变,严重的将导致页面无法正常显示。

因为这个事故,所以,要避免出现这种事故。

BFC

W3C中,页面中元素都有一个隐藏的属性叫做Block Formatting Context,简称BFC,该属性可以设置关闭或者打开,默认的是关闭属性

特点

开启BFC以后,元素的特点如下;

1、父元素的垂直外边距不会和子元素重叠

2、开启BFC的元素不会被浮动元素所覆盖

3、BFC的元素可以包含浮动的子元素

如何开启BFC

1、设置元素浮动

        这种开启方式,虽然可以撑开父元素,但是会导致父元素的宽度丢失,并且使用这种方式会导致下边的元素上移。

2、设置元素绝对定位

        同上

3、设置元素的inline-block

        这种开启方式,虽然可以撑开父元素,但是会导致父元素的宽度丢失

4、将元素的overflow设置为一个非visible的值

        注意:当给元素设置了宽度时默认就开启了haslayout

        但是IE6及以下的版本,不支持BFC功能,所使用这种方式要慎重!但是IE6中有这么一个属性haslayout,该属性和BFC类似,所以IE6中可以通过开启haslayout实现;

        直接将zoom设置为1即可开启haslayout

        zoom标识放大的意思,后面的值标识放大几倍

解决方案

1、我们可以将父元素高度固定一个值这,这样就会避免父元素的塌陷问题出现了。

        不过这样的弊端就是,无法做到随子元素的高度而改变了。

2、结合BFC,选择上述第4条开启BFC功能

3、可以再高度他闲的父元素的最后添加一个空div,因为这个div是没有浮动的,所以他可以撑开父元素的高度,所以只要给这个空div清除浮动即可解决高度塌陷。

这种副作用就是会增加一些冗余的div结构。

4、结合after伪类以及第3步骤来清除浮动。(IE6中不支持after伪类)示例代码如下:.

box:after{

        /* 添加一个内容*/

        content:"";

        /* 转化为一个块元素*/

        display:block;

        /* 清除两侧的浮动*/

        clear:both;

}
/* 解决IE6中的兼容问题*/
box{
    zoom:1
}

本篇的最终练习

本章的最终练习是在上面的联系基础上增加一个导航条。

效果图如下:

具体实现 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			*{
				margin: 0;
			}
			body{
				height: 100%;
			}
			html{
				height: 100%;
			}
			.box1{
				width: 90%;
				height: 10%;
				background-color: red;
				margin: 0 auto;
			}
			.content{
				width: 90%;
				height: 80%;
				background-color: yellow;
				margin: 15px auto;
				
			}
			.content-navigation{
				width: 100%;
				height: 5%;
				overflow: hidden;
				margin: 1% auto;
			}
		
			.content-nav{
				float:left;
				width: 25%;
				height: 100%;
				max-width: 0 auto;
				background-color: aqua;
				text-align: center;
				padding: 1% auto;
			}
			.content-nav a{
				font-size: 25px;
				text-decoration: none;
				font-weight: bold;
			}
			.content-nav a:hover{
				color: red;
			}
			.content-left{
				float: left;
				width: 10%;
				height: 90%;
				background-color: orange;
				margin: 0% auto;
				
			}
			.content-center{
				float: left;
				width: 79%;
				height: 90%;
				background-color: cornflowerblue;
				margin: 0 0.5%;
				
			}
			.content-right{
				float: right;
				width: 10%;
				height: 90%;
				background-color: orchid;
				margin: 0 auto;
			}
			.footer{
				width: 90%;
				height: 10%;
				background-color: green;
				margin: 0 auto;
			}
			
		</style>
	</head>
	<body class="body">
		<div class="box1">1</div>
		<div class="content">
			<div class="content-navigation">
				<div class="content-nav"><a href="#">首页</a></div>
				<div class="content-nav"><a href="#">新闻</a></div>
				<div class="content-nav"><a href="#">加入我们</a></div>
				<div class="content-nav"><a href="#">关于</a></div>
			</div>
			<div class="content-left">1</div>
			<div class="content-center">2</div>
			<div class="content-right">3</div>
			
		</div>
		<div class="footer">脚</div>
	</body>
</html>

好了,关于盒子模型的概念以及练习就到这里。

欢迎大家点击下方卡片,关注《coder练习生》

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

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

相关文章

ChatGPT原理解释

写了一本介绍ChatGPT原理的课程 结构如下 01、介绍ChatGPT及其原理 1.1 ChatGPT的概述 1.2 什么是自然语言处理&#xff08;NLP&#xff09; 1.3 深度学习与NLP的关系 1.4 GPT模型的介绍 02、GPT原理探讨 2.1 GPT模型的输入与输出 2.2 GPT模型的结构 2.3 GPT模型的预训练方法…

flv怎么无损转换成mp4格式,3大超级方法分享

flv格式是目前在视频分享媒体播放网站上广泛使用的一种视频文件格式&#xff0c;可以在网站窗口中直接播放&#xff0c;这类视频文件还能够有效保护版权。但是有些时候我们可能需要将flv格式的视频转换为其他格式&#xff0c;比如mp4。但是该怎么操作呢&#xff1f; 其实有很多…

数据挖掘:汽车车交易价格预测(测评指标;EDA)

目录 一、前期工作 1.赛题介绍 赛题分析&#xff1a; 分类和回归问题的评价指标有如下一些形式&#xff1a; &#xff08;下文2.1和2.2会用到&#xff09; 2.数据简介 3.探索性分析-EDA介绍 二、实战演练 2.1分类指标评价计算示例 2.2回归指标评价计算示例 2.3数据探索…

抠图,扣掉背景图片

Remove Image Backgrounds, Free HD, No Signup - Pixian.AI https://pixian.ai/ 从电脑本地选取图片&#xff0c;然后会自动扣掉背景&#xff0c;点击DOWNLOAD就可以了 第一个&#xff1a;Pixian.AI 这是一款国外的在线抠图网站&#xff0c;把需要扣除背景的图片拖拽进来&am…

简单的了解下 Fetch API 的工作原理

简介 Fetch API是一种现代的Web API&#xff0c;提供了一种异步获取网络资源的方法。由于其简单性、灵活性和一致性&#xff0c;它已经成为Web应用程序中获取数据和资源的流行选择。在本文中&#xff0c;我们将深入探讨Fetch API的核心特性&#xff0c;并了解其工作原理。 Fetc…

Windows逆向安全(一)之基础知识(七)

汇编C语言类型转换 类型转换 类型转换的使用场景 类型转换一般为由数据宽度小的转换成数据宽度大的&#xff0c;不然可能会有高位数据被截断的现象&#xff0c;引起数据丢失 需要一个变量来存储一个数据&#xff0c;刚开始这个数据的数据宽度较小&#xff0c;后来发现存不下…

什么是UML?

文章目录 00 | 基础知识01 | 静态建模类图对象图用例图 02 | 动态建模时序图通信图状态图活动图 03 | 物理建模构件图部署图 UML&#xff08;Unified Model Language&#xff09;&#xff0c;统一建模语言&#xff0c;是一种可以用来表现设计模式的直观的&#xff0c;有效的框图…

【图像分割】Grounded Segment Anything根据文字自动画框或分割环境配置和基本使用教程

1 环境配置 要求&#xff1a;python>3.8, pytorch>1.7, torchvision>0.8 官方地址&#xff1a;https://github.com/IDEA-Research/Grounded-Segment-AnythingMarrying Grounding DINO with Segment Anything & Stable Diffusion & BLIP & Whisper &am…

命运坎坷的保定县

保定的词语分解 保护而安定之。诗小雅天保&#xff1a;“天保定尔&#xff0c;亦孔之固。”谓稳固地保有。 晋 陆云 大将军宴会被命作诗&#xff1a;“皇皇帝祜&#xff0c;诞隆骏命。四祖正家&#xff0c;天禄保定。” 保定府&#xff1f;保定县&#xff1f; 今天提起“保定…

将“每日造型”变成长久习惯,戴森Airwrap™美发棒为何成为最好的“美丽投资”?

做头发、换发型是一个大工程&#xff0c;这几乎成了一种固定印象。虽然卷发棒已成为几乎“人手必备”的头发造型工具&#xff0c;但使用起来往往“现实很骨感”&#xff0c;不是使用频次极低&#xff0c;就是被束之高阁&#xff0c;每天都自己做头发换造型&#xff0c;只能是一…

陶泓达:4.19黄金原油早间精准策略!

黄金方面&#xff1a; 周二(4月18日)美市早盘&#xff0c;现货黄金一度跌至1991.05美元低点&#xff0c;但随后迅速拉升近20美元&#xff0c;向上触及2010.71美元高点&#xff0c;短线走出V型反转行情。本周&#xff0c;美国经济日历上没有太多关键数据会影响黄金和美元。因此&…

docker的数据卷详解

数据卷 数据卷是宿主机中的一个目录或文件&#xff0c;当容器目录和数据卷目录绑定后&#xff0c;对方修改会立即同步 一个数据卷可以同时被多个容器同时挂载&#xff0c;一个容器也可以被挂载多个数据卷 数据卷作用&#xff1a;容器数据持久化 /外部机器和容器间接通信 /容器…

leetCode算法第二天

好好刷刷算法题&#xff0c;提高自己的编码能力。 文章目录 将整数转为罗马数字将罗马数字转为整数编写一个函数来查找字符串数组中的最长公共前缀电话号码的字母组合 将整数转为罗马数字 leetcode链接&#xff1a;https://leetcode.cn/problems/integer-to-roman/ 解题思路…

施工阶段如何应用BIM技术,建模助手有话说

​近些年来&#xff0c;越来越多的建筑项目采用BIM来提升管理水平和品质&#xff0c;特别在施工阶段&#xff0c;通过BIM技术可以将施工现场3D模型与施工进度链接&#xff0c;超前模拟施工情况&#xff0c;完成各种精细化施工方案&#xff0c;除了保障施工工作顺利推进&#xf…

GitHub Copilot 快速入门

GitHub Copilot 是 AI 结对程序员。 可以使用 GitHub Copilot 在编辑器中获取整行或整个函数的建议。 1. 简介 让我们首先了解一些关于 GitHub Copilot 的内容。 这是 GitHub 和 OpenAI 的合作成果。 Copilot 是一种基于人类程序员编写的数十亿行代码训练的语言模型。 &#…

【WSN定位】基于RSSI的加权质心定位算法-Matlab代码

文章目录 1. 原始质心定位算法2. 基于RSSI的加权质心定位算法基本思想3. 基于RSSI的加权质心定位算法流程图4. 部分代码展示5. 运行结果展示6. 资源获取 1. 原始质心定位算法 可参考质心定位算法 2. 基于RSSI的加权质心定位算法基本思想 传统的质心算法在求解过程中只是将未…

网络协议-加密和HTTPs证书

目录 对称加密和非对称加密 加密解密 加密方法/解密方法 对称加密/非对称加密 非对称加密&#xff08;秘钥对&#xff09; 思考 解决信任问题 证书体系 算法如何验证证书就是Alibaba 实际的证书体系 ​编辑 常见算法介绍 DES&#xff08;Data Encryption Standard&…

量子力学、波函数与量子计算:揭开宇宙微观奥秘的神奇之门

在一个遥远的星球&#xff0c;生活着一群拥有超自然力量的智慧生物。他们能够随心所欲地让物体在空间瞬移&#xff0c;甚至能够预测未来。有一天&#xff0c;一位地球科学家意外穿越到了这个星球。经过一番了解&#xff0c;科学家惊奇地发现&#xff0c;他们所掌握的这种神奇力…

ai智能文章改写软件-ai智能文案自动生成

AI同义转换&#xff0c;掀起内容创作新革命&#xff01; 如今&#xff0c;在数字化时代&#xff0c;内容创作日益受到重视&#xff0c;越来越多的人致力于网站排名优化、内容创意提升以及用户体验改善。然而&#xff0c;吸引用户阅读和提供有价值的信息并不那么容易。因此&…

云原生个人线路 K8s本地集群搭建(实操)

声明&#xff1a;此文章为博主个人学习记录&#xff0c;仅供学习和交流&#xff0c;如有侵权请联系博主。 kubernetes本地集群部署 三种方式 minikube 集群模拟器 裸机 kindminikube Docker客户端部署 裸机 环境 虚拟机 VMware 三台centos7 每台2g内存 2cpu 30g硬盘 k8s-mas…