目录:
(1)网页布局的实质
(2)盒子边框(border)
(3)表格的细线边框
(4)表格的细线边框
(5)内边距(padding)
(6)外边距(margin)
(7)清除元素默认的内外边距
(8)新浪导航栏小案例(padding练习)
(9)搜索趣图小案例(margin练习)

(1)网页布局的实质

把网页元素(比如文字图片等)放入盒子里面,然后利用CSS摆放盒子的过程,就是网页布局。简单一句话就是:用CSS来摆放盒子。

盒子模型(box model):

(2) 盒子边框(border)

语法:
Border:border-width  ||  border-style  ||  border-color
边框属性-设置边框样式(border-style)

边框样式用于定义页面中边框的风格,常用属性如下:

  • none:没有边框即忽略所有边框的宽度(默认值)。
  • solid:边框为单实线(最常用)。
  • dashed:边框为虚线。
  • dotted:边框为点线。 Double:边框为双实线。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> div {
            width: 100px;
            height: 100px;
            border-width: 10px;
            border-color: pink;
            /* border-style: solid; */
            /* border-style: dashed; */
            /* border: dotted; */
            border-style: double;

        }

        input {
            border: 0;
        }

        .user {
            border-width: 1px;
            border-color: pink;
            border-style: solid;
        }

        .nc {
            border: 1px dashed pink;
        }

        .email {
            border-top: 1px solid red;
            border-bottom: 1px solid red;
        }

        .tel {
            border: 1px solid skyblue;
        }
    </style>
</head>

<body>
    <div>我是一个盒子</div>
    用户名:<input type="text" class="user/"><br />
    用户名:<input type="text" class="nc"><br />
    邮 箱:<input type="email" class="email"><br />
    手 机:<input type="tel" class="tel"><br />
</body>

</html>

(3)表格的细线边框

语法:
table {border-collapse:collapse}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> table {
            width: 700px;
            height: 300px;
            border: 1px solid red;
            /* 合并相邻边框 */
            border-collapse: collapse;
        }

        td {
            border: 1px solid red;
        }
    </style>
</head>

<body>
    <table cellspacing="0">
        <tr>
            <td>123</td>
            <td>123</td>
            <td>123</td>
        </tr>
        <tr>
            <td>123</td>
            <td>123</td>
            <td>123</td>
        </tr>
        <tr>
            <td>123</td>
            <td>123</td>
            <td>123</td>
        </tr>
        <tr>
            <td>123</td>
            <td>123</td>
            <td>123</td>
        </tr>
        <tr>
            <td>123</td>
            <td>123</td>
            <td>123</td>
        </tr>
    </table>
</body>

</html>

(4)圆角边框

语法:
Border-radius:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> div {
            width: 200px;
            height: 200px;
            border: 1px solid red;
        }

        div:first-child {
            border-radius: 20px;
            /* 一个数值表示 四个角都是相同的 */
        }

        div:nth-child(2) {
            /* 取宽度和高度的一半就会变成一个圆形 */
            border-radius: 100px;

            border-radius: 50%;
        }

        div:nth-child(3) {
            /* 左上角和右下角 右上角和左下角 */
            border-radius: 10px 40px;
        }

        div:nth-child(4) {
            /* 左上角 右上角和左下角 右下角 */
            border-radius: 10px 40px 80px;
        }

        div:nth-child(5) {
            /* 从左上角开始 按照顺时针方向 */
            border-radius: 10px 40px 80px 100px;
        }

        div:nth-child(6) {
            border-radius: 100px 0;

        }
    </style>
</head>

<body>
    <div>20px</div>
    <div>50%或100px</div>
    <div>10px 40px</div>
    <div>10px 40px 80px</div>
    <div>10px 40px 80px 100px</div>
    <div>自由发挥</div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</body>

</html>

(5)内边距(padding)

Padding属性用于设置内边距,指边框与内容之间的距离。
Padding-top/bottom/left/right
后面跟几个数值表示的意思是不一样的:
1个值 padding:上下左右边距。
2个值 padding:上下边距 左右边距 。
3个值 padding 上边距 左右边距 下边距。
4个值 padding 上右下左边距。

注意:行内元素只有左右外边距,没有上下内外边距。内边距在ie6等低版本浏览器也会有问题。 (以后尽量不要给行内元素指定上下内外边距)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> div {
            width: 200px;
            height: 200px;
            border: 1px solid red;

            /* 1个值 padding:上下左右边距。 */
            padding: 20px;
            /* 2个值 padding:上下边距 左右边距 。 */
            padding: 10px 30px;
            /* 3个值 padding 上边距 左右边距 下边距。 */
            padding: 10px 30px 50px;
            /* 4个值 padding 上右下左边距。 */
            padding: 10px 20px 30px 40px;
        }
    </style>

