CSS盒模型(详讲)

目录

概述:

内容区(content):

内边距(paddingj):

前言:

设置内边距:

边框(border):

前言:

示例:

外边距(margin):

 前言:

设置外边距:

补充(折叠):


概述:

  盒模型很好理解,你把其象限成自己用来装东西的盒子,盒子里面就是放东西的。

        盒模型经常在网页中使用这是一种思维模型,它由四个部分组成:从内到外分别是内容(content),内边距(padding),边框(border)以及外边距(margin),我们可以使用CSS分别对这些部分进行设置。如下是一个盒模型:

初识CSS-CSDN博客 0基础看这一篇就够了HTML教程(详细汇总)_php代码格式-CSDN博客

内容区(content):

        内容区就是盒子里面用来存放东西的区域,里面你可以随便放如:文本,图片,视频等等,内容区域有三个属性:width,height,overflow,其中widthheight是用来指定内容区域的宽度和高度,因为如果内容太多就会超出范围导致溢出,这个时候我们就可以使用overflow属性来处理溢出的区域。其属性的可选值如下所示:

  • hidden:表示隐藏这块溢出的区域。
  • visible:表示显示溢出的区域(这部分放到盒子外面)。
  • scroll:如果内容溢出了,就添加一个滚动条,可以通过这个滚动条左右上下查看所有的内容。
  • auto:让浏览器自己去处理这部分。

        如下是示例代码:

<!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 {
            background-color: red;
            color: aqua;
            width: 100px;
            height: 40px;
            overflow: scroll;
        }
    </style>
</head>

<body>
    <div>
        这是一个内容区域的设置,后面内容要使用滚动条进行查看。
    </div>
</body>

</html>

        上述代码运行结果如下所示:我们把<div>盒子背景变为红色,字体颜色为蓝色,大小为100px宽度和40px宽度,此时盒子大小不够放不下所有的内容,我添加了一个overflow把其设置为scroll就为溢出的区域添加了一个可以上下滚动的条子。此时就可以通过这个滚动条查看盒子所有的文本内容。 CSS设置网页背景_css 设置背景图-CSDN博客

内边距(paddingj):

前言:

        内边距(padding)是元素内容跟元素边框之间的距离,就像我在一个盒子里面放一本书(内容)这个盒子的边框到这本书的距离就是内边距,书越大盒子越小内边距就会越小,其属性如下所示:

  • padding-top:可以设置元素距离上面边框的距离。
  • padding-right:可以设置元素距离右边边框的距离
  • padding-bottom:可以设置元素距离下面边框的距离。
  • padding-left:可以设置元素距离左边边框的距离。
  • padding:可以一次性设置元素距离上下左右边框的距离。

上述属性的可选值如下:

说明
length使用数值配合px,cm单位来定义元素的尺寸,不可以设置负值,默认为0px。
%定义基于父元素的宽度的  内边距,不可以设置为负的。
inherit从元素继承对内边距的设置。

使用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>
        * {
            height: 60px;
            width: 300px;
        }

        .top {
            background-color: aqua;
            padding-top: 20px;
        }

        .bottom {
            background-color: rgb(51, 26, 212);
            padding-bottom: 30px;
        }

        .left {
            background-color: blue;
            padding-left: 30px;
        }

        .right {
            background-color: blueviolet;
            padding-right: 20px;
        }

        .padding {
            background-color: aquamarine;
            padding: 20px 10px 3px 7px;
        }
    </style>
</head>

<body>
    <p class="top">padding-top:20px;</p>
    <p class="bottom">padding-bottom:30px;</p>
    <p class="left">padding-left:30px</p>
    <p class="right">padding-right:20px</p>
    <div class="padding">padding:20px 10px 3px 7px;</div>
</body>

</html>

        上述代码的运行结果如下所示:其中绿色框起来的是padding红色框起来的是内容,这里并无难点所以不过多讲解。

边框(border):

