盒子是什么? -- 第四课

news2024/10/1 15:20:24

文章目录

  • 前言
  • 一、盒子是什么?
  • 二、元素介绍
    • 1.边框 - border
    • 2.内边距 - padding
    • 3. 外边距属性 -- margin
  • 三、拓展知识
    • 1.块元素垂直外边距的合并
    • 2. 嵌套块元素垂直外边距的合并
  • 四、背景属性
  • 五、元素的浮动
    • 1.浮动
    • 2.清除浮动
    • 3.元素定位
    • 4. 特殊定位 -- 黏性定位
    • 5. z-index层叠等级属性
  • 总结


前言

前面一节我们学习了css 的基础用法,接下来让我们接着来了解一个重要的概念 – 盒子模型!


一、盒子是什么?

盒子模型是CSS中的一种概念,用于描述HTML元素的布局和呈现方式。它将每个HTML元素视为一个矩形的盒子,由四个边框(border)、内边距(padding)、外边距(margin)和内容(content)组成。

  1. 边框(border)是盒子的最外层,用来包裹内容和内边距,在边框内部是盒子的内容。

  2. 内边距(padding)是边框和内容之间的区域,用于控制内容与边框之间的距离。

  3. 外边距(margin)是盒子与其他盒子之间的距离,用于控制盒子与盒子之间的间隔。

  4. 内容(content)是盒子中实际显示的内容,可以包含文字、图片、其他HTML元素等。

通过盒子模型,我们可以使用CSS属性来控制边框的样式、颜色和宽度、内边距的大小、外边距与其他盒子之间的空间关系,以及调整内容的布局和排列方式。了解和理解盒子模型对于CSS的学习和网页布局非常重要,它使我们能够更好地控制和定位HTML元素,实现各种样式和布局效果。

二、元素介绍

1.边框 - border

  1. border-width:设置边框的宽度,可以使用具体的单位值(如px、em)或预设值(thin、medium、thick)。

  2. border-style:设置边框的样式,常见的样式包括:solid(实线)、dotted(点线)、dashed(虚线)、double(双线)等。

  3. border-color:设置边框的颜色,可以使用具体的颜色值(如#FF0000、red)或预设值(transparent、inherit)。

  4. border:可以同时设置边框的宽度、样式和颜色。例如:border: 1px solid #000; 表示边框宽度为1像素,样式为实线,颜色为黑色。

  5. border-radius:设置边框的圆角效果,可以使用具体的单位值或百分比值。例如:border-radius: 5px; 表示添加一个5像素的圆角。

  6. border-top、border-left、border-bottom、border-right:分别设置盒子的上、左、下、右边框的样式、宽度和颜色。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 200px;
            Height: 200px;
            background-color:antiquewhite;

            /* 边框 */
            /* 综合设置 */
            /* border: 5px dashed red; */

            /* 单独设置上边框 */
            /* border: 5px dashed red; */
            
            /* 单独设置 */
            border-style: dashed;
            border-color: red;
            border-width: 5px;
        }
    </style>
</head>
<body>
    <div>

    </div>
</body>
</html>

2.内边距 - padding

内边距属性(padding)是CSS中用于控制盒子内边距大小的属性。它定义了盒子内容与边框之间的空间。

  1. padding属性可以使用具体的单位值(如px、em)或百分比值来指定内边距的大小。例如,padding: 10px; 表示在盒子的内容周围添加10像素的内边距。

  2. padding属性可以分别指定上、右、下、左(顺时针)四个方向的内边距,也可以使用缩写形式同时指定四个方向的内边距。例如,padding-top: 10px; 表示只为盒子的顶部添加10像素的内边距。而padding: 10px 20px 10px 20px; 则表示上、右、下、左四个方向的内边距分别为10像素、20像素、10像素、20像素。

  3. 通过调整padding的值,我们可以控制盒子内部内容与边框之间的间距。这对于调整页面布局和美化设计有很大的帮助。比如,通过增加内边距可以在盒子内部创建一定的空隙,使内容与边框之间有一定的距离,可以增加页面的可读性和美观性。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            /* 边框也会影响盒子的大小 */
            border: 5px dashed black;
            text-align: center;
            /* 内边距 - 是会影响盒子大小的*/
            padding: 10px;
            
            /* 上 右 下 左 -- 顺时针 */
            /* 上 左-右 下 -- 三个数值 */
            /* 上-下 左-右 -- 两个数值 */
            padding: 10px 20px 30px 40px;
        }
    </style>
