CSS学习笔记(四) 框模型

简介: CSS学习笔记(四) 框模型



1、框模型


为了更好的处理 元素内容内边距边框外边距 之间的关系,CSS 定义一个框模型用于表示它们之间的关系

下面的图片就是框模型的最直观展示,十分重要,很多时候处理样式问题都要用到

 47892956116f59ab56674b5b14581b17_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dzbXJ6eA==,size_16,color_FFFFFF,t_70#pic_center.png

相关的属性共有 3 个,分别是 padding(内边距)、border(边框)、margin(外边距)

另外,还有 2 个属性用于设置内容区域的宽度和高度,分别是 width(宽度)、height(高度)

下面我们先来感受一下,这些属性表现出来的效果是怎么样的,大家可以尝试改变参数,看看效果的变化

<!DOCTYPE HTML>
<html>
<head>
    <style>
        div {
            width: 120px; /* 设置内容区域的宽度 */
            height: 80px; /* 设置内容区域的高度 */
            color: yellow; /* 设置字体颜色 */
            background-color: cornflowerblue; /* 设置背景颜色 */
            border: 5px solid deeppink; /* 设置边框 */
            padding: 10px; /* 设置内边距 */
            margin: 20px; /* 设置外边距 */
        }
    </style>
</head>
<body>
    <div>这是一个 div</div>
    <div>这是另外一个</div>
</body>
</html>


2、内边距


padding 属性定义元素的内边距,它可以是长度值或者是百分数值,百分数值相对于父元素的 width 属性计算

一般情况下,我们需要指定四个值分别对应上、右、下、左四个方向的内边距

但是,CSS 提供一种特殊的机制,允许我们更灵活、更方便的处理赋值,具体的规则如下:

  • 如果缺少左边的值,则使用右边的值代替
  • 如果缺少下边的值,则使用上边的值代替
  • 如果缺少右边的值,则使用上边的值代替

我们用直观的方法重新表述一下:

  • 如果提供 4 个值,则按上、右、下、左的顺序分别设置
  • 如果提供 3 个值,则第一个值设置上边,第二个值设置左边和右边,第三个值设置下边
  • 如果提供 2 个值,则第一个值设置上边和下边,第二个值设置左边和右边;
  • 如果提供 1 个值,则同时用于设置上、右、下、左四个方向

同时,CSS 也提供单独设置某个方向的属性:

  • padding-top:设置上内边距
  • padding-right:设置右内边距
  • padding-bottom:设置下内边距
  • padding-left:设置左内边距
<!DOCTYPE HTML>
<html>
<body>
    <input type="text" placeholder="没有设置内边距的">
    <input type="text" placeholder="已经设置内边距的" style="padding: 2px 4px">
</body>
</html>


3、边框


(1)宽度


可以使用 border-width 属性设置边框宽度,其可选值如下:

  • thin:细边框
  • medium:默认值,中等边框
  • thick:粗边框
  • 长度值
  • inherit:从父元素继承


(2)样式


可以使用 border-style 属性设置边框样式,其可选值如下:

  • none:无边框
  • hidden:一般情况下效果与 none 相同,但是应用于表格时,可以用于解决边框冲突
  • dotted:点状边框
  • dashed:虚线边框
  • solid:实线边框
  • double:双线边框
  • groove:凹槽边框
  • ridge:垄状边框
  • inset:内凹边框
  • outset:外凸边框
  • inherit:从父元素继承


(3)颜色


可以使用 border-color 属性设置边框颜色,其可选值如下:

  • 颜色名称,例如 snow
  • Hex 颜色,例如 #FFFAFA
  • RGB 颜色,例如 rgb(255,250,250)
  • transparent:默认值,透明
  • inherit:从父元素继承


(4)属性简写


使用 border 简写属性允许我们在一个声明设置所有的边框属性,其顺序如下:

  • border-width
  • border-style
  • border-color