前言:

        边框就是内边距到外边距的这一段距离,就像我们日常用的盒子它的壳或者是校园的围墙。一般情况下是一条线,我们可以自己设置这些线段的样式。如宽度,颜色等等。我们可以用以下几种属性来设置边框:

  • border-style:设置边框的样式,如:实线,虚线等等。
  • border-width:用来设置边框的宽度的(厚度)。
  • border-color:可以用来设置边框的颜色。
  • border:可以用这个属性直接设置边框的三种属性

示例:

border-样式(颜色...),如border-style,border-width等等,如果用其设置属性的话需要注意一下顺序:

  • 如果你要一次设置四个参数,那么需要按照上,右,下,左的顺序依次设置元素四个方向的边框。
  • 如果你只提供三个参数,那第一个将会用来设置上面第二个将会被用来设置左,右两个方向最后一个将会被用来设置
  • 如果一次只提供两个参数,那第一个参数会被用来上,下两个方向另外一个参数会被用来设置左,右两个方向
  • 如果你只提供一个参数,那么这个参数将是四个方向的值

border - 方向(上下左右) - 样式  其说明如下:

  • border-bottom-样式 :设置下面对应的边框样式。
  • border-top-样式:设置上面对应的边框样式。
  • border-left-样式:设置左边对应的边框样式。
  • border-right-样式:设置右边对应的边框样式。

style样式的可选属性如下所示:

说明
none没有边框。
hidden把边框隐藏,跟none类似。
dotted定义点状虚线边框。
deshed定义虚线边框。
solid定义实线边框。
double定义双实线边框,双实线边框的宽度等于border-width的值。
groove

定义3D凹槽边框,其效果取决于border-color的值。

ridge定义3D垄状边框,其效果取决于border-color的值。
inset定义3D嵌入边框,其效果取决于border-color的值。
outset定义3D突出边框,其效果取决于border-color的值。
inherit从父元素中继承对边框样式的设置。

上述属性的示例代码如下所示: 

<!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>
        .test1 {
            border-top: dashed #c91010 3px;
            border-bottom: outset #8cd319 5px;
            border-left: groove rgb(101, 43, 182) 7px;
            border-right: inset rgb(207, 32, 169) 9px;
        }

    </style>
</head>

<body>
    <p class="test1">啥都没得1</p>
</body>

</html>

代码运行结果如下所示:可以明显看到上面的是虚线,左边的是凹槽边框,下面是突出边框,右边是嵌入边框。 

width样式可选属性如下:

说明
thin定义较细的边框。
medium默认值,定义中等宽度的边框。
thick定义较粗的边框。
length使用数值加单位的形式设置具体的边框宽度,如2px。
inherit从父元素中继承对边框的宽度。

 示例代码如下所示:

<!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>
        p {
            border: solid;
            width: 150px;
            border-top-color: blue;
            border-bottom-color: red;
            border-left-color: #901f1f;
            /* border-color: red; */
            border-right-color: rgb(27, 156, 96);
        }

        p {
            border-top-width: 7px;
            border-bottom-width: 3px;
            border-right-width: 2px;
            border-left-width: 9px;
        }
    </style>
</head>

<body>
    <p>color样式的定义</p>
</body>

</html>

代码运行结果如下所示:可以明显看到上面7px表现出来的厚度,还有左边9px的厚度,以及右边的细小,和下面的3px

 color样式的可选值如下所示:CSS设置网页颜色-CSDN博客

说明
color_name使用颜色名称来设置边框的颜色,如blue。
hex_number使用颜色的十六进制来设置边框的颜色,如:#101010.
rgb_number使用rgb()函数来设置边框的颜色,如rgb(255,0,0).
transparent默认值,边框为透明。
inherit从父元素里继承对边框颜色的设置。

 示例代码如下所示:

<!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>
        p {
            border: solid 3px;
            width: 150px;
            border-top-color: blue;
            border-bottom-color: red;
            border-left-color: #901f1f;
            /* border-color: red; */
            border-right-color: rgb(27, 156, 96);
        }
    </style>
</head>

<body>
    <p>color样式的定义</p>
</body>

</html>

