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) 在父元素与其子元素之间:

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

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

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

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

相关文章

Android开发——布局

LinearLayout RelativeLayout 所谓父子容器&#xff0c;就是嵌套容器时存在的关系。 根据兄弟容器定位需要传入兄弟的id。 通用属性 FrameLayout (覆盖布局&#xff09; TableLayout (表格&#xff09; GridLayout (网格) 子控件属性

【C++学习】深入理解C++异常处理机制:异常类型,捕获和处理策略

文章目录 ♫一.异常的提出♫二.异常的概念♫三.异常的使用♫3.1 异常的抛出和捕获♫3.2.异常的重新抛出♫3.3异常安全♫3.4 异常规范 ♫4.自定义异常体系♫5.C标准库的异常体系♫6.异常的优缺点 ♫一.异常的提出 之前&#xff1a; C语言传统的处理错误的方式与带来的弊端&…

基于SpringBoot的“线上教学平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“线上教学平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 线上教学平台结构图 管理员登录界面图 学员管理界…

深入理解JavaScript - JavaScript中call、apply、bind方法

一、call() / apply() JavaScript中的函数是对象&#xff0c;与其他JavaScript对象一样,JavaScript函数也有方法。其中有两个自带的方法 – call和apply&#xff0c;可以利用这两个方法来间接调用某个函数。 通过一个简单的例子体会一下call和apply的用法&#xff1a; funct…

嵌入式学习54-ARM3

S3c2440中断控制器 内部外设&#xff1a; DMA &#xff1a;&#xff08;直接内存存取&#xff09; Direct Memor…

基于docker的开发者集成环境

docker-compose一键部署开发者环境。 常见的中间件&#xff1a;nginx, mysql, redis, mongo, rabbitmq, nacos, rocketmq, zookeeper等。 GIthub项目地址 1. 下载项目&#xff1a;git clone https://github.com/xhga/docker-develop-env.git 2. 进入文件夹&#xff1a;cd d…

服务器测试之intel E8102CQDA2

这个卡是个双口100G双芯片的卡&#xff0c;QSFP28 单口速率100G&#xff0c;双口200G 1.BIOS下pcie带宽设置 服务器BIOS下支持设置PCIE link width 设置x8x8&#xff0c;否则只能显示一个网口&#xff0c;如下图 E810-2CQDA2需要BIOS下设置该卡槽位pcie slot link width 设置x8…

Paddle实现人脸对比(二)

我之前发过一篇基于孪生网络的人脸对比的文章&#xff0c;这篇文章也到了百度的推荐位置&#xff1a; 但是&#xff0c;效果并不是很好。经过大量的搜索&#xff0c;我发现了一种新的方法&#xff0c;可以非常好的实现人脸对比。 原理分析 我们先训练一个普通的人脸分类模型&…

OpenCV4.10使用形态运算提取水平线和垂直线

目标 在本教程中&#xff0c;您将学习如何&#xff1a; 应用两个非常常见的形态运算符&#xff08;即膨胀和侵蚀&#xff09;&#xff0c;并创建自定义内核&#xff0c;以便在水平轴和垂直轴上提取直线。为此&#xff0c;您将使用以下 OpenCV 函数&#xff1a; erode()dilate…

认识异常(2)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

python创建word文档并向word中写数据

一、docx库的安装方法 python创建word文档需要用到docx库&#xff0c;安装命令如下&#xff1a; pip install python-docx 注意&#xff0c;安装的是python-docx。 二、使用方法 使用方法有很多&#xff0c;这里只介绍创建文档并向文档中写入数据。 import docxmydocdocx.Do…

基于生成对抗网络在服装领域的发展脉络和应用趋势

文章目录 1、概述2、深度学习图像生成模型2.1、深度信念网络(Deep belief network&#xff0c;DBN)2.2、变分自编码器(Variational auto-encoder&#xff0c;VAE)2.3、生成对抗网络(Generative adversarial networks&#xff0c;GAN) 3、 模型对比分析4、基于多模态转换的服装图…

nexus搭建maven与docker镜像的私有仓库

引言 通过nexus搭建maven与docker镜像的私有仓库,实现jar包与镜像动态更新、共享、存储。 一、nexus部署 通过docker-compose部署nexus name: java services:#############################环境#############################env-nexus:restart: always## 3.58.1image: so…

代码随想录算法训练营第三十七天| LeetCode 738.单调递增的数字、总结

一、LeetCode 738.单调递增的数字 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html 状态&#xff1a;已解决 1.思路 如何求得小于等于N的最大单调递增的整数&#xff1f;98&am…

【C语言基础】:编译和链接(计算机中的翻译官)

文章目录 一、翻译环境和运行环境1. 翻译环境1.1 编译1.1.1 预处理1.1.2 编译1.1.3 汇编 1.2 链接 2. 运行环境 一、翻译环境和运行环境 我们在Visual Studio上写的C语言代码其实都是一些文本信息&#xff0c;计算机是不能够直接执行他们的&#xff0c;计算机只能够执行二进制…

第6章 6.4.1 案例一:爬取亚洲各地区的实时时间(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 本案例将引导大家爬取亚洲各地区的实时时间。我们将从下面这个网…

第 128 场 LeetCode 双周赛题解

A 字符串的分数 模拟 class Solution {public:int scoreOfString(string s) {int res 0;for (int i 1; i < s.size(); i) res abs(s[i] - s[i - 1]);return res;} };B 覆盖所有点的最少矩形数目 排序&#xff1a;先按照 x i x_i xi​ 排序&#xff0c;然后顺序遍…

【C++庖丁解牛】底层为红黑树结构的关联式容器--哈希容器(unordered_map和unordered_set)

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. unordered系列关联式容…

系统架构设计图

首先明确应用架构的定义&#xff0c;从百度百科上即可了解到何为应用架构&#xff1a; 应用架构&#xff08;Application Architecture&#xff09;是描述了IT系统功能和技术实现的内容。应用架构分为以下两个不同的层次&#xff1a; 企业级的应用架构&#xff1a;企业层面的应…

arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?

ARM 首先先介绍一下ARM公司。 ARM成立于1990年11月&#xff0c;前身为Acorn计算机公司 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片 提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…