码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-03 11:41:44      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:方向   images   html   tom   position   png   单点   外边距   打开   

 

 

首先需要说明,盒子模型是针对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>
View Code

可以在火狐浏览器打开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>
View Code

展现出来的效果图为:

技术分享图片

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

  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>
View Code

效果如下所示:

技术分享图片

如果说我不想设置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>
View Code

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

技术分享图片
 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>
View Code

当然还可以为四个方向单独设置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>
View Code

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

  ①.盒子的真实宽度和真实高度是不算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>
View Code

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

技术分享图片

当然效果还有点区别,我们只需要将颜色再调试一下就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>
View Code

这样效果就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>
View Code

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

技术分享图片即距离浏览器的上边框和左边框都是100px!

 

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

标签:方向   images   html   tom   position   png   单点   外边距   打开   

原文地址:http://www.cnblogs.com/python-machine/p/7965369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!