零、文章目录

CSS入门三、盒子模型

1、网页布局的本质

网页布局过程:

  1. 先准备好相关的网页元素,网页元素基本都是盒子 Box 。

  2. 利用 CSS 设置好盒子样式,然后摆放到相应位置。

  3. 往盒子里面装内容.

网页布局的核心本质: 就是利用 CSS 摆盒子。

2、盒子模型组成

  • 盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
  • CSS盒子包括:边框、外边距、内边距和实际内容。

3、边框border

(1)边框

  • border属性允许你指定一个元素边框的样式和颜色。
  • 边框有三部分组成:边框宽度(粗细)、边框样式、边框颜色。
border : border-width || border-style || border-color

  • 边框样式 border-style 可以设置如下值:

    • none:没有边框即忽略所有边框的宽度(默认值)
    • solid:边框为单实线(最为常用的)
    • dashed:边框为虚线
    • dotted:边框为点线

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>边框</title><style>div {width: 300px;height: 200px;/* border-width 边框的粗细  一般情况下都用 px */border-width: 5px;/* border-style 边框的样式  solid 实线边框   dashed 虚线边框  dotted 点线边框*/border-style: solid;/* border-style: dashed; *//* border-style: dotted; *//* border-color 边框的颜色  */border-color: pink;}</style>
</head>
<body><div></div>
</body>
</html>

(2)边框复合写法

  • 边框复合写法:没有顺序要求
border: 1px solid red;
  • 边框分开写法:
border-top: 1px solid red; /* 只设定上边框, 其余同理 */

边框复合写法案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>边框复合写法</title><style>div {width: 300px;height: 200px;/* border-width: 5px;border-style: solid;border-color: pink; *//* 边框的复合写法 简写:  *//* border: 5px solid pink; *//* 上边框 */border-top: 5px solid pink;/* 下边框 */border-bottom: 10px dashed purple;}</style>
</head>
<body><div></div>
</body>
</html>

边框分开写案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>边框分开写</title><style>/* 请给一个 200*200 的盒子,设置上边框为红色,其余边框为蓝色 */div {width: 200px;height: 200px;/* border-top: 1px solid red;border-bottom: 1px solid blue;border-left: 1px solid blue;border-right: 1px solid blue; *//* border包含四条边 */border: 1px solid blue;/* 层叠性 只是层叠了 上边框啊 */border-top: 1px solid red;}</style>
</head>
<body><div></div>
</body>
</html>

(3)边框合并border-collapse

  • border-collapse 属性控制绘制表格边框的方式。它控制相邻单元格的边框。
  • border-collapse: collapse; 表示相邻边框合并在一起。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>边框合并</title><style>table {width: 500px;height: 249px;}th {height: 35px;}table,td, th {border: 1px solid pink;/* 合并相邻的边框 */border-collapse: collapse;font-size: 14px;text-align: center;}</style>
</head>
<body><table align="center" cellspacing="0"><thead><tr><th>排名</th><th>关键词</th><th>趋势</th><th>进入搜索</th><th>最近七日</th><th>相关链接</th></tr></thead><tbody><tr><td>1</td><td>鬼吹灯</td><td><img src="down.jpg"></td><td>456</td><td>123</td><td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td></tr><tr><td>1</td><td>鬼吹灯</td><td><img src="down.jpg"></td><td>456</td><td>123</td><td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td></tr><tr><td>3</td><td>西游记</td><td><img src="up.jpg"></td><td>456</td><td>123</td><td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td></tr><tr><td>1</td><td>鬼吹灯</td><td><img src="down.jpg"></td><td>456</td><td>123</td><td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td></tr><tr><td>1</td><td>鬼吹灯</td><td><img src="down.jpg"></td><td>456</td><td>123</td><td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td></tr><tr><td>1</td><td>鬼吹灯</td><td><img src="down.jpg"></td><td>456</td><td>123</td><td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td></tr></tbody>           </table>
</body>
</html>

(4)边框影响盒子大小

  • 因此我们有两种方案解决:

    • 测量盒子大小的时候不量边框。

    • 如果测量的时候包含了边框,则需要 width/height 减去边框宽度。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>边框影响盒子大小</title><style>/* 我们需要一个200*200的盒子, 但是这个盒子有10像素的红色边框 */div {width: 180px;height: 180px;background-color: pink;border: 10px solid red;}</style>
</head>
<body><div></div>
</body>
</html>

4、内边距padding