<body>
    <div>内边距就是内容和边框的距离</div>
</body>

</html>

(6)外边距(margin):

①外边距实现盒子居中:
必须是块级元素,盒子必须指定了宽度。给左右外边距都设置为auto就可以使块级元素水平居中。
实际工作中用这样的方式网页布局: .header{ width:960px; margin:0 auto;}

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> div {
            width: 200px;
            height: 200px;
            background-color: pink;
            margin: 30px auto;
            padding: 4px;
        }

        header {
            width: 900px;
            height: 120px;
            background-color: black;
            margin: 0 auto;
        }
    </style>
</head>

<body>
    <div></div>
    <header>头部标签</header>
</body>

</html>


②外边距合并问题:
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。

  • 相邻块元素垂直外边距的合并:

当上下相邻两个块元素相遇,margin-bottom和margin-top。则他们之间的垂直间距是两者中较大者,这种现象被称为相邻块元素垂直外边距合并(外边距塌陷)。

  • 嵌套块元素垂直外边距的合并:

解决方案:

  1. 为父元素定义1像素的上边框或上内边距。
  2. 为父元素添加overflow:hidden。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> .father {
            width: 300px;
            height: 300px;
            background-color: pink;
            /* 解决外边距塌陷的问题 */
            /* border: 1px solid red; */
            /* padding: 1px; */
            overflow: hidden;
        }

        .son {
            width: 200px;
            height: 200px;
            background-color: purple;
            margin-top: 30px;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>

</html>

(7)清除元素默认的内外边距

为了更方便的控制网页中的元素,制作网页时,使用如下代码清除元素的默认外边距:

        * {
            margin: 0;
            padding: 0;
        }

(8)新浪导航栏小案例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> nav {
            height: 41px;
            background-color: #FCFCFC;
            border-top: 3px solid #FF8500;
            border-bottom: 1px solid #EDEEF0;
        }

        nav a {
            font-size: 14px #4C4C4C;
            text-decoration: none;
            /* width: 100px; height: 41px; background-color: pink; 因为连接是行内元素,没有大小 需要转换为行内块元素 */
            display: inline-block;
            padding: 0 15px;
            height: 41px;
            line-height: 41px;
        }

        nav a:hover {
            background: #eee;
        }
    </style>

<body>
    <nav>
        <a href="#">首页</a>
        <a href="#">手机新浪网</a>
        <a href="#">网站导航</a>
        <a href="#">三个字</a>

    </nav>
</body>

</html>

(9)搜索趣图小案例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> * {
            /* 清空默认的内外边距 几乎是我们写CSS必须首先写的 */
            margin: 0;
            padding: 0;
        }

        ul {
            /* 取消列表自带的小点 */
            list-style: none;
        }

        .searchPic {
            width: 238px;
            height: 294px;
            border: 1px solid #D9E0EE;
            border-top: 3px solid orange;
            margin: 100px;
        }

        .searchPic h3 {
            height: 35px;
            line-height: 35px;
            /* 让行高等于高度,可以让文字垂直居中 */
            border-bottom: 1px solid #D9E0EE;
            font-size: 16px;
            font-weight: normal;
            /* 让粗体不变粗 */
            padding-left: 12px;

            /* 因为h3没有给定宽度 继承的父亲的宽度 padding就不会撑开盒子了 */

        }

        .searchPic img {
            margin: 7px 0 0 8px;
        }

        .searchPic ul li a {
            font-size: 12px;
            color: #666;
            text-decoration: none;
            /* 取消下划线 */
        }

        .searchPic ul {
            margin-left: 8px;
        }

        .searchPic ul li {
            padding-left: 10px;
            height: 26px;
            line-height: 26px;
            background: url(orange.jpg) no-repeat left center;
        }

        .searchPic ul li a:hover {
            /* 添加下划线 */
            text-decoration: underline;
            color: #FF8400;
        }
    </style>
</head>

<body>
    <div class="searchPic">
        <h3>搜索趣图</h3>
        <img src="写轮眼.jpg" height="160" width="218" alt="">
        <ul>
            <li><a href="#">开局一条鲲,装备全靠吞。</a></li>
            <li><a href="#">开局一条鲲,装备全靠吞。</a></li>
            <li><a href="#">开局一条鲲,装备全靠吞。</a></li>
        </ul>
    </div>
</body>

</html>