一、什么是盒子模型

盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版。

从上图可以看到标准的盒子模型范围包括margin(外边距)、border(边框)、padding(内边距)、content(网页内容)。
网页内容就是盒子里面装的东西。在网页设计中,内容常指文字、图片等元素。
内边距(PADDING)可以理解为盒子里装的东西和边框的距离。
边框(BORDER)就是盒子本身。
外边距(MARGIN)就是边框外面自动留出的一段空白。

注意:

每个HTML元素都可以看做是一个盒子。

1、外边距(margin)

2、边框(border)

3、内边距(padding)

4、小结

4、1 盒子模型总尺度
盒子模型总尺度=margin*2+border*2+padding*2+内容尺寸(宽/高)。

例如、一个盒子的margin为25px,border为2px,padding为10px,content的宽为200px、高为50px,假如用标准盒子模型解释,那么这个盒子需要占据的位置为:宽25*2+2*2+10*2+200=274px、高25*2+2*2*10*2+50=124px,盒子的实际大小为:宽 2*2+10*2+200=224px、高 2*2+10*2+50=74px;

4、2 外边距可以用于设置网页水平居中
margin-left:auto;
margin-right:auto;
例如:margin 0px auto;

4、3 块元素才能完全适用于盒子模型
使用display属性来相互转化
none:元素隐藏,不可见,不占据空间。
visibility:hidden 元素隐藏,但是占据空间。
block:转为块元素,独占一行。
inline:转为内联元素,不换行。
inline-block:行内块元素。

下面的例子演示如何将行内元素转换为块级元素。

例如:

<!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 type="text/css">
.div-style a{
width: 500px;
border: 1px solid red;
margin: 0 10px;
}
</style>
</head>
<body>
<div class="div-style">
<p>
<a>超链接1</a>
<a>超链接2</a>
</p>
</div> </body>
</html>

效果:

因为<a>标签是行级元素,所以设置的width属性对<a>标签不起作用。下面使用display属性进行转换:

<!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 type="text/css">
.div-style a{
display: block;/*将行级元素转换为块级元素*/
width: 500px;
border: 1px solid red;
margin: 10px;
}
</style>
</head>
<body>
<div class="div-style">
<p>
<a>超链接1</a>
<a>超链接2</a>
</p>
</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 type="text/css">
/* .div-style a{
display: block;/*将行级元素转换为块级元素*/
/* width: 500px;
border: 1px solid red;
margin: 10px;
} */
.div-style p{
width: 500px;
border: 1px solid red;
margin: 10px;
}
</style>
</head>
<body>
<div class="div-style">
<p>
<a>超链接1</a>
<a>超链接2</a>
</p>
<p>
<a>超链接3</a>
<a>超链接4</a>
</p>
</div> </body>
</html>

效果:

因为<p>标签是块级元素,所以两个<p>标签会分两行显示。

在看下面的例子:

<!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 type="text/css">
/* .div-style a{
display: block;/*将行级元素转换为块级元素*/
/* width: 500px;
border: 1px solid red;
margin: 10px;
} */
.div-style p{
display: inline;/*inline表示将块级元素转换成行级元素*/
/* width: 500px; */ /*因为对行级元素设置width属性无效,所以这里去掉width属性*/
border: 1px solid red;
margin: 10px;
}
</style>
</head>
<body>
<div class="div-style">
<p>
<a>超链接1</a>
<a>超链接2</a>
</p>
<p>
<a>超链接3</a>
<a>超链接4</a>
</p>
</div> </body>
</html>

效果:

这是两个<p>标签会在一行显示。

下面演示display的none属性,先看下面的代码:

<!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>display的none属性</title>
</head>
<body>
<div>我是第一个DIV</div>
<p>我是p段落</p>
<div>我是第二个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>display的none属性</title>
<style type="text/css">
p{
display: none;/*设置p标签隐藏*/
}
</style>
</head>
<body>
<div>我是第一个DIV</div>
<p>我是p段落</p>
<div>我是第二个DIV</div>
</body>
</html>