(1)内边距

  • padding 属性用于设置内边距,即边框与内容之间的距离。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>内边距</title><style>div {width: 200px;height: 200px;background-color: pink;padding-left: 20px;padding-top: 30px;}</style>
</head>
<body><div>盒子内容是content盒子内容是content盒子内容是content盒子内容是content</div>
</body>
</html>

(2)内边距复合写法

  • padding可以有一到四个值。顺序是上右下左顺时针。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>内边距复合写法</title><style>div {width: 200px;height: 200px;background-color: pink;/* padding-left: 5px;padding-top: 5px;padding-bottom: 5px;padding-right: 5px; *//* 内边距复合写法(简写) *//* padding: 5px; *//* padding: 5px 10px; *//* padding: 5px 10px 20px; */padding: 5px 10px 20px 30px;}</style>
</head>
<body><div>盒子内容是content盒子内容是content盒子内容是content盒子内容是content</div>
</body>
</html>

(3)内边距影响盒子大小

  • 如果盒子已经有了宽度和高度,此时padding会撑大盒子。**解决方案:**如果保证盒子跟效果图大小保持一致,则让 width/height 减去多出来的内边距大小即可。
  • 如何盒子没有指定宽度和高度,此时padding不会撑开盒子大小。父元素指定宽高,子元素不指定,此时padding不会撑开盒子大小。

内边距影响盒子大小案例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>内边距影响盒子大小</title><style>div {width: 160px;height: 160px;background-color: pink;padding: 20px;}</style>
</head><body><div>padding会影响盒子实际大小padding会影响盒子实际大小padding会影响盒子实际大小padding会影响盒子实际大小</div></body></html>

内边距不影响盒子大小案例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>内边距不影响盒子大小</title><style>h1 {/* width: 100%; */height: 200px;background-color: pink;padding: 30px;}div {width: 300px;height: 100px;background-color: purple;}div p {padding: 30px;background-color: skyblue;}</style>
</head><body><h1></h1><div><p></p></div>
</body></html>