</head>
<body>
    <div>
        这是一个div标签
    </div>
</body>
</html>

3. 外边距属性 – margin

外边距属性(margin)用于设置元素的外边距。外边距是指元素与其他元素之间的间距。

外边距属性有以下几个常用的值:

  1. margin-top:设置元素的上外边距。
  2. margin-right:设置元素的右外边距。
  3. margin-bottom:设置元素的下外边距。
  4. margin-left:设置元素的左外边距。
  5. margin:用于同时设置四个方向的外边距。例如,margin: 10px; 表示所有方向都设置为 10px 的外边距。
  6. margin:auto;:将元素水平居中

外边距属性的值可以使用绝对单位(如像素(px)、厘米(cm))或相对单位(如百分比(%)、em、rem)进行设置。

外边距还可以有负值,用于将元素向相反的方向移动。

外边距属性也可以应用于其他布局属性,例如浮动元素和定位元素,我们后面会来专门介绍。

注意:外边距不会影响元素的宽度和高度,只会影响元素与其他元素之间的间距。
tips: 在开发的时候一般会首先清除内外边距,方便后面的操作

<style>
	body{
	    margin: 0;
	    padding: 0;
	    /* 清除列表的样式 */
	    list-style: none;
	}
</style>

三、拓展知识

1.块元素垂直外边距的合并

在普通文档流中(没有对元素应用浮动和定位),当两个相邻或嵌套的块元素相遇时,其垂直方向的外边距会自动合并,发生重叠。这种现象被称为元素垂直外边距的合并

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }

        /* 上下外边距如果相同就会合并,如果不相同以大的为主 */
        .box1{
            width: 200px;
            height: 200px;
            background-color: antiquewhite;
            margin-bottom: 100px;
        }
        .box2{
            width: 200px;
            height: 200px;
            background-color: brown;
            margin-top: 100px;
        }
    </style>
</head>
<body>
    <!-- 垂直外边距 -->
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

2. 嵌套块元素垂直外边距的合并

对于两个嵌套关系的块元素,如果父元素没有上内边距及边框,则父元素的上外边距会与子元素的上外边距发生合并,合并后的外边距为两者中的较大者。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        /* 
            1.父盒子有外边距,整体都会下去
            2.父盒子和子盒子都有外边距,以大的为标准
            3.只有子盒子有外边距,整体也都会下去
        */
        .box1{
            width: 400px;
            height: 400px;
            background-color: antiquewhite;
            margin-top: 50px;
        }
        .box2{
            width: 200px;
            height: 200px;
            background-color: brown;
            /* 以大的边距为主 */
            margin-top: 100px;
        } 
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
</body>
</html>

四、背景属性

在CSS中,不仅可以将网页元素的背景设置为某一种颜色,还可以将图像作为网页元素的背景,通过background-image属性实现。

  1. background-color:设置背景颜色。
  2. background-image:设置背景图片。
  3. background-repeat:设置背景图片的重复方式,可以是repeat(默认,水平和垂直方向都重复)、repeat-x(水平方向重复)、repeat-y(垂直方向重复)或no-repeat(不重复)。
  4. background-position:设置背景图片的位置。可以使用关键字(如left、center、right、top、bottom)或像素(px)来定位。
  5. background-size:设置背景图片的尺寸。可以是具体尺寸(如200px 100px)或关键字(如cover、contain)。
  6. background-attachment:设置背景图片的滚动方式。可以是fixed(固定不动)或scroll(随页面滚动)。
  7. background-origin:设置背景图片的起始位置。可以是padding-box(从内边距开始显示)或border-box(从边框开始显示)。
  8. background-clip:设置背景图片的剪裁方式。可以是border-box(剪裁到边框),padding-box(剪裁到内边距)或content-box(剪裁到内容区域)。
  9. 背景属性的值可以是单个值(如background-color: red;),也可以是多个值,多个值之间用空格分隔(如background: url(image.jpg) repeat-x top left;)。

需要注意的是,设置背景图片时需要指定图片的路径,并确保图片文件存在。同时,背景属性可以叠加使用,多个属性设置在一起可以实现更丰富的背景效果。

五、元素的浮动

初学者在设计一个页面时,通常会按照默认的排版方式,将页面中的元素从上到下——罗列。为元素设置浮动,可以使页面元素变得整齐有序。下面,将对元素的浮动进行详细讲解。

1.浮动

