自学html--two(盒模型)

一、盒模型的概念

     html的布局类似盒子模型,直观理解如下图:

自学html--two(盒模型)_第1张图片

简单介绍:

margin是相邻div之间的间距,影响的是不同块元素的之间的位置;

border是div盒模型的盒边框,分别有三个要素:边框厚度反应的是边框大小,边框风格即边框样式(实线,虚线,点线等等),边框颜色color;

padding内边框厚度,这个值主要控制div内容的缩减程度,其颜色跟随div背景颜色。

代码示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>盒模型之border</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
<style>
div{
    width: 300px;
    height: 300px;
    background: blue;

    /*border: 10px solid red;/*设置边框宽度像素为10,样式为实线,颜色为红色*/
    
    border: 6px dashed purple;/*设置边框宽度为6像素,样式为虚线,颜色为紫色*/
    
    /*border-top: 10px dashed pink;/*设置单个方向的边框 top bottom left right*
    
    /*也可以设置边框的3要素之1,比如颜色*/
    border-style: solid;
    border-width: 10px;
    border-color: orange;

    /*也可以与相应的方向进行组合*/
    border-top-style: dashed;
    border-right-color: red;
    border-left-width: 5px;

}
</style>
</head>
    <body>
        <div>盒子的border三要素 宽,样式,颜色 </div>
    </body>
</html>

实线效果截图:

自学html--two(盒模型)_第2张图片

 二、CSS控制div的边框画三角形

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>用css控制border画三角形</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
<style>
div{
    height: 200px;
    background: gray;
}
#trip{
    width: 0px;
    height: 0px;
    border-top:50px solid transparent;/*transparent 设置边框颜色为透明*/
    border-right:50px solid transparent;
    border-bottom:50px solid green;
    border-left:50px solid transparent;
}
</style>
</head>
    <body>
        <div>
            <div id="trip"></div>
        </div>
    </body>
</html>

 

效果截图:

自学html--two(盒模型)_第3张图片

 

练习:尝试用css控制margin,border布局,画出简单的圣诞树

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>用css控制border画圣诞树</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />

<style>
#header{
    width: 0px;
    height: 0px;
    border-left:100px solid white;
    border-top: 100px solid white;
    border-right: 100px solid white;
    border-bottom: 100px solid green;
    float: left;
    margin-left: 100px;
}
#main{
    width:0px;
    height:0px;
    border-top: 200px solid white;
    border-left: 200px solid white;
    border-right: 200px solid white;
    border-bottom: 200px solid green;
}
#footer{
    width: 50px;
    height: 200px;
    background: gray;
    margin-left: 175px;
}
</style>

</head>

<body>

<div id="header"></div>

<div id="main"></div>

<div id="footer"></div>

</body>

</html>


效果图:

自学html--two(盒模型)_第4张图片

 

三、padding详解

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>padding详解</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
</head>
<style>
    div{
        background: gray;
        
        /*padding: 10px;*/
        
        /*
        padding-top: 10px;
        padding-left: 20px;
        padding-bottom: 30px;
        padding-right: 40px;
        */

        /*padding主要控制div内容的缩进*/        
        padding: 10px 20px 30px 40px;
    }
</style>
<body>
    <div>
        《三体》三部曲,又名“地球往事”三部曲,作者刘慈欣。该系列小说由《三体》、《黑暗森林》、《死神永生》三部小说组成,于2006年至2010年由《科幻世界》杂志连载,出版。
《三体》三部曲讲述了地球文明和三体文明在宇宙中的兴衰历程。作品对人类历史、物理学、天文学、社会学及哲学等均有涉及,从科幻的角度对人性进行了深入探讨,全书格局宏大,立意高远,被誉为迄今为止中国当代最杰出的科幻小说,是中国科幻文学的里程碑之作,将中国科幻推上了世界的高度。
2014年底小说第一部的英文版在美国上市,反响热烈,[1]  并于2015年获得美国科幻奇幻协会“星云奖”等五个奖项提名。[2]  2015年8月23日,《三体》获第73届世界科幻大会颁发的雨果奖最佳长篇小说奖[3]  ,这是亚洲科幻小说首次获得雨果奖。[4]  10月,作者刘慈欣因该作获得全球华语科幻文学最高成就奖。
    </div>
</body>

</html>

效果图:

自学html--two(盒模型)_第5张图片

以上效果图1、2、3、4处像素分别是10px,20px,30px,40px

一半div增加了padding值,整体变大

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>padding与背景</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
</head>
<style>
    div{
        width: 200px;
        height: 200px;
        border:10px solid blue;
        background: gray;
        padding: 20px;
    }
</style>
<body>
    <div>
        hello world
    </div>
</body>

</html>

效果图:

自学html--two(盒模型)_第6张图片

说明:

div大小为200px*200px;

border边框宽度为10px,边框样式为蓝色实线;

div背景颜色为灰色

padding内边距为20px,颜色跟随div背景色