上述代码运行结果如下所示:可以看到上面被设为紫色,下面为红色,左边为#901f1f使用了十六进制,右边为绿色,使用了rgb来配置三原色。

 

        border 可以一同设置style,color,width三个属性,设置这个三个属性并不需要遵循某些顺序,我们还可以border-方向来设置如下所示:

  • border-bottom  :一起设置下面的宽度,样式和颜色。
  • border- top :一起设置上面的宽度,样式和颜色。
  • border- left :一起设置左边的宽度,样式和颜色。
  • 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>
        .test1 {
            border-top: dashed #c91010 3px;
            border-bottom: outset #8cd319 5px;
            border-left: groove rgb(101, 43, 182) 7px;
            border-right: inset rgb(207, 32, 169) 9px;
        }

        .test2 {
            border: double rgb(32, 168, 27) 6px;
        }
    </style>
</head>

<body>
    <p class="test1">啥都没得1</p>
    <p class="test2">啥都没得2</p>
</body>

</html>

运行结果如下所示:

外边距(margin):

 前言:

        在HTML很多元素都有边框(margin),外边框就是在边框以外的区域,这片区域不受很多属性的影响,打个比方如:门,其的组成部分有可打开的门就是元素的内容,还有固定门的门框也就是边框,其边框以外的就是外边距。

设置外边距:

        在默认情况下一般元素是没有外边距的,但是也会有些例外,因为浏览器会给HTML元素设置默认值有些HTML元素的就会有一个设置了的外边距。比如<h1>....<h6>元素,我们也可以使用下面属性来给HTML元素设置外边距:

  • margin-top:设置元素上面的外边距。
  • margin-bottom:设置元素下面的外边距。
  • margin-right:设置元素右边的外边距。
  • margin-left:设置元素左边的外边距。
  • margin:也就是上述所有属性的简写,可以同时设置四个方向(上下左右)的外边距。

上述属性可选值如下所示:

说明
auto浏览器自己来计算的外边距尺寸。
length使用数值配合单位px,cm等等来定义元素外边距的尺寸,可以设置负值,默认情况下为0px
%基于父元素的宽度百分比的外边距,可以设置负数。
inherit从父元素中继承对外边距的设置。

使用margin属性时需要注意:

  • 如果你要一次设置四个参数,那么需要按照上,右,下,左的顺序依次设置元素四个方向的外边距。
  • 如果你只提供三个参数,那第一个将会用来设置上面第二个将会被用来设置左,右两个方向最后一个将会被用来设置
  • 如果一次只提供两个参数,那第一个参数会被用来上,下两个方向另外一个参数会被用来设置左,右两个方向
  • 如果你只提供一个参数,那么这个参数将是四个方向的值

上述属性示例代码如下所示:

<!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>
        .direction {
            background-color: aqua;
            width: 400px;
            height: 200px;
            border: 2px solid blue;
        }

        .mark1 {
            border: 4px solid red;
            margin-top: 30px;
            margin-bottom: 30px;
            margin-left: 40px;
            margin-right: 20px;
        }

        .margin {
            background-color: bisque;
            width: 300px;
            height: 100px;
            border: 2px solid blue;
        }

        .mark2 {
            border: 3px solid red;
            margin: 17px 13px 16px 17px;
        }
    </style>
</head>

<body>
    <div class="direction">
        <p class="mark1">direction啥都没得的一行</p>
    </div>
    <br> <br>
    <div class="margin">
        <p class="mark2">margin一个集合体</p>
    </div>

</body>

</html>

        上述代码的运行结果如下所示:下面红色的是代码的,绿色的是外边距,可以看到无论是一个个的设置还是用margin全部一起设置,都可以可以的。