元素的浮动是指将元素从常规文档流中脱离出来,并根据指定的方向进行移动。浮动元素会像漂浮在其他元素上方一样显示,可以左浮动、右浮动或者不浮动。常用的浮动属性有float:left、float:right和float:none。

浮动元素的特点:

  1. 浮动元素会尽可能地向左或向右移动,直到其外边界与包含块(容器)或其他浮动元素的外边界相接触。
  2. 浮动元素不会覆盖之前的浮动元素,而是会尽可能地占据剩余的空间。
  3. 浮动元素不会影响其他非浮动元素的布局,但会影响其他浮动元素的位置。

浮动元素常用的应用场景包括:

  1. 实现多列布局,比如网页导航栏、新闻列表等。
  2. 实现图片和文字环绕效果。
  3. 实现浮动定位效果,将元素固定在页面的某个位置。
    需要注意的是,浮动元素脱离文档流后可能会导致父元素无法撑开高度,从而影响页面布局。可以使用clearfix技巧来解决这个问题,或者使用其他布局方式来避免使用浮动。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1{
            width: 400px;
            height: 400px;
            background-color: antiquewhite;
            /* 
                设置浮动 -- 脱离标准文档流,相当于浮起来了,这样原来的位置就空出来了 -- 浮起来之后就不会独占一行了 
                如果对行内元素添加了浮动,行内元素就拥有了行内块元素的特性
                浮动主要是用来调整盒子的位置
                行内块除了调整位置还有其他的作用 
            */
            float: left;
        }
        .box2{
            width: 600px;
            height: 500px;
            background-color: aqua;
            /* 取消浮动之后块元素还是独占一行 */
            /* float: left; */
        }        
        .box3{
            width: 600px;
            height: 100px;
            background-color:yellowgreen;
            float: left;
        }
        .nav1{
            width: 200px;
            height: 200px;
            background-color:pink;
            float: left;
        }
        .nav2{
            width: 200px;
            height: 200px;
            background-color:green;
            float: right;
        }
    </style>
</head>
<body>
    <!-- 
        标准文档流
        1.块元素 -- 独占一行
        2.行内元素 -- 不会独占一行
        3.行内块元素 -- 不会独占一行
    -->
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>

    <span class="nav1">123</span>
    <span class="nav2">456</span>
</body>
</html>

2.清除浮动

由于浮动元素不再占用原文档流中的位置,所以会对页面中其他元素的排版产生影响,如果要避免这种影响,就需要对元素清除浮动。

  1. 空标记:在浮动元素之后添加空标记,并对该标记应用"clear:both"样式,可清除浮动。这个空标记可以为<div>、<p>、<hr/>等任何块标记。
  2. overflow:"overflow:hidden;”样式,也可以清除浮动对该元素的影响,该方法弥补了空标记清除浮动的不足。

请添加图片描述
3. after伪对象:使用after伪对象也可以清除浮动,但是该方法只适用于IE8及以上版本浏览器和其他非IE浏览器。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 1000px;
            /* 大盒子里面有很多的小盒子,因此不应该被赋予高度 */
            /* height: 400px; */
            border: 2px dashed black;
            background-color: aqua;
            margin: auto;
            /* 清除浮动 */
            overflow: hidden;
        }
        .test1{
            width: 500px;
            height: 400px;
            background-color: yellow;
            float: left;
        }
        .test2{
            width: 500px;
            height: 400px;
            background-color: violet;
            float: left;
        }
        .footer{
            height: 200px;
            background-color: turquoise;
        }
        /* 清除浮动 */
        /* .clear{
            clear: both;
        } */
    </style>
</head>
<body>
    <div class="box">
        <div class="test1"></div>
        <div class="test2"></div>
        <div class="clear"></div>
    </div>
    <div class="footer"></div>
</body>
</html>

3.元素定位

元素的定位是指通过设置元素的位置属性(position)来控制元素在页面中的位置。常用的定位属性有:static、relative、absolute和fixed。

  1. static(默认值):元素根据常规文档流进行布局,不受定位属性的影响。

  2. relative:相对定位。元素相对于其正常位置进行定位,通过设置top、right、bottom和left属性来调整元素的位置。相对定位不会脱离文档流,其他元素的布局会受到影响。

  3. absolute:绝对定位。元素相对于最近的已定位祖先元素(父元素或更高级别的祖先元素)进行定位,如果没有已定位的祖先元素,则相对于文档的body元素进行定位。通过设置top、right、bottom和left属性来调整元素的位置。绝对定位会脱离文档流,不会影响其他元素的布局。

  4. fixed:固定定位。元素相对于浏览器窗口进行定位,始终保持在同一个位置,即使页面滚动。通过设置top、right、bottom和left属性来调整元素的位置。固定定位会脱离文档流,不会影响其他元素的布局。