<!DOCTYPE HTML>
<html>
    <style>
        div {
            width: 300px;
            height: 100px;
            color: MediumSlateBlue;
            text-align: center; /* 文字水平居中 */
            line-height: 100px; /* 文字垂直居中 */
            background-color: LightSkyBlue;
            border: 10px solid SkyBlue;
        }
    </style>
<body>
    <div>普罗旺斯的八月,薰衣草绚烂的季节</div>
</body>
</html>


(5)圆角边框


可以使用 border-radius 属性用于创建圆角边框,它接受长度值作为参数

<!DOCTYPE HTML>
<html>
<head>
    <style>
        div {
            width: 300px;
            height: 50px;
            text-align: center;
            line-height: 50px;
            background-color: #dddddd;
            border: 2px solid #a1a1a1;
            border-radius: 25px;
        }
    </style>
</head>
<body>
    <div>Hello World</div>
</body>
</html>


4、外边距


margin 属性定义元素的外边距,接受长度值和百分数值,也可以使用 auto,说明由浏览器自动计算外边距

<!DOCTYPE HTML>
<html>
<head>
    <style>
        .div1 {
            width: 300px;
            height: 100px;
            background-color: Seashell;
            margin-left: 10px;
            margin-bottom: 15px;
        }
        .div2 {
            width: 300px;
            height: 100px;
            background-color: Honeydew;
            margin-left: 50px;
            margin-top: 45px;
        }
    </style>
</head>
<body>
    <div class="div1"></div>
    <div class="div2"></div>
</body>
</html>


注意,这里有一个小细节,那就是当两个元素的外边距发生重叠时,它们会进行合并,合并的规则如下:

  • 如果两个外边距都是正数,那么取它们之间较大的那一个
  • 如果两个外边距都是负数,那么取它们之间绝对值较大的那一个
  • 如果两个外边距一正一负,那么取它们相加的结果


目录
相关文章
|
4月前
|
前端开发 容器
css布局-弹性布局学习笔记
这篇文章是关于CSS弹性布局的学习笔记,详细介绍了flex容器和元素的相关属性,包括flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content以及order、flex-grow、flex-shrink、flex-basis、flex和align-self等,解释了这些属性在弹性盒子布局中的作用和用法。
|
4月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
5月前
|
前端开发 开发者
【前端大揭秘】CSS盒子模型的爱恨情仇:一场关于标准与IE模型的精彩对决!
【8月更文挑战第26天】本文深入探讨CSS中的两大盒子模型——标准盒模型与IE盒模型。通过理论解析与实例代码,清晰展示了两种模型下元素尺寸的构成方式及其应用场景。标准盒模型适合精确控制内容区尺寸,而IE盒模型在处理固定宽度元素时更为直观。掌握这些知识将帮助前端开发者在实际项目中做出更优的设计决策,提升网页布局的质量与美观性。
48 1
|
8月前
|
人工智能 前端开发
CSS学习笔记2024最新
CSS学习笔记2024最新
50 1
|
前端开发
前端学习笔记202305学习笔记第二十二天-vue3.0-css预处理器和样式重置
前端学习笔记202305学习笔记第二十二天-vue3.0-css预处理器和样式重置
71 0
|
8月前
|
人工智能 前端开发 开发者
Baidu千帆大模型赋能——CSS控制DIV垂直水平居中——送给大一的孩子们,学会用AI思维来帮助你解决问题
Baidu千帆大模型赋能——CSS控制DIV垂直水平居中——送给大一的孩子们,学会用AI思维来帮助你解决问题
81 1
|
8月前
|
前端开发 JavaScript 容器
CSS学习笔记(一) 盒子模型
CSS学习笔记(一) 盒子模型
|
8月前
|
容器
请解释一下 CSS3 的 Flexbox(弹性盒布局模型), 以及适用场景?
请解释一下 CSS3 的 Flexbox(弹性盒布局模型), 以及适用场景?
|
8月前
|
缓存 前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记->处理CSS
《Webpack5 核心原理与应用实践》学习笔记->处理CSS
65 0
|
前端开发
CSS学习笔记
CSS学习笔记
61 0
CSS学习笔记