(4)综合案例–新浪导航

  • padding内边距可以撑开盒子,我们可以做非常巧妙的运用。宽高需要重新进行计算。
  • 因为每个导航栏里面的字数不一样多,我们可以不用给每个盒子宽度了,直接给padding最合适。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>新浪导航</title><style>.nav {height: 41px;border-top: 3px solid #ff8500;border-bottom: 1px solid #edeef0;background-color: #fcfcfc;line-height: 41px;}.nav a {/* a属于行内元素 此时必须要转换 行内块元素 */display: inline-block;height: 41px;padding: 0 20px;font-size: 12px;color: #4c4c4c;text-decoration: none;}.nav a:hover {background-color: #eee;color: #ff8500;}</style>
</head>
<body><div class="nav"><a href="#">新浪导航</a><a href="#">手机新浪网</a><a href="#">移动客户端</a><a href="#">微博</a><a href="#">三个字</a></div>
</body>
</html>

5、外边距margin

(1)外边距

  • margin 属性用于设置外边距,即控制盒子和盒子之间的距离。
  • margin 简写方式代表的意义跟 padding 完全一致。

案例如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>外边距</title><style>div {width: 200px;height: 200px;background-color: pink;}/* .one {margin-bottom: 20px;} */.two {/* margin-top: 20px; *//* margin: 30px; */margin: 30px 50px;}</style>
</head><body><div class="one">1</div><div class="two">2</div>
</body></html>

(2)块级盒子水平居中

  • 必须满足两个条件:

    • 盒子必须指定了宽度(width)。

    • 盒子左右的外边距都设置为 auto 。

.header{ width:960px; margin:0 auto;}
  • 常见的写法,以下三种都可以:

    • margin-left: auto; margin-right: auto;

    • margin: auto;

    • margin: 0 auto;

  • 行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>块级盒子水平居中</title><style>.header {width: 900px;height: 200px;background-color: pink;margin: 100px auto;}</style>
</head>
<body><div class="header"></div>
</body>
</html>

行内元素或者行内块元素水平居中案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>行内元素/行内块元素水平居中对齐</title><style>.header {width: 900px;height: 200px;background-color: pink;margin: 100px auto;text-align: center;}/* 行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可 */</style>
</head>
<body><div class="header"><span>里面的文字</span></div><div class="header"><img src="down.jpg" alt=""></div>
</body>
</html>

(3)外边距合并

  • 使用 margin 定义块元素的垂直外边距时,可能会出现外边距的合并。

  • 主要有两种情况:

    1. 相邻块元素垂直外边距的合并
    2. 嵌套块元素垂直外边距的塌陷,浮动的盒子不会此问题。
  • 相邻块元素垂直外边距的合并

​ 当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有上外边距 margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并。**解决方案:**尽量只给一个盒子添加 margin 值。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>相邻块级元素垂直外边距合并</title><style>.damao, .ermao {width: 200px;height: 200px;background-color: pink;}.damao {margin-bottom: 100px;}.ermao {margin-top: 200px;}</style>
</head>
<body><div class="damao">大毛</div><div class="ermao">二毛</div>
</body>
</html>

这中间的距离只有200px

  • 嵌套块元素垂直外边距的塌陷

​ 对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。**解决方案:**① 可以为父元素定义上边框。② 可以为父元素定义上内边距。③ 可以为父元素添加 overflow:hidden。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>嵌套块级元素垂直外边距塌陷</title><style>.father {width: 400px;height: 400px;background-color: purple;margin-top: 50px;/* border: 1px solid red; *//* border: 1px solid transparent; *//* padding: 1px; */overflow: hidden;}.son {width: 200px;height: 200px;background-color: pink;margin-top: 100px;}</style>
</head>
<body><div class="father"><div class="son"></div></div>
</body>
</html>

6、清除内外边距

  • 网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。
  • 注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内块元素就可以了。

案例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>清除内外边距</title><style>/* 这句话也是我们css 的第一行代码 */* {margin: 0;padding: 0;}span {background-color: pink;margin: 20px;}</style>
</head>
<body>123<ul><li>abcd</li></ul><span>行内元素尽量只设置左右的内外边距</span>
</body>
</html>

7、综合案例

(1)产品模块

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>综合案例-产品模块</title><style>* {margin: 0;padding: 0;}body {background-color: #f5f5f5;}a {color: #333;text-decoration: none;}.box {width: 298px;height: 415px;background-color: #fff;/* 让块级的盒子水平居中对齐 */margin: 100px auto;}.box img {/* 图片的宽度和父亲一样宽 */width: 100%;}.review {height: 70px;font-size: 14px;/* 因为这个段落没有 width属性 所有 padding不会撑开盒子的宽度 */padding: 0 28px;margin-top: 30px;}.appraise {font-size: 12px;color: #b0b0b0;margin-top: 20px;padding: 0 28px;}.info {font-size: 14px;margin-top: 15px;padding: 0 28px;}.info h4 {display: inline-block;font-weight: 400;}.info span {color: #ff6700;}.info em {font-style: normal;color: #ebe4e0;margin: 0 6px 0 15px;}</style>
</head><body><div class="box"><img src="data:images/img.jpg" alt=""><p class="review">快递牛,整体不错蓝牙可以说秒连。红米给力</p><div class="appraise">来自于 117384232 的评价</div><div class="info"><h4> <a href="#">Redmi AirDots真无线蓝...</a></h4><em>|</em><span> 99.9元</span></div></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"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>新闻快报模块</title><style>* {margin: 0;padding: 0;}li {/* 去掉li前面的小圆点 */list-style: none;}.box {width: 248px;height: 163px;border: 1px solid #ccc;margin: 100px auto;}.box h3 {height: 32px;border-bottom: 1px dotted #ccc;font-size: 14px;font-weight: 400;line-height: 32px;padding-left: 15px;}.box ul li a {font-size: 12px;color: #666;text-decoration: none;}.box ul li a:hover {text-decoration: underline;}.box ul li {height: 23px;line-height: 23px;padding-left: 20px;}.box ul {margin-top: 7px;}</style>
</head><body><div class="box"><h3>品优购快报</h3><ul><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】母亲节,健康好礼低至5折!</a></li><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】9.9元洗100张照片!</a></li><li><a href="#">【特惠】长虹智能空调立省1000</a></li></ul></div>
</body></html>

CSS入门三、盒子模型相关推荐

  1. 前端--CSS选择器,盒子模型学习

    文章目录 一.CSS 1.概述 2.入门案例 二.CSS选择器 1.概述 1)标签名选择器:根据属性条件选中网页中的所有元素 2)class选择器:根据class属性的选中元素(添加class属性,通 ...

  2. CSS学习之盒子模型

    1. 前言 盒子模型,英文即box model.无论是div.span.还是a都是盒子. 但是,图片.表单元素一律看作是文本,它们并不是盒子.这个很好理解,比如说,一张图片里并不能放东西,它自己就是自 ...

  3. CSS入门三(盒子模型)

    文章目录 前言 一.盒子模型是什么? 二.盒子模型的总宽度与总高度 三.盒子模型的属性 1.边框属性 (1)边框样式 (2)边框宽度 (3)边框颜色 (4)边框综合属性 (5)圆角属性 (6)图片边框 ...

  4. CSS(三):CSS特性与盒子模型

    目录 CSS三大特性 层叠性 继承性 行高的继承 优先级 权重的叠加 盒子模型 网页布局的本质 盒子模型组成 边框(border) 表格细线边框 边框会影响盒子实际大小! 内边距(padding) p ...

  5. 三、CSS重要的盒子模型知识总结(中篇)

    @Author:Runsen CSS知识总结(上) 继续上篇文章,总结css 今天一篇全讲重要的盒子模型 文章目录 边框属性 什么边框? 边框属性的格式 连写(分别设置四条边的边框) 内边距 什么是内 ...

  6. 16.JAVA之前端,HTML,CSS(选择器,盒子模型),JS,JQuery,Json,ajax

    一.Web前端技术栈 1.HTML超文本标记语言        实现页面展现,形成静态网页 2.CSS层叠样式表            实现页面美化 3.JS javascript脚本语言    实现 ...

  7. 【web前端】CSS笔记小结 盒子模型+PS基操+样例(Day 3+部分Day 4)

    来源:黑马程序员pink老师前端入门教程 目录 I. 盒子模型 Box Model ①网页布局的本质 ​ ②组成部分 ❀图解 ❀边框 border ※ 组成 ※※ 样式 ※ 简写 ※练习 ※细线边框 ...

  8. 【CSS基础】盒子模型、浮动布局、ps切图、定位及一些零碎知识点

    该系列文章是博主学习前端入门课程的笔记,同时也为了方便查阅,有任何问题都欢迎在评论区提出.本文主要介绍CSS基础知识,包括盒子模型.浮动布局.PS切图.定位.元素的显示与隐藏和一些零碎知识点 思维导图 ...

  9. CSS选择器、盒子模型及布局

    一.CSS的简介 Cascading Style Sheets:层叠样式表 可以解决html代码对样式定义的重复,提高了后期样式代码的可维护性,并增强了网页的显示效果功能. 将网页内容和显示样式进行了 ...

最新文章

  1. VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件
  2. 世界创新竞争力发展报告:中美日创新产出竞争力居前三
  3. Samba+lamp完成指定任务
  4. MySQL性能优化笔记整理
  5. C++继承中的同名成员变量处理方法
  6. XML序列化和反序列化 以及相关类的写法
  7. Elasticsearch】es memory locking requested for process but memory is not locked
  8. python的lambda函数错误的是_Python 中的 AWS Lambda 函数错误 - AWS Lambda
  9. win8 打开计算机配置,win8.1 更改电脑配置无法使用
  10. 【报告分享】中国城市人工智能发展指数报告.pdf(附下载链接)
  11. 8位可控加减法电路设计_C++手撕底层:位、字节、原码、反码、补码的深入理解...
  12. 给定一个数组 a[n], 输出b[n], 其中 b[i] = a[0]*a[1]...*a[i-1]*a[i+1]*....a[n]; 其中不能用除法 复杂度要求O(n)...
  13. scala 资源 copy 自知乎
  14. c语言读取三菱plc数据,使用用三菱小软件读取三菱PLC数据的方法
  15. 室内 Beacon定位室外 GPS 定位 大型场馆融合定位方案
  16. 计算机学霸小黄是谁,人人网惊现“小黄鸡”火成一片 大学生调侃“你是学霸派来的么?”...
  17. 我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下: 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
  18. html人物属性代码,辐射4初始人物超强属性代码一览
  19. app微信登陆 小程序微信授权登陆
  20. laravel sail

热门文章

  1. 主板、科创板、创业板、北交所IPO中介机构收费排名(1-3月份)
  2. Dom学习之设置超链接获取焦点和失去焦点
  3. 谈谈地图在地震中的应用——以此来纪念“5.12汶川大地震”
  4. 数据库:sql递归查询
  5. 横向越权访问java_横向越权纵向越权安全漏洞的解决
  6. java swing 雪花_java递归实现科赫雪花
  7. 面试-interview100
  8. [Creo 3.0] 查看点的坐标, 查看点相对坐标(自建坐标系)
  9. tomcat热加载、热部署-源码解析
  10. centos6 安装 bareos 和 bareos-webui