盒子模型及层模型【定位】

首先需要说明,盒子模型是针对HTML元素的每一个标签的!因为HTML中每一个标签都符合盒子模型的特点!

CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距边框外边距 的方式。如下所示:

需要注意:

  盒子是由三部分组成的,即:盒子壁【border】+内边距【padding】+内容区【content=width+height】

而盒模型是由四部分组成的,即:外边距【margin】+盒子壁【border】+内边距【padding】+内容区【content=width+height】

从上面这幅图也可以看出,我们平时设置的height和width是盒模型中的内容区部分!padding内边距区是不允许放内容的,内容是放在内容区的!

如下所示:

 1 <style type="text/css">
 2     div{
 3         width:100px;
 4         height:100px;
 5         border:10px solid red;
 6         padding:50px;
 7     }
 8 </style>
 9 </head>
10 <body>
11     <div>韭菜盒子韭菜盒子韭菜盒子</div>
12 </body>

可以在火狐浏览器打开F12键,仔细看看这段代码盒模型为:

 参考盒子模型:

如下代码为:

 1 <style type="text/css">
 2     .wrapper{
 3         width:100px;
 4         height:100px;
 5         border:10px solid red;
 6         background-color:green;
 7         padding:100px;
 8     }
 9     .content{
10         width:100px;
11         height:100px;
12         background-color:black;
13     }
14 </style>
15 </head>
16 <body>
17     <div class="wrapper">
18         <div class="content"></div>
19     </div>
20 </body>

展现出来的效果图为:

从效果图,可以知道两件事:

  1.如果两个div嵌套,想把里面的div放入到外部div的中间,只需要将内部div填满外部div的内容区,然后将外部div的

      四个方向的padding和border都设置为相等的值即可。

2.上图还可以得到一个结论:内边距呈现了元素的背景

另外还需要注意代码部分,我们只给padding属性值一个值,就代表四个方向都是100px,当然我们也可以设置2个值,3个值,4个值,如下所示:

 1 <style type="text/css">
 2     .wrapper{
 3         width:100px;
 4         height:100px;
 5         border:10px solid red;
 6         background-color:green;
 7         padding:10px 20px 30px;
 8     }
 9     .content{
10         width:100px;
11         height:100px;
12         background-color:black;
13     }
14 </style>
15 </head>
16 <body>
17     <div class="wrapper">
18         <div class="content"></div>
19     </div>
20 </body>

效果如下所示:

如果说我不想设置4个方向的,就想设置一个方向的,行不行呢?可以!

如:

 1 <style type="text/css">
 2     .wrapper{
 3         width:100px;
 4         height:100px;
 5         border:10px solid red;
 6         background-color:green;
 7         padding:100px 0px 0px 0px;
 8     }
 9     .content{
10         width:100px;
11         height:100px;
12         background-color:black;
13     }
14 </style>
15 </head>
16 <body>
17     <div class="wrapper">
18         <div class="content"></div>
19     </div>
20 </body>

当然还可以再简单点,如下所示:

 1 <style type="text/css">
 2     .wrapper{
 3         width:100px;
 4         height:100px;
 5         border:10px solid red;
 6         background-color:green;
 7         padding-top: 100px;
 8     }
 9     .content{
10         width:100px;
11         height:100px;
12         background-color:black;
13     }
14 </style>
15 </head>
16 <body>
17     <div class="wrapper">
18         <div class="content"></div>
19     </div>
20 </body>

当然还可以为四个方向单独设置padding:padding-top、padding-right、padding-bottom、padding-left

margin:margin-top、margin-right、margin-bottom、margin-left

border-width:border-top-width、border-right-width、border-bottom-width、border-left-width

              border-style:border-top-style、border-right-style、border-bottom-style、border-left-style

border-color:border-top-color、border-right-color、border-bottom-color、border-left-color

这里有一个问题?就是你看看下面这段代码盒子的真实宽度和高度请计算出来【realWidth  和 RealHeight】

<style type="text/css">
    div{
        width:100px;
        height:100px;
        background-color: red;
        border: 10px solid black;
        padding:10px 20px 30px;
        margin:10px 20px;
    }