需要注意的是,定位属性的值只有在设置为relative、absolute或fixed时才会产生效果。对于定位属性为relative或absolute的元素,可以通过设置z-index属性来控制元素的层级关系,z-index值较大的元素会覆盖在z-index值较小的元素上方。

定位可以用于实现一些特殊的布局效果,比如悬浮窗口、弹出菜单等。但过度使用定位可能会导致页面结构复杂,不易维护,所以在使用时需要谨慎考虑。

4. 特殊定位 – 黏性定位

黏性定位(sticky position)是CSS3中新增的一种定位方式,它是相对于普通文档流中的定位元素进行定位的,但是在滚动时会受到约束,可以在指定的位置“粘”住。

黏性定位有如下特点:

  1. 元素在滚动之前表现为相对定位,跟随普通文档流进行布局。
  2. 当滚动到指定位置时,元素会固定在指定位置,即成为固定定位。
    当滚动超出指定位置时,元素会恢复为相对定位,跟随普通文档流进行布局。
  3. 使用黏性定位需要设置元素的position属性为sticky,并通过top、bottom、left、right等属性来指定元素在滚动到指定位置时的偏移量。例如:
.sticky-element {
  position: sticky;
  top: 100px; /* 指定元素在滚动到距离顶部100px的位置时固定 */
}

5. z-index层叠等级属性

  1. 定位导致重叠:当对多个元素同时设置定位时,定位元素之间有可能会发生重叠,如图所示。
  2. 解决重叠问题:z-index可以调整重叠定位元素的堆叠顺序,其取值可为正整数、负整数和0。z-index的默认值是0。

总结

css的基础讲解到这里就结束了,能坚持学到这里的朋友们都是对编程有着一定的兴趣的,希望我们在之后的时间中继续携手共进,提升自我!

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

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

相关文章

Python selenium库学习使用实操二

系列文章目录 Python selenium库学习使用实操 文章目录 系列文章目录前言一、模拟登录二、表单录入 前言 在上一篇文章中&#xff0c;我们完成Selenium环境的搭建&#xff0c;和简单的自动化。今天继续深入学习。今天的目标是完成模拟登录&#xff0c;和表单录入。 一、模拟登…

什么是网络准入控制系统?2024年有哪些好用的网络准入控制系统?

网络准入控制系统&#xff08;Network Access Control, NAC&#xff09;是一种网络安全解决方案&#xff0c;旨在确保只有符合特定安全策略的设备和用户才能访问网络资源。NAC系统通过在设备连接到网络之前对其进行身份验证、授权和健康状态检查&#xff0c;从而防止未经授权的…

YOLOv11改进 | 注意力篇 | YOLOv11引入GAM注意力机制

1.GAM介绍 摘要&#xff1a;为了提高各种计算机视觉任务的性能&#xff0c;人们研究了各种注意机制。然而&#xff0c;现有的方法忽略了保留通道和空间信息以增强跨维交互的重要性。因此&#xff0c;我们提出了一种通过减少信息减少和放大全球交互表示来提高深度神经网络性能的…

vue3 实现拖拽排序效果 sortablejs

效果图 依赖安装 npm i sortablejs -S <template><div class"warp"><div class"parent-box" v-for"pItem in sortData" :key"pItem.name"><h2 class"parent-name">{{ pItem.name }}</h2>&l…

程序计数器(学习笔记)

程序计数器是一块较小的内存空间&#xff0c;它的作用可以看做是当前线程所执行的字节码的信号指示器&#xff08;偏移地址&#xff09;&#xff0c;Java编译过程中产生的字节码有点类似编译原理的指令&#xff0c;程序计数器的内存空间存储的是当前执行的字节码的偏移地址 因为…

唱响红色志愿,赞歌献给祖国——杭州建德市庆祝中华人民共和国成立75周年联欢盛宴纪实

作者&#xff1a;华夏之音/李望 通讯员&#xff1a;王江平 9月30日上午&#xff0c;金桂的香气与红旗的鲜艳交相辉映&#xff0c;杭州建德市党群服务中心、建德市新时代文明实践中心内洋溢着一股浓厚的节日氛围。在这里&#xff0c;一场名为“唱响红色志愿、赞歌献给祖国”的联…