补充(折叠):

        外边距折叠指的是两个相邻的元素或者多个元素的外边距会在垂直方向向上发生合并,变成一个外边距,外边距折叠需要注意的是:

  • margin折叠只会发生在块级元素上。
  • 浮动元素的外边距不会跟任何外边距发生折叠。
  • 如果元素设置了overflow属性并且其属性的值不是visible的块级元素,它将不会跟子元素发生外边距折叠。
  • 绝对定位的元素的外边距不会跟任何外边距发生折叠。
  • 根元素(<body>)的外边距不会跟任何外边距发生折叠。

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>
        .bottom {
            border: solid 2px red;
            width: 200px;
            height: 100px;
            background-color: aqua;
            /* margin-bottom: 40px; */
            /* margin-bottom: -40px; */
            margin-bottom: -40px;
        }

        .top {
            border: solid 2px red;
            width: 200px;
            height: 100px;
            background-color: rgb(145, 255, 0);
            /* margin-top: 20px; */
            /* margin-top: -20px; */
            margin-top: 20px;
        }
    </style>
</head>

<body>
    <p class="bottom">bottom:40px</p>
    <p class="top">top:20px</p>
</body>

</html>

代码运行结果如下所示:

2) 在父元素与其子元素之间:

注意:父元素不能定义边框和内边距,且父元素与子元素之间不能有其它元素

  • 如果父元素与子元素外边距的值都为正数,那么折叠后的外边距为两个外边距中较大的那个
  • 如果父元素与子元素外边距的值都为负数,那么折叠后的外边距为两个外边距中较小的那个
  • 如果父元素与子元素外边距的值一个为正数、一个负数,那么折叠后的外边距为两个外边距相加的和

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

飞驰云联入选金融信创生态实验室「金融信创优秀解决方案」

近日&#xff0c;由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布了第三期金融信创优秀解决方案&#xff0c;Ftrans飞驰云联“文件数据传输解决方案”成功入选&#xff01; 本次金融信创优秀解决方案遴选经方案征集、方案初审、专家评审等多环…

unity android 打包

现在使用的unity版本hub不支持导入support&#xff0c;只能自己下载对应的支持 找到对应的sdk&#xff0c;ndk

计算机组成原理【CO】Ch2 数据的表示和应用

文章目录 大纲2.1 数制与编码2.2 运算方法和运算电路2.3 浮点数的表示和运算 【※】带标志加法器OFSFZFCF计算机怎么区分有符号数无符号数? 【※】存储排列和数据类型转换数据类型大小数据类型转换 进位计数制进制转换2的次幂 各种码的基本特性无符号整数的表示和运算带符号整…

牛客研究生复试刷题(1)

KY30进制转换 1.最开始没有考虑到大数问题,可以说是没考虑完全,输入类型使用的是int64_t,只ac了一半测试用例。所以在数很大找不到合适的数据类型存储时,要考虑使用string来存放。 2.使用string存放数字的时候就要考虑:字符和数字之间的转换。字符转换成数字:str[i]-0,…

软考125-上午题-【软件工程】-传统软件的测试策略

一、传统软件的测试策略 有效的软件测试实际上分为4步进行&#xff0c;即&#xff1a;单元测试、集成测试、确认测试、系统测试。 1-1、单元测试&#xff08;模块测试&#xff09; 单元测试也称为模块测试&#xff0c;在模块编写完成且无编译错误后就可以进行。 单元测试侧重…

ChatGPT-4 Turbo 今天开放啦!附如何查询GPT-4 是否为 Turbo

2024年4月12日&#xff0c;OpenAI在X上宣布GPT-4 Turbo开放了&#xff01;提高了写作、数学、逻辑推理和编码方面的能力。另外最重要的是&#xff0c;响应速度更快了&#xff01;&#xff01; ChatGPT4 Turbo 如何升级&#xff1f;解决国内无法升级GPT4 Turbo的问题&#xff0…

springboot+vue科普知识商城考试论坛交流系统网站

本系统主要是设计出新能源科普网站&#xff0c;基于B/S构架&#xff0c;后台数据库采用了Mysql&#xff0c;可以使数据的查询和存储变得更加有效&#xff0c;可以确保新能源科普网站管理的工作能够正常、高效的进行&#xff0c;从而提高工作的效率。总体的研究内容如下&#xf…

Nikon | NEF格式图片批量转换为jpg格式

如何将nikon相机拍的NEF格式图片转换为jpg格式呢&#xff1f; 这里推荐一个在线转换的网址&#xff1a; https://picflow.com/convert/nef-to-jpg 添加图片后&#xff0c;可以批量选择图片&#xff0c;点击转换后即可进行下载

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网&#xff08;IoT&#xff09;领域&#xff0c;OPC UA&#xff08;开放平台通信统一架构&#xff09;已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…

