Bootstrap

前端基础布局

 布局基本流程

1. 确定页面的版心

版心(可视区)是指网页中主体内容所在的区域,一般在浏览器窗口水平居中显示。

2. 分析页面的行模块,以及每个行模块中的列模块。

3. 制作HTML结构。

4. css初始化,然后开始运用盒子模型原理,通过div+css布局来控制网页的各个模块。

 一列固定宽度且居中

1. 清除浏览器自带的内外边距

* {
    margin: 0;
    padding: 0;
}

2. 以top为例,让top宽度为版心宽度,同时居中 。

.top {
        width: 960px;
        height: 80px;
        margin: 0 auto; /*让盒子居中*/
        text-align: center; /*盒子中的文字水平居中*/
        margin-bottom: 10px; /*设置外边距*/
        background-color: #ccc;
}

 3. 由于设置top,banner,main,footer均需设置同样的width,margin等属性,所以可以采用并集选择器,减少代码冗余。

最终代码为

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>一列固定宽度</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .top,
        .banner,
        .main,
        .footer {
            width: 960px;
            text-align: center;
            margin: 0 auto;
            margin-bottom: 10px;
        }
        .top {
            height: 80px;
            background-color: #ccc;
        }
        .banner {
            height: 120px;
            background-color: skyblue;
        }
        .main {
            height: 320px;
            background-color: rgb(162, 135, 235);
        }
        .footer {
            height: 120px;
            background-color: rgb(147, 235, 135);
        }
    </style>
</head>
<body>
    <div class="top">top</div>
    <div class="banner">banner</div>
    <div class="main">main</div>
    <div class="footer">footer</div>
</body>
</html>

 两列左窄右宽

 1. 同样先去除浏览器自带的内外边距。

2. left和right均需要浮动,它们均需要放在一个父亲盒子里。

3. left设置左浮动后,如果right也设置左浮动,那么他两之间不会有缝隙,由于希望left和right间有缝隙,此时如果通过给left加上margin-right,则right会被挤下去(一开始设置的left宽+right宽=main盒子宽,此时left宽+right宽+margin-right>main宽),这样就需要通过计算,减少left或right盒子的宽度。这里采用一个更为简便的方法,不设置margin-right,而是直接减少left/right盒子的宽度以满足想要的缝隙大小,然后给right设置成靠右浮动。

最终代码为

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .top, /*并集选择器给相同样式集体声明*/
        .banner,
        .main,
        .footer {
            width: 960px;
            margin: 0 auto;
            border: 1px solid #ccc;
            text-align: center;
            background-color: #eee;
            margin-bottom: 8px;
        }
        .top {
            height: 80px;
        }
        .banner {
            height: 150px;
        }
        .main {
            height: 500px;
        }
        .left {
            width: 360px;
            height: 500px;  /*不会继承高度,如果不设置,靠自己内容撑开*/
            background-color: pink;
            float: left;

        }
        .right {
            width: 592px;
            height: 500px;
            background-color: skyblue;
            float: right;
        }
        .footer {
            height: 120px;
        }
    </style>
</head>
<body>
    <div class="top">top</div>
    <div class="banner">banner</div>
    <div class="main">
        <div class="left">left</div>
        <div class="right">right</div>
    </div>
    <div class="footer">footer</div>
</body>
</html>

通栏平均分布型

 1. top和footer为通栏,通栏不需要给定宽度,中间部分为版心。

2. 这里通过ul中的li来布局中间的4个小盒子,4个盒子放在main盒子里,均需浮动,实现4个li在一行显示,且中间没有缝隙。

最终代码为

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            list-style-type: none; /*取消列表默认点*/
        }
        .top {
            height: 80px;
            background-color: #ccc; /*通栏不用给宽度*/
        }
        .banner,
        .main {
            width: 960px;
            margin: 0 auto;
        }
        .banner {     
            height: 200px;
            background-color: pink;
            border-radius: 10px;
        }
        .main {           
            height: 500px;
        }
        .main ul li {
            width: 240px;
            height: 500px;
            background-color: skyblue;
            float: left;  /*让多个块级li一行显示,且没有缝隙*/
        }
        .main ul li:nth-child(2n) {
            background-color: green;
        }
        .top,
        .banner,
        .main,
        .footer {
            margin-bottom: 20px;
            text-align: center;
        }
        .footer {
            height: 100px;
            background-color: #ccc;
            margin-bottom: 0;
        }
    </style>
</head>
<body>
    <div class="top">top</div>
    <div class="banner">banner</div>
    <div class="main">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
    </div>
    <div class="footer">footer</div>
</body>
</html>

;