效果:

从上面的截图中可以看出:display的none属性可以使元素隐藏,并且隐藏的元素不占据空间。

下面在看看visibility属性:

<!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>display的none属性</title>
<style type="text/css">
/* p{
display: none;/*设置p标签隐藏*/
/* } */
p{
visibility: hidden;
}
</style>
</head>
<body>
<div>我是第一个DIV</div>
<p>我是p段落</p>
<div>我是第二个DIV</div>
</body>
</html>

效果:

从上面的截图中可以看出:visibility属性也可以将元素隐藏,但是会占据元素原来的空间。

在看inline-block属性。

先看下面的例子:

<!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>line-block属性</title>
<style type="text/css">
.div-style a{
display: block;
width: 500px;
border: 1px solid red;
margin: 10px;
}
</style>
</head>
<body>
<div class="div-style">
<p>我是第一个段落
<a>超链接1</a>
<a>超链接2</a>
</p>
<p>我是第二个段落
<a>超链接3</a>
<a>超链接4</a>
</p>
</div>
</body>
</html>

效果:

从截图中可以看出:<a>标签可以设置宽度了,而且是单独占一行显示,那么能不能让<a>标签既能设置宽度又能在一行显示呢?答案是肯定的,看下面的代码:

<!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>line-block属性</title>
<style type="text/css">
.div-style a{
display: inline-block;
width: 300px;
border: 1px solid red;
margin: 10px;
}
</style>
</head>
<body>
<div class="div-style">
<p>我是第一个段落
<a>超链接1</a>
<a>超链接2</a>
</p>
<p>我是第二个段落
<a>超链接3</a>
<a>超链接4</a>
</p>
</div>
</body>
</html>

效果:

使用display:inline-block属性就可以使<a>标签既能设置宽度,又能在一行显示了。

盒子模型的示例:

<!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 type="text/css">
*{
margin: 0px;
padding: 0px;
}
.main{
width: 300px;
height: 160px;
border: 1px solid #3a6587;
margin:0 auto;
padding: 0 auto;
}
div h3{
color: white;
background-color: gray;
padding-left: 20px;
height: 30px;
line-height: 30px;/*垂直居中显示*/
}
.td-left{
text-align: right;
}
.bottom{
margin:20px 10px;
}
</style>
</head>
<body>
<div class="main">
<div class="top">
<h3>会员登录</h3>
</div>
<div class="bottom">
<table cellspacint="0" cellpadding="0">
<tr>
<td class="td-left">姓名:</td>
<td><input type="text"></td>
</tr>
<tr>
<td class="td-left">邮箱:</td>
<td><input type="text"></td>
</tr>
<tr>
<td class="td-left">联系电话:</td>
<td><input type="text"></td>
</tr>
<tr>
<td class="td-left"></td>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</div>
</div>
</body>
</html>

效果:

CSS(六):盒子模型的更多相关文章

  1. 深入理解CSS系列(一):理解CSS的盒子模型

    接触前端也有好几个年头了,但是,讲实话,对于CSS的理解真的是不敢恭维,相信很多同行也有类似的感受吧!这是为什么呢?因为我们都认为CSS太简单了,没有必要深入学习,果真如此?其实,只不过是自己图样图森 ...

  2. 这些HTML、CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML、CSS、盒子模型、内容布局)

    这些HTML.CSS知识点,面试和平时开发都需要 No1-No4   系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) ...

  3. 使用css弹性盒子模型

    提示: 当期内容不充实, 修改后再来看吧 以下称:弹性子元素: 子元素, 弹性容器: 容器 弹性盒子的属性 1. css弹性盒子模型规定了弹性元素如何在弹性容器内展示 2. 弹性元素默认显示在弹性容器 ...

  4. #CSS的盒子模型、元素类型

    CSS的盒子模型.元素类型   本文首先介绍了CSS元素的统一内部结构模型,盒子模型:然后介绍了CSS元素基于不同分类标准定义的元素类型,包括基于不同内容设置方式定义的replaced元素和non-r ...

  5. 深入了解CSS中盒子模型

    CSS中盒子模型介绍 什么是盒子? 盒子是用来存储物品,我们可以将盒子理解为酒盒,酒盒有什么组成的呢? 有酒可以喝.有填充物保护酒防止酒被摔坏.纸盒子. 我们怎么理解CSS中的盒子呢,CSS中盒子有什 ...

  6. CSS 弹性盒子模型

    CSS 弹性盒子模型 https://www.w3.org/TR/2016/CR-css-flexbox-1-20160526/ CSS Flexible Box Layout Module Leve ...

  7. 认识CSS中盒子模型

    前端之HTML,CSS(六) CSS 盒子模型 CSS中的重点,理解盒子模型对于CSS才能有更清晰的认识.网页说简单一点其实就是一块一块的拼接出来的,可以想象成拼图,所有图块拼接在一起就成了一幅图像. ...

  8. css 大话盒子模型

    什么是盒子模型? CSS中, Box Model叫盒子模型(或框模型),Box Model规定了元素框处理元素内容(element content).内边距(padding).边框(border) 和 ...

  9. CSS系列:CSS中盒子模型

    盒子模型是CSS控制页面时一个很重要的概念.所有页面中的元素都可以看成是一个盒子,占据着一定的页面空间.可以通过调整盒子的边框和距离等参数,来调节盒子的位置和大小. 1. 盒子的内部结构 在CSS中, ...

  10. CSS之盒子模型及常见布局

    盒子模型的综合应用 CSS提高1 Div   ul    li 的综合应用很多的网页布局现在都用到这种模式 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTM ...

随机推荐

  1. HDU2089 ------不要62(数位dp)

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. Nginx.conf简介

    vim /etc/nginx/nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log lo ...

  3. 安卓平台下ARM Mali OpenCL编程-GPU信息检测(转)

    对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来加速我们的计算. 一直以来,对于Mali GPU的OpenCL编程,一直没有环境来测试.好不容易弄到一个华为M ...

  4. mindmanager2018官方下载地址

      mindmanager2018官方下载地址 CreationTime--2018年6月6日09:09:56 Author:Marydon 找了很多都是假的链接地址,流氓软件,根本不能输入许可密钥, ...

  5. 纯CSS实现蜂窝六边形的个性相册

    概述 纯CSS实现蜂窝六边形的个性相册 详细 代码下载:http://www.demodashi.com/demo/12804.html 此案例主要用到CSS3的 transform 和 transi ...

  6. iOS主题/皮肤之SakuraKit

    概述 目前市场上很多 App 都有主题变更.皮肤切换的功能.随着项目代码量的不断增长,业务不断完善,功能性代码逐渐趋于模块化,尤其是在多人协作开发同一个项目时,模块解耦尤为重要,同时,公共基础库的功能 ...

  7. 让 sphinx 支持中文、日文和韩文

    在国内搜索 sphinx 的话找到的资源好像都是挺久远的,无奈之下只好跑到国外去找了.听起来有点不可思议,但是最近整 sphinx 的时候突然想到 mediawiki 官方有 sphinx 的安装介绍 ...

  8. Solr之困

    http://www.kafka0102.com/2010/08/319.html重写公司的站内搜索.经过前期一段时间对lucene和solr的熟悉,最后决定使用Solr作为新系统的基础框架.现在已经 ...

  9. 用ping让对方电脑堵塞瘫痪

    用ping让对方电脑堵塞瘫痪2008-04-27 11:32 定义echo数据包大小. 在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小, 但有一个大小的 ...

  10. 四种对象生存期和作用域、static 用法总结

    一.四种对象生存期和作用域 栈对象 隐含调用构造函数(程序中没有显式调用) 堆对象 隐含调用构造函数(程序中没有显式调用),要显式释放 全局对象.静态全局对象 全局对象的构造先于main函数 已初始化 ...