四、实战首页布局示例(运用padding对文中缩进进行优化)

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>5.实战首页布局</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
<style>
    #container{
        width: 1002px;
        /*高度暂时不需要设置,子元素的高度会把父元素的高度撑起来*/
        background: gray;
    }
    #header{
        height: 120px;
        background: orange;
    }
    #main{
        height: 600px;
        background: green;
    }
    #lside{
        width: 700px;
        height: 600px;
        float: left;
        background: pink;
    }
    .four{
        width: 300px;
        height: 250px;
        background: white;
        margin: 10px;
        padding: 10px;
        float: left;
    }
    #rside{
        width: 302px;
        height: 600px;
        background: purple;
        float: right;
    }
    #footer{
        height: 120px;
        background: blue;
    }
</style>
</head>
    <body>
        <div id="container">
            <div id="header"></div>
            <div id="main">
                <div id="lside">
                    <div class="four">
                        《三体》三部曲,又名“地球往事”三部曲,作者刘慈欣。该系列小说由《三体》、《黑暗森林》、《死神永生》三部小说组成,于2006年至2010年由《科幻世界》杂志连载,出版。
                    </div>
                    <div class="four">
《三体》三部曲讲述了地球文明和三体文明在宇宙中的兴衰历程。作品对人类历史、物理学、天文学、社会学及哲学等均有涉及,从科幻的角度对人性进行了深入探讨,全书格局宏大,立意高远,被誉为迄今为止中国当代最杰出的科幻小说,是中国科幻文学的里程碑之作,将中国科幻推上了世界的高度。
2014年底小说第一部的英文版在美国上市,反响热烈,[1]
                    </div>
                    <div class="four">
并于2015年获得美国科幻奇幻协会“星云奖”等五个奖项提名。[2]  2015年8月23日,《三体》获第73届世界科幻大会颁发的雨果奖最佳长篇小说奖[3]  
                    </div>
                    <div class="four">
  2015年8月23日,《三体》获第73届世界科幻大会颁发的雨果奖最佳长篇小说奖[3]  ,这是亚洲科幻小说首次获得雨果奖。[4]  10月,作者刘慈欣因该作获得全球华语科幻文学最高成就奖。
                    </div>
                </div>
                <div id="rside"></div>
            </div>
            <div id="footer"></div>
        </div>
        
    </body>
</html>

效果图:

自学html--two(盒模型)_第7张图片自学html--two(盒模型)_第8张图片

五、盒子模型的总结

1、盒子与盒子之间距离优先用margin,盒子与文字之间的距离优先用padding

2、盒子的实际占据空间大小:

    竖直方向上:height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottomm
    水平方向上:width + padding-left + padding-right + border-left + border-right + margin-left + margin-right

 六、利用margin实现元素的水平居中

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>利用margin实现水平居中</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
<style>
    #container{
        width: 1000px;
        height: 200px;
        background: blue;
        margin: 0px auto;/*会根据父类div自适应屏幕居中*/
    }
</style>
</head>
    <body>
        <div id="container">
        </div>
    </body>
</html>

 

效果图:

自学html--two(盒模型)_第9张图片

 

 

七、margin重叠现象研究(暂不含父子div的margin重叠现象)

结论:上下相邻的普通元素,上下边距并非是简单的相加,而是取其中较大的边距值,这种现象叫做margin重叠。

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>margin重叠现象研究</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
<style>
    #test1{
        height: 100px;
        background: blue;
        margin-bottom: 50px;
    }
    #test2{
        height: 100px;
        background: green;
        margin-top: 50px;
    }
</style>
</head>
    <body>
        <div id="test1">
            上下相邻的普通元素,上下边距并非是简单的相加,<br />
            而是取其中较大的边距值<br />
            这种现象叫做margin重叠。
        </div>
        <div id="test2"></div>
    </body>
</html>

效果图:

自学html--two(盒模型)_第10张图片

 

 

八、内联元素(行内元素)

内联元素小结:因为是行内元素,所以受到行的限制,在竖直方向上的margin和padding设置了都将没有效果。

目的:修改古诗中的“小荷”字体颜色为红色。

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>inline内联元素(行内元素)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
<style>
    #changecolor{
        color: red;
    }
</style>
</head>
    <body>
        <div>
            泉眼无声惜细流,<br />
            树阴照水爱晴柔。<br />
            <span id="changecolor">小荷</span>才露尖尖角,<br />
            早有蜻蜓立上头。<br />
        </div>
    </body>
</html>

效果图:

自学html--two(盒模型)_第11张图片

 

九、块元素与内联元素的区别

 

  独占一行 能设宽高 竖直方向的margin,padding
块元素 有,可以设置
内联元素 没有,也不能设置

十、内联与块状元素的转化

display:inline; 转为内联元素

display:block;转为块状元素

display:none;没有

 

示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>内联与块状元素的转化</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="顺手给我new一个对象 http://www.cnblogs.com/HOYF" />
 <style>
 span{
     width: 200px;/*因为span是内联元素,所以设置了也没有效果*/
     height: 200px;/*因为span是内联元素,所以设置了也没有效果*/
    background: blue;
    display: block;/*把span元素转化为块元素,则上面的宽高生效*/
 }
 div{
     width: 200px;
     height: 200px;
    background: orange;
    display: inline;/*把div转化为行内元素,上面的宽高代码不生效*/
 }
 </style>
</head>
    <body>
        <div>块状</div>
        <span>行内</span>
    </body>
</html>

效果图:

自学html--two(盒模型)_第12张图片

你可能感兴趣的:(自学html--two(盒模型))