</style>
</head>
<body>
    <div></div>
</body>

从上面的代码中,我们首先要知道:

  ①.盒子的真实宽度和真实高度是不算margin(外边距的),因为外边距连看都看不着,它是自身与其它盒子的距离!

②.realWidth = contentWidth+border*2+leftPadding+rightPadding=100+10*2+20*2=160

③.realHeight= contentHeight+border*2+topPadding+bottomPadding=100+10*2+10+30=160

④.区分盒模型的大小和盒子大小的计算方式,盒子大小是不算margin的,而盒模型是算margin的!

⑤.求可视区的宽和高实际上是指的求盒子的宽和高、因为margin是不可见的,所以这里说的也就是求盒子的宽和高!

现在我们就可以用盒子模型来做一个远视图的东西:

下边我们就用代码实现以下:实际上就是盒子嵌套盒子,然后确保内层盒子在外层盒子中间即可!那如何确保内层盒子在外层盒子中间呢?只需要让内层盒子占满外层盒子的内容区,然后给外层盒子加上等宽和等高的padding即可!如下所示:

 1 <style type="text/css">
 2     .content4{
 3         width:10px;
 4         height:10px;
 5         background-color:black;
 6     }
 7     .content3{
 8         width:10px;
 9         height:10px;
10         padding:10px;
11         background-color:green;
12     }
13     .content2{
14         width:30px;
15         height:30px;
16         padding:10px;
17         background-color:skyblue;
18     }
19     .content1{
20         width:50px;
21         height:50px;
22         padding:10px;
23         background-color:blue;
24     }
25 </style>
26 </head>
27 <body>
28     <div class="content1">
29         <div class="content2">
30             <div class="content3">
31                 <div class="content4"></div>
32             </div>
33         </div>
34     </div>
35 </body>

代码如上所示:效果图为:

当然效果还有点区别,我们只需要将颜色再调试一下就OK了,如下所示:

 1 <style type="text/css">
 2     .content4{
 3         width:10px;
 4         height:10px;
 5         background-color:#fff;
 6     }
 7     .content3{
 8         width:10px;
 9         height:10px;
10         padding:10px;
11         background-color:green;
12     }
13     .content2{
14         width:30px;
15         height:30px;
16         padding:10px;
17         background-color:#fff;
18     }
19     .content1{
20         width:50px;
21         height:50px;
22         padding:10px;
23         background-color:green;
24     }
25 </style>
26 </head>
27 <body>
28     <div class="content1">
29         <div class="content2">
30             <div class="content3">
31                 <div class="content4"></div>
32             </div>
33         </div>
34     </div>
35 </body>

这样效果就OK了,如下所示:

只不过在这个的基础上,多嵌套几层就能得到远视图的效果了!

不过这里我们要注意一个问题:就是当我们新创建一个一定高度和宽度的div之后,你会发现该div并不是直接紧邻着浏览器左上角的,而是如下所示:

代码及效果图如下:

下面我们再讲一下定位

定位我们用到的属性是postition,其值有:absolute、

注意:使用position属性时还必须使用另外的top、left、bottom、right属性,而且top和left属性和position属性搭配使用!当然top和bottom只能同时出现一个,而left和right也只能同时出现一个!当然我们很少使用bottom,因为很多网页的底部不是立马可见的,需要拉动右边的边框往下拖,如:淘宝首页!

如下代码及效果所示:

 1 <style type="text/css">
 2     div{
 3         position:absolute;
 4         left:100px;
 5         top:100px;
 6         width:100px;
 7         height:100px;
 8         background-color: red;
 9     }
10 </style>
11 </head>
12 <body>
13     <div></div>
14 </body>

这段代码在浏览器中的效果为:

即距离浏览器的上边框和左边框都是100px!

时间: 2024-10-10 23:50:08

盒子模型及层模型【定位】的相关文章

css模型之层模型

