css盒子模型

网页布局的关键点:盒子

盒子模型组成部分

盒子的组成

  • margin(外边距)
  • border(边框)
  • padding(内边距)
  • content(内容)

border

  • border-width:盒子的宽度
  • border-style:边框的款式 默认值:none(无款式) solid(实线) dashed(虚线) dotted(点线)
  • border-color:边框的色彩

简写形式

    border:border-width  border-style  border-color
<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            div {                width: 200px;                height: 200px;                background-color: #0000FF;                border: 10px solid #008000;            }        </style>    </head>    <body>        <div></div>    </body></html>

border的边框写法

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            input {                border: none;                border-bottom:1px solid red;            }        </style>    </head>    <body>        账号:<input type="text" name="username"> <br />        明码:<input type="password" name="password"> <br />    </body></html>

border-collapse

border-collapse:表格合并

因为表格中的行标签和单元格标签都领有本人的边框 因而须要合并边框

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <meta name="viewport" content="width=device-width, initial-scale=1.0">        <title>Document</title>        <style type="text/css">            table,            tr,            td,            th {                border-collapse: collapse;            }            .t-red {                background-color: hotpink;            }        </style>    </head>    <body>        <table border="1" cellspacing="0" cellpadding="0" align="center" height="300" width="500">            <caption>                <h2>小说排行耪</h2>            </caption>            <tr class="t-red">                <th>排名</th>                <th>关键词</th>                <th>今日搜寻</th>                <th>最近七日</th>                <th>相干链接</th>            </tr>            <tr>                <td>1</td>                <td>鬼吹灯</td>                <td>345</td>                <td>123</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>            <tr>                <td>2</td>                <td>盗墓笔记</td>                <td>34555</td>                <td>123444</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>            <tr>                <td>3</td>                <td>西游记</td>                <td>24555</td>                <td>13444</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>            <tr class="t-red">                <td>4</td>                <td>东游记</td>                <td>3455</td>                <td>3444</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>            <tr>                <td>5</td>                <td>甄嬛传</td>                <td>3555</td>                <td>1444</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>            <tr>                <td>6</td>                <td>水浒传</td>                <td>355</td>                <td>12344</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>            <tr class="t-red">                <td>7</td>                <td>三国演义</td>                <td>3555</td>                <td>13444</td>                <td>                    <a href="#">贴吧</a>                    <a href="#">百度</a>                    <a href="#">图片</a>                </td>            </tr>        </table>    </body></html>

padding

padding:盒子间隔内容之间的间隔 应用内边距之后盒子会变大

padding设置

padding简写

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            div {                width: 200px;                height: 200px;                color: red;                border: 1px solid blue;                padding: 20px 50px 20px 60px;            }        </style>    </head>    <body>        <div>尧子陌</div>    </body></html>

新浪导航栏

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            .nav {                height: 41px;                border-top: 3px solid #ff8500;                border-bottom: 1px solid gray;            }            .nav>a {                display: inline-block;                line-height: 41px;                text-decoration: none;                color: #000000;                padding: 0px 20px;            }            .nav>a:hover {                background-color: #eee;                color: red            }        </style>    </head>        <body>        <div class="nav">            <a href="#">设为首页</a>            <a href="#">手机新浪网</a>            <a href="#">挪动客户端</a>            <a href="#">登录</a>            <a href="#">微博</a>            <a href="#">博客</a>        </div>    </body></html>

效果图

盒子理论尺寸

    盒子的宽度:Elements width= content Width + padding Width + border    盒子的高度:Elements height= ontent height + padding height +border

在真正的理论开发中,内边距是肯定要实在存在的,所以只能减去盒子的宽高,来维持盒子的宽高不变

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            .nav {                width: 200px;                height: 200px;                background-color: #0000FF;                padding: 20px;                border: 1px solid red;            }            /* 盒子的理论宽度=200px+20px+20px+1px+1px=242px */            /* 盒子的理论高度=200px+20px+20px+1px+1px=242px */        </style>    </head>    <body>        <div class="nav"></div>    </body></html>

课堂案例

案例1

盒子的宽度为130

案例2

盒子宽度为200px+100px+50px+2px=352px

盒子高度为200px+50px+50px+1px+5px=306px

padding不影响盒子大小的状况下

在非凡状况下,如果指定的盒子没有给宽度,则盒子不会被padding值撑开。
<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            .nav {                height: 200px;                width: 200px;                background-color: #0000FF;            }            .nav p {                height: 200px;                padding-left: 20px;                /*此时p的宽度和父元素同为200px */            }        </style>    </head>    <body>        <div class="nav">            <p></p>        </div>    </body></html>

margin

margin是外边距,是盒子与盒子之间的间隔

margin的简写

同理和padding值的简写统一

块级盒子程度居中对齐

满足两种条件能力让盒子居中对齐1. 盒子必须指定宽度2. 左右的外边距margin设置auto

设置auto的三种办法

  • margin-left:auto margin-right:auto;
  • margin:auto
  • margin:0 auto;
<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style type="text/css">            .nav {                width: 200px;                height: 200px;                background-color: #0000FF;                margin: 20px auto;            }        </style>    </head>    <body>        <div class="nav"></div>    </body></html>

盒子程度居中对齐和文字水平居中对齐

text-align:不仅能够让文字水平居中对齐,还能够让行内块元素和行内元素程度居中对齐

margin:auto :能够让块级盒子程度居中对齐

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style type="text/css">            body {                background-color: rgba(0, 0, 0, 0.6);            }            .nav {                width: 200px;                height: 200px;                background-color: #0000FF;                color: wheat;                margin: 20px auto;                text-align: center;                line-height: 200px;            }        </style>    </head>    <body>        <div class="nav">尧子陌</div>    </body></html>

插入图片和背景图片的区别

插入图片

插入图片个别用于展现类 ,通过盒模型的padding和margin来挪动地位
<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            .nav {                width: 800px;                height: 800px;                      border:1px solid red;            }            .nav img {                margin: 20px;                margin-top: 50px;            }        </style>    </head>        <body>        <div class="nav">            <img src="../WEB照片/素材.jpg" alt="">        </div>    </body></html>

背景图

背景图片个别用于做一些精灵图等等,通过background-position来挪动地位
<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style type="text/css">            .nav {                width: 800px;                height: 800px;                border: 1px solid red;                background-image: url(../WEB照片/素材.jpg);                background-position: 20px 50px;                background-repeat: no-repeat;            }        </style>    </head>    <body>        <div class="nav"></div>    </body></html>

革除元素的默认的内外间距

* {    margin:0;    padding:0;}

注意事项

  • 为了关照行内元素的兼容性,只设置左右内外边距,不设置高低内外边距;

外边距合并问题

相邻块元素外边距合并问题

相邻块元素合并:取两个块元素外边距合并的较大值,所以只给一个盒子的外边距是最好的解决办法

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            .head,            .foot {                width: 200px;                height: 200px;                background-color: #0000FF;            }            .head {                margin-bottom: 50px;            }            .foot {                margin-top: 60px;            }        </style>    </head>    <body>        <div class="head"></div>        <div class="foot"></div>    </body></html>

嵌套块元素外边距合并问题的三个办法

嵌套块元素外边距合并问题的三个办法

  • 给父元素border值
  • 给父元素padding值
  • 给父元素overfiow:hidden;
<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title></title>        <style>            .father {                width: 600px;                height: 600px;                background-color: pink;                /* border-top: 1px solid transparent; */                /* padding-top:1px ; */                overflow: hidden;            }            .son {                width: 200px;                height: 200px;                background-color: #0000FF;                margin-top: 50px;            }        </style>    </head>    <body>        <div class="father">            <div class="son"></div>        </div>    </body></html>

盒子布局稳定性

ps应用

  • ctrl+o:关上文件
  • ctrl+r :关上标尺
  • ctrl+ + :放大
  • ctrl+ - : 放大
  • 按住空格 能够挪动视图
  • 吸管工具:汲取色彩
  • 选框工具:测量宽高

去掉列表默认的款式

    li {        list-style:none;    }

新闻案例

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title></title>    <style type="text/css">        * {            margin: 0;            padding: 0;        }                .nav {            width: 300px;            height: 230px;            border: 1px solid #ccc;            margin: 100px auto;            padding: 0px 15px;            background: url(images/line.jpg);        }                .nav h2 {            font-size: 16px;            padding-top: 20px;            padding-bottom: 10px;            border-bottom: 1px solid #CCCCCC;        }                .nav ul li {            height: 32px;            line-height: 32px;            list-style: none;            padding-left: 15px;            background: url(images/arr.jpg) no-repeat 0px center;            border-bottom: 1px dashed #ccc;        }                .nav li a {            color: #333;            font-size: 12px;            text-decoration: none;        }                .nav li a:hover {            text-decoration: underline;        }    </style></head><body>    <div class="nav">        <h2>最新文章 /New Articles</h2>        <ul>            <li><a href="#">北京招聘平面设计,网页设计,php</a></li>            <li><a href="#">体验javascript的魅力</a></li>            <li><a href="#">jquery的世界降临</a></li>            <li><a href="#">网页设计师的幻想</a></li>            <li><a href="#">jquery中的链式编程是什么</a></li>        </ul>    </div></body></html>

效果图

圆角边框

设置圆形

    border-radius:50%;

设置矩形

border-radius:高度的一半

border-radius的简写

border-radius:左上角  右上角 右下角  左下角

代码

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title></title>    <style>        /* 设置圆角 */        div {            width: 200px;            height: 200px;            background-color: blue;            border-radius: 50%;        }        /* 设置矩形*/        div:nth-child(2) {            width: 200px;            height: 50px;            background-color: red;            border-radius: 25px;        }          </style></head><body>    <div></div>    <div></div></body></html>

盒子的暗影

box-show:盒子暗影
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        div {            width: 200px;            height: 200px;            background-color: blue;            box-shadow: 20px 20px 2px 20px red inset;        }    </style></head><body>    <div></div></body></html>


css书写标准

  • 选择器与{}之间保留空格 属性与属性值之间保留空格
  • 嵌套元素不应该超过三级
  • 属性值应以分号完结