企业架构系列(15)ArchiMate第13节:战略视角

战略视角提供了对企业高层战略方向和构成的不同视角建模&#xff0c;使建模者能够专注于某些特定方面。 一、战略视角概览 战略视角主要包括&#xff1a; 战略视角&#xff1a;提供企业战略、能力、价值流和资源以及预期成果的高层概述。能力地图视角&#xff1a;提供企业能力…

MySQL基础篇 part1

为什么使用数据库和数据库基本概念 想在vscode用markdown了&#xff0c;为什么不直接拿pdf版本呢&#xff1f; DB:数据库(Database) 即存储数据的“仓库”&#xff0c;其本质是一个文件系统。它保存了一系列有组织的数据。 DBMS:数据库管理系统(Database Management System)…

Oracle控制文件全部丢失如何使用RMAN智能恢复?

1.手动删除所有控制文件模拟故障产生 2.此时启动数据库发现控制文件丢失 3.登录rman 4.列出故障 list failure; 5.让RMAN列举恢复建议 advise failure; 6.使用RMAN智能修复 repair failure;

当AI遇上金融科技,创新业务场景和案例涌现

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 在这个信息爆炸的时代&#xff0c;我们每天…

【路径规划】使用 RRT、RRT* 和 BIT* 进行网格图的路径规划

摘要 本文比较了三种路径规划算法&#xff1a;快速随机树&#xff08;RRT&#xff09;、快速随机树星&#xff08;RRT* &#xff09;和批量信息树&#xff08;BIT*&#xff09;&#xff0c;在网格图环境中进行路径规划的效果。通过仿真分析这些算法在路径质量、计算效率和收敛…

程序员哪里累了?

程序员是最不累的&#xff0c;最不辛苦的职业&#xff0c;非要说有什么门槛&#xff0c;那只需要你有点智力而已。 在这么多的职业中&#xff0c;比程序员轻松的职业可不多&#xff0c;跟程序员的比起来&#xff0c;大部分的职业更苦、更累。 这些问题经常在网上谈论来谈论去&…

永磁电机与普通电机的比较:结构、原理、性能及应用场景分析

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; 永磁电机和普通电机在结构、运行原理、性能以及应用场景上都有较大的不同。为了详细回答这些问题&#xff0c;先分别介绍两种电机的基本特点&#xff0c;再分析其异同点及适用场景。 一…

YOLOv11,地瓜RDK X5开发板,TROS端到端140FPS!

YOLOv11 Detect YOLOv11 Detect YOLO介绍性能数据 (简要) RDK X5 & RDK X5 Module 模型下载地址输入输出数据公版处理流程优化处理流程步骤参考 环境、项目准备导出为onnxPTQ方案量化转化使用hb_perf命令对bin模型进行可视化, hrt_model_exec命令检查bin模型的输入输出情况…

录屏+GIF一键生成,2024年费软件大揭秘

视频和 GIF 动图那可都是咱日常生活和工作里少不了的东西。不管是教学的时候用用、直播打个游戏&#xff0c;还是在社交媒体上分享点啥&#xff0c;高质量的录屏和 GIF 制作工具那可老重要了。今天呢&#xff0c;咱就一起来瞅瞅三款在 2024 年特别受推崇的免费录屏和 GIF 制作软…

安装pymssql

一、pycharm 安装pymssql 要在PyCharm中安装pymssql&#xff0c;你需要打开PyCharm的终端或者是Python解释器的交互模式。以下是安装pymssql的步骤&#xff1a; 打开PyCharm。 确保你正在使用的是正确的Python解释器。你可以在PyCharm的右下角看到当前使用的解释器。 点击顶…

SpringBoot实现社区医院数据集成解决方案

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

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

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30目录1. Proof Automation with Large Language Models概览&#xff1a;论文研究背景&#xff1a;技术挑战&#xff1a;如何破局…

在Linux中将设备驱动的地址映射到用户空间

本期主题&#xff1a; MMU的简单介绍&#xff0c;以及如何实现设备地址映射到用户空间 往期链接&#xff1a; Linux内核链表零长度数组的使用inline的作用嵌入式C基础——ARRAY_SIZE使用以及踩坑分析Linux下如何操作寄存器&#xff08;用户空间、内核空间方法讲解&#xff09;…

利用SpringBoot构建高效社区医院平台

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…