HTML基础03-盒模型

129 阅读3分钟

一.盒模型

概念

盒模型结构像一个盒子一样,包含多个组成部分,用来页面的精细化布局。所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

二.盒模型的组成

  1. 内容区域:content,展示内容(文字,图片等),大小只由宽和高决定。 Width和height。
  2. 内填充:padding,调整是元素自身的内容和元素边框的距离。 注意padding的简写形式,四个值, 三个值,两个值,一个值。
  3. 边框:border。 可以分别设置四个方向上的边框。
  4. 外间距:margin。调整的是该元素和相邻元素的距离。

需求:如何让元素自身在父元素中水平居中?

解决方法: 给元素添加margin属性, 设置为: margin:0 auto; (上下:0 左右:auto)

margin-left,margin-right = (父元素的宽度 – 自身元素宽度) / 2;

1. 盒模型上课代码
padding内填充在css中的写法:
      /*padding*/
            /*写法1   上下左右  */
            padding: 20px;
            /*写法2 上下  左右*/
            padding: 20px 30px;
            /*写法3  上  左右  下*/
            padding: 20px 30px 0;
            /*写法4  上 右  下 左*/
            padding: 10px 20px 0 30px;
            /*写法5 按照方向  left top right bottom*/
            padding-bottom: 50px;
            padding-left: 50px;
            ...
border边框在css中的写法:
             /*border边框*/
            /*边框颜色 默认黑色*/
            border-color: red;
            /*边框宽度 默认为0*/
            border-width: 5px;
            /*边框风格 
             solid 实线
             dotted 圆形虚线
             dashed 方形虚线
             */
            border-style: solid;
            /*推荐 综合写法 */
            border: 10px solid seagreen;
            /*按照方位来写  left top right bottom*/
            border-bottom: 5px dotted dodgerblue;
            border-left: 6px solid salmon;
            /*切圆角 切四个角*/
            border-radius: 10px;
            /*按照方位切圆角*/
            border-bottom-left-radius: 30px;
            border-top-right-radius: 30px;
            /*如果某一方位不需要设置边框*/
            border-right: none;
margin外间距在css中的写法同padding:

特殊情况,如果需要块元素在其父标签中左右居中.可以设置 margin:0 auto;

2. 打开谷歌浏览器的检查工具。

1.在网页的空白区域右击,弹出菜单。 2.在菜单中选择"检查"。 3.选中代码检查区的左上角的选择按钮。

1.png

  1. 移动鼠标,移动到要查看盒模型的矩形区域上,然后鼠标左键单击,在代码检查区的右部可查看该元素的盒模型结构。

2.png

margin值在使用时的问题:

1.两个元素上下布局的时候, 如果同时设置了上面标签的margin-bottom和下面标签的margin-top,那么两个标签的上下间隔取其中的最大值. 不会累加!

7.png

2.两个元素在左右布局的时候,如果同时设置了左边标签的margin-right和右边标签的margin-left,那么两个标签的水平间隔是左边标签的margin-right + 右边标签的margin-left.

3.在父子关系中, 第一个子标签也就是one的margin-top值会传递给父标签box; a.给box加border阻断传递. b.给box加overflow:hidden;阻断传递 推荐:如果真的需要父子标签有间隔,推荐给父标签设置 padding内填充!!

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #d1{
                width: 200px;
                height: 200px;
                background-color: palegreen;
                margin-bottom: 110px;
            }
            
            #d2{
                width: 300px;
                height: 300px;
                background-color: palevioletred;
                margin-top: 100px;
            }
                #box{
                width: 700px;
                height: 670px;
                background-color: palegoldenrod;
                margin-left: 100px;
                /*阻断top传递 方式1*/
                /*border: 1px solid paleturquoise;*/
                /*方式2 */
                /*overflow: hidden;*/
            }
            #one{
                width: 100px;
                height: 100px;
                background-color: red;
                margin-top: 30px;
                
            }
            #two{
                width: 800px;
                height: 200px;
                background-color: green;
                margin-top: 30px;
                
            }
            #three{
                width: 300px;
                height: 300px;
                background-color: blue;
                
            }
        </style>
    </head>
    <body>
        <!--兄弟标签之间的间隔用margin  
            上下标签间隔最大值!
            左右标签间隔取相加!
        -->
        <div id="d1">1111111111</div>
        <div id="d2">2222222222</div>
    
        <div id="box">
            <div id="one">1</div>
            <div id="two">2</div>
            <div id="three">3</div>
        </div>
        
        
        
    </body>
</html>

四.盒模型练习

1.映纷创意顶部

效果图:

3.png

代码如下:

HTML部分
<div class="nav">
            <img src="img/1.png"/>
            <div class="title">
                <a href="###">HOME</a>
                <a href="###">WORK</a>
                <a href="###">CONTACT</a>
                <a href="###">JOIN US</a>
            </div>
        </div>
CSS部分
 <style type="text/css">
           *{
               margin: 0;
               padding: 0;
           } 
           a{
               text-decoration: none;
               }
           .nav{
            width: 100%;
            background-color: rgba(0,0,0,0.75);
            text-align: center;
            padding: 5px 0;
           }
           
           .nav img{
            height: 44px;
           }
           
           .title{
            padding-top: 6px;
           }
           
           .title a{
            color: darkgrey;
            font-size: 14px;
            margin: 0 30px;
           }
           
           .title a:hover{
            color: #f2f2f3;
           }
           .title a:first-child{
            color: #f2f2f3;
           }
            
        </style>

五.标签的显隐性

1.display:none; 隐藏 display:block;显示 不保留标签位置

2.opacity: 0; 隐藏 opacity:1; 通过透明度控制显示和隐藏, 为标签保留位置;

3.visibility: hidden;隐藏 visibility: visible;显示 为标签保留位置

<head>
        <meta charset="UTF-8">
        <title>显隐性</title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            #box{
                width: 500px;
                height: 500px;
                background-color: red;
            }
            #one{
                width: 300px;
                height: 300px;
                background-color: yellow;
                /*方式1: 透明度控制  0完全透明     标签一直都在,只是透明化了. 会保留标签的位置*/
                /*opacity: 0;*/
                /*方式2: 显示控制属性  标签隐藏了,但是会为标签保留位置.*/
                visibility: hidden;
                /*方式3  display转换    none将标签转为空.不会为标签保留位置*/
                /*display:none;*/
            }
            
            #one:hover{
                /*opacity: 1;*/
                
            }
            #box:hover>#one{
                visibility: visible;
                /*display: block;*/
            }
            
            #two{
                width: 100px;
                height: 100px;
                background-color: green;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <div id="one">1112143244344</div>
            <div id="two"></div>
        </div>
        
    </body>
</html>