css层模型说的是position这个属性,它有四个常用值,分别是static.relative.absolute.fixed. 1.static:这个是元素的默认值,特点是页面会依照自左向右.自上向下的方向布局,并且设置top.right.bottom.left值是没有用的,并且设置z-index也是没有用的,不能进行特殊定位: 2.relative:相对定位,什么是相对?相对于谁?相对是 相对于自身 原本不设置此属性值时 应该在的位置,即默认的文档流应该在的位置.特点是,设置此属性值后该元素

学习总结:CSS(一)块级与行级元素特性、盒模型、层模型、BUG与BFC、浮动模型

.displayTal { width: 100%; font-size: 13px } .displayTal1 { width: 30%; height: 30px; font-size: 13px; color: #009933 } .displayTal2 { width: 40%; height: 30px; font-size: 13px; color: #009933 } .displayTal3 { width: 30%; height: 30px; font-size: 13p

布局模型 之 层模型(position的relative、absolute与fixed区别?)

css的布局模型分为流动模型(Flow).浮动模型(Float).层模型(Layer). 浮动模型(Float)和层模型(Layer)有什么显著区别?     浮动模型(Float):浮动是让某元素脱离文档流的限制,在浮动框之前和之后的非定位元素会当它不存在一样,可能沿着它的另一侧垂直流动:浮动的元素仍然会占据文档流的物理空间.关于浮动模型的详细说明请看另一篇文章的介绍.http://ycgit.blog.51cto.com/8590215/1958452 层模型(Layer):设置为层模型的元

CSS:3种基本的布局模型、层模型的三种形式

CSS包含3种基本的布局模型: 用英文概括为:Flow.Layer 和 Float.在网页中,元素有三种布局模型:1.流动模型(Flow)2.浮动模型 (Float)3.层模型(Layer) 流动布局模型具有2个比较典型的特征: 第一点,块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%.实际上,块状元素都会以行的形式占据位置.如右侧代码编辑器中三个块状元素标签(div,h1,p)宽度显示为100%. 第二点,在流动模型下,内联元素都会在所处的

CSS布局模型(流动模型、浮动模型、层模型)

在网页中,元素有三种布局模型: 1.流动模型(Flow) default,就是块级元素都自上而下的分布,宽度都为100%.内联元素都从左到右水平分布. 2.浮动模型 (Float) div.p.table.img 等元素都可以设置为浮动.两个 div 显示在一行的代码如下: div{ width:200px; height:400px; border:2px red solid; float:left; } 3.层模型(Layer) 层模型有三种形式: (1)绝对定位(position: abs

企业开发经验之盒子模型和层模型

1.如何让单行文本垂直居中?height和line-height的值相同,文本就会居中, 首行缩进:text-indent: 2em;  代表首行缩进2个字的空格  1em=1* 16px. 文字的行高是1.2倍宽高:line-height:1.2em. 2.图片是行内块元素,只要是inline属性都具有文本特性,不愿染是与非  怎料事与愿违.只要在HTML中写里两句,它们之间都会有空格.因此图片它们也会产生空格,像下图那样. 怎么解决以上问题, <img src="img/1.jpg&q

OSI模型七层模型结构

OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI. OSI/RM协议是由ISO(国际标准化组织)制定的,它有三个基本的功能:提供给开发者一个必须的.通用的概念以便开发完善.可以用来解释连接不同系统的框架. OSI将计算机网络体系结构(archite

什么是层模型?

什么是层布局模型?层布局模型就像是图像软件PhotoShop中非常流行的图层编辑功能一样,每个图层能够精确定位操作,但在网页设计领域,由于网页大小的活动性,层布局没能受到热捧. 但是在网页上局部使用层布局还是有其方便之处的.下面我们来学习一下html中的层布局. 如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作.CSS定义了一组定位(positioning)属性来支持层布局模型. 层模型有三种形式: 1.绝对定位(position: a

CSS层模型

参考:慕课网 点此可进 如何让html元素在网页中精确定位,就像图像软件PhotoShop中的图层一样可以对每个图层能够精确定位操作.CSS定义了一组定位(positioning)属性来支持层布局模型. 层模型有三种形式: 1.绝对定位(position: absolute) 2.相对定位(position: relative) 3.固定定位(position: fixed) 绝对定位 需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用le