Nature Geoscience | 近十年来北方森林和温带森林是全球主要的碳汇

2023年10月2日&#xff0c;法国巴黎萨克雷大学、波尔多大学与丹麦哥本哈根大学等多个单位的科研小组在国际知名学术期刊《Nature Geoscience》发表了一项题为“Global Increase in Biomass Carbon Stock Dominated by Growth of Northern Young Forests over Past Decade”的文…

论文笔记:NEFTune: Noisy Embeddings Improve Instruction Finetuning

iclr 2024 reviewer 评分 5666 1 论文思路 论文的原理很简单&#xff1a;在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现 2 方法评估

动态规划-简单多状态dp问题2

文章目录 1. 买卖股票的最佳时机含冷冻期&#xff08;309&#xff09;2. 买卖股票的最佳时机含手续费&#xff08;714&#xff09;3. 买卖股票的最佳时机 III&#xff08;123&#xff09;4. 买卖股票的最佳时机 IV&#xff08;188&#xff09; 1. 买卖股票的最佳时机含冷冻期&a…

【ELK】ELK企业级日志分析系统

搜集日志&#xff1b;日志处理器&#xff1b;索引平台&#xff1b;提供视图化界面&#xff1b;客户端登录 日志收集者&#xff1a;负责监控微服务的日志&#xff0c;并记录 日志存储者&#xff1a;接收日志&#xff0c;写入 日志harbor&#xff1a;负责去连接多个日志收集者&am…

年龄与疾病c++

题目描述 某医院想统计一下某项疾病的获得与否与年龄是否有关&#xff0c;需要对以前的诊断记录进行整理&#xff0c;按照0-18岁、19-35岁、36-60岁、61以上&#xff08;含61&#xff09;四个年龄段统计的患病人数以及占总患病人数的比例。 输入 共2行&#xff0c;第一行为过…

2440栈的实现类型、b系列指令、汇编掉用c、c调用汇编、切换工作模式、初始化异常向量表、中断处理、

我要成为嵌入式高手之4月11日51ARM第六天&#xff01;&#xff01; ———————————————————————————— b指令 标签&#xff1a;表示这条指令的名称&#xff0c;可跳转至标签 b指令&#xff1a;相当于goto&#xff0c;可随意跳转 如&#xff1a;fini…

Vivado Design Suite中的增量实现和增量模式

Vivado Incremental&#xff08;增量&#xff09;是Xilinx FPGA设计工具中的一种功能&#xff0c;它允许对设计的一部分进行修改和重新编译&#xff0c;而不需要对整个设计进行重新编译。这种增量式的方法可以显著减少编译时间&#xff0c;特别是在进行小的修改或迭代开发时。 …

粒子群优化算法PSO与鹈鹕优化算法(POA)求解无人机三维路径规划(MATLAB代码)

一、无人机路径规划模型介绍 二、算法介绍 close all clear clc dbstop if all error warning (off) global model model CreateModel(); % 创建模型 FF1; [Xmin,Xmax,dim,fobj] fun_info(F);%获取函数信息 pop100;%种群大小(可以自己修改) maxgen100;%最大迭代次数(可以自己…

成功转行Python工程师,年薪30W+,经验总结都在这!

都说郎怕入错行&#xff0c;行业对职场人的影响不言而喻。我们身边有很多和自己起点差不多的人&#xff0c;读了差不多的高中&#xff0c;差不多的大学&#xff0c;但是有的人突然一飞冲天&#xff0c;大House、移民、海外置业、全球旅行成了最常见的话题&#xff0c;出入私立医…

LeetCode18: 四数之和

目录 题目&#xff1a; 题解&#xff1a; 代码&#xff1a; 题目&#xff1a; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元…

【C++】STL学习之vector的使用

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言一、默认成员函数1.1 默认构造1.2 拷贝构造1.3 析构函数1.4 赋值重载 二、迭…