CSS布局技巧实践 | 青训营

215 阅读3分钟

css的全称是层叠样式表,也是一种标记语言。本篇笔记记述一些css相关布局以及实践代码操作。操作者可以通过网页布局,可以使网页的内容更加清晰,有条理,同时更加易读。CSS 由两个主要的部分构成:选择器,以及一条或多条声明。并且CSS声明总是以分号 ; 结束,声明总是以大括号 {} 括起来。

在写网页代码,给网页布局时候,需要注意:

  • 确定版心。

所谓“版心”是页面主体内容的所在位置,一般为居中。

  • 分析模块。

页面通常由五大块组成:头部(header)—导航(nav)—焦点图(banner)—内容(content)—版权(footer)

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型(Box Model):

image.png

不同部分的说明:

  • Margin(外边距)  - 清除边框外的区域,外边距是透明的。
  • Border(边框)  - 围绕在内边距和内容外的边框。
  • Padding(内边距)  - 清除内容周围的区域,内边距是透明的。
  • Content(内容)  - 盒子的内容,显示文本和图像。

页面元素的布局定位机制

两栏布局

左边固定,右边自适应

image.png

1.通过设置浮动实现。

需要两个div实现,一个div设置浮动,并设置宽度,另一个div可以不用设置任何东西

如果要给右边块设置什么的话下面两种方法也行:

  1. left左浮动并设置宽度right设置margin-left为left的宽度也能实现

  2. left设置左浮动并和宽度right,right设置over-flow:hidden也能实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>两栏布局——float</title>
    <style>
            div{
                    height:300px;
            }
            .left{
                    width:200px;
                    background-color:gray;
                    float:left;
            }
            .main{
                    background-color:pink;
            }
    </style>
</head>
<body>
    <div class = 'left'></div>
    <div class = 'main'></div>
</body>
</html>

2.通过弹性盒子flex实现

需要三个div,其中一个div是父容器,包含两个子元素。
父元素设置display:flex;上边子元素设置宽度,下边子元素设置flex:1

div{
        height:300px;
    }
    .parent{
        display:flex;
    }
    .left{
        flex:0 0 100px;
    }
    .right{
        flex:1 1 auto;
    }

模拟实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .div1{
            width: 300px;
            height: 200px;
            background-color: wheat;
        }
        .div2{
            width: 300px;
            height: 200px;
            background-color: blue;
        }
    </style>
</head>
<body>
<div class="div1">字节跳动青训营</div>
<div class="div2"></div>
</body>
</html>

image.png

三栏布局

左右固定,中间自适应

1.流体布局(浮动)

原理: 左右模块各自向左右浮动,并设置中间模块的margin值使中间模块宽度自适应

缺点: 主要内容无法最先加载,当页面内容较多时会影响用户体验

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>三栏布局——float</title>
    <style>
        div {
            height: 200px;
        }
        .left {
            float: left;
            width: 100px;
        }
        .right {
            float: right;
            width: 100px;
        }
        .center {
            margin-left: 100px;
            margin-right: 100px;
        }
    </style>
</head>
<body>
    <div class="left" style="background-color:rgb(6, 235, 44)"></div>
    <div class="right" style="background-color:rgb(9, 134, 236)"></div>
    <div class="center" style="background-color:red"></div>
</body>
</html>

2.BFC 三栏布局

原理: BFC规则有这样的描述:BFC 区域不会与浮动元素重叠

缺点: 主要内容模块无法最先加载,当页面中内容较多时会影响用户体验。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>三栏布局——BFC</title>
    <style>
        div {
            height: 200px;
        }
        .left {
            float: left;
            width: 100px;
        }
        .right {
            float: right;
            width: 100px;
        }
        .center {
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div class="left" style="background-color:rgb(6, 235, 44)"></div>
    <div class="right" style="background-color:rgb(9, 134, 236)"></div>
    <div class="center" style="background-color:red"></div>
</body>
</html>

模拟实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        #container div{
            margin: 5px;
            border: 1px solid black;
        }
        #header{
            height: 100px;
        }
        #sidebar{
            width: 200px;
            height: 400px;
        }
    </style>
</head>
<body>
<div id="container">
    <div id="header">...</div>
    <div id="sidebar">...</div>
    <div id="content">...</div>
    <div id="footer">...</div>
</div>
</body>
</html>

image.png

通过敲写代码来简单实现一个网页布局的简单模式,制作网页的页面离不开CSS的实践,制作简易页面也是如此。需要学习者对CSS的相关布局元素加以深入了解,掌握。方便以后可以更得心应手的使用相关布局元素组件来达到自己制作的网页的满意程度。