整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

html5+css3网站建设、让网站布局更加灵活

html5+css3网站建设、让网站布局更加灵活

着网站建设技术在不断的发展、从以前的table布局再到css布局,为什么css会取代table呢?可能大家心中一直有这个疑问,html的发展大家有目共睹、因为其跨平台性的原因,深受开发人士的欢迎。

网站建设好之后,后期能不能利于维护是很多人考虑的一个核心问题。table开发者说过一句话,连他自己都觉得这种布局形式不好维护。而css3的出现解决了这方面的问题。我们要明白css3的几个特点就是继承性,拥有了继承性,代码就可以重用了。举个简单的例子:


我们要让三组的文字的颜色都改成黄色。

html5+css3网页代码示例


.linjun{
color:#ff0;
}
<h1>css变色</h1>
<h1>css的优点</h1>
<h1>css继承性</h1>


table网页代码示例


<table>
<tr>
<td><font color="#ff0">css变色</font></td>
</tr>
<tr>
<td><font color="#ff0">css的优点</font></td>
</tr>
<tr>
<td><font color="#ff0">css继承性</font></td>
</tr>
</table>


可见只有三组的对比css只要几行代码就能解决这个问题了,而且这仅仅是页面的一部分元素,如果元素比较多呢?table的代码量就非常大了。所以css的优势就来了。如果我要改变颜色的话,css只要在属性值 改变下就好,而table就要修改的地方非常多。

css要明白优先级及盒子模型


css可以组成网页的各式各样的布局,那么如何实现的呢?就是根据网页的盒子模型,如下图所示:

css盒子包括了元素、padding(边框离元素的距离)、margin(元素和元素之间的距离)。
css发展速度太快了,现在设置出来了sasa预处理语言,所以如果以前还在用table进行网站建设的朋友,赶紧学习css!

栏布局,顾名思义就是两边固定,中间自适应。三栏布局在开发十分常见,同时在前端面试中也是属于必问的知识点,那么什么是三栏布局?比如打开京东的首页:

映入眼帘的就是一个常见的三栏布局:即左边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应。下面围绕的这样的目的,即左右模块固定宽度,中间模块随浏览器变化自适应,想要完成的最终效果如下图所示:

红色和蓝色宽度固定,绿色宽度自适应,下面七种方法实现的最终效果跟这个差不多,可能会稍有不同。

1. 流体布局

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

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

2. BFC 三栏布局

BFC 规则有这样的描述:BFC 区域,不会与浮动元素重叠。因此我们可以利用这一点来实现 3 列布局。

缺点跟方法一类似,主要内容模块无法最先加载,当页面中内容较多时会影响用户体验。因此为了解决这个问题,有了下面要介绍的布局方案双飞翼布局。

3. 圣杯布局

相关解释如下:

(1)中间部分需要根据浏览器宽度的变化而变化,所以要用100%,这里设左中右向左浮动,因为中间100%,左层和右层根本没有位置上去

(2)把左层margin负100后,发现left上去了,因为负到出窗口没位置了,只能往上挪

(3)按第二步这个方法,可以得出它只要挪动窗口宽度那么宽就能到最左边了,利用负边距,把左右栏定位

(4)但由于左右栏遮挡住了中间部分,于是采用相对定位方法,各自相对于自己把自己挪出去,得到最终结果

跟双飞翼布局很像,有一些细节上的区别,相对于双飞翼布局来说,HTML 结构相对简单,但是样式定义就稍微复杂,也是优先加载内容主体。

4. 双飞翼布局

圣杯布局实际看起来是复杂的后期维护性也不是很高,在淘宝UED的探讨下,出来了一种新的布局方式就是双飞翼布局,代码如上。增加多一个div就可以不用相对布局了,只用到了浮动和负边距。和圣杯布局差异的地方已经被注释。利用的是浮动元素 margin 负值的应用,感兴趣的同学可以上网搜搜原理。

主体内容可以优先加载,HTML 代码结构稍微复杂点。

5. Flex 布局

简单实用,未来的趋势,需要考虑浏览器的兼容性

6. Table 布局

缺点:无法设置栏间距

7. 绝对定位布局

使用absolute定位,只需将左右两栏绝对定位到窗口两边,为main添加左右margin创建安全输入区域即可。因为absolute是以第一个定位不是static的父元素定位的,为这个整体添加一个定位不是static的父元素,绝对定位不会与header,footer等重叠。并且main的dom位置在left和right的前面,可在左右两栏之前完成加载

简单实用,并且主要内容可以优先加载。

本周回顾

前端要知道的网络知识一:TCP/IP 协议到底在讲什么

前端要知道的网络知识二:TCP协议的三次握手和四次分手

前端要知道的网络知识三:认识OSI七层模型

前端要知道的网络知识四:TCP的概念和HTTP连接管理

前端要知道的网络知识五:详细的介绍web缓存

前端要知道的网络知识六:详细介绍URL及其用法

前端要知道的网络知识七:初识HTTP报文

前端要知道的网络知识八:GET 和 POST 到底有什么区别

前端要知道的网络知识九:初识HTTPS加密过程,原来如此

前端要知道的网络知识十:HTTPS加密核心RSA算法

....

参考文章

https://www.cnblogs.com/chenyablog/p/7918807.html

https://zhuanlan.zhihu.com/p/24305930

https://zhuanlan.zhihu.com/p/25070186

文由云+社区发表

作者:前端林子

本文会分别介绍三种CSS实现三栏布局的方法,可在浏览器中打开查看效果

1.方法一:自身浮动的方法

实现方法:需要左栏向左浮动,右栏向右浮动,中间设左右margin来撑开距离

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>CSS实现三栏布局1</title>
 <style type="text/css">
 body{
 margin: 0;
 padding: 0;
 }
 .left{
 width:200px;
 height: 300px;
 background-color: #DC698A;
?
 float:left;
?
 }
 .middle{
 /*width:100%;*/
 /*中间栏不要设宽度,包括100%*/
 height: 300px;
 background-color: #8CB08B;
?
 margin:0 200px;
 }
 .right{
 width: 200px;
 height: 300px;
 background-color: #3EACDD;
?
 float: right;
 }
 </style>
</head>
<body>
 <!-- 左栏左浮右栏右浮,中间不设宽度用左右margin值撑开距离,且布局中中间栏放最后 -->
 <!-- 中间栏实际宽度是当前屏的100% -->
 <div class="left">左栏</div>
 <div class="right">右栏</div>
 <div class="middle">中间栏</div>
</body>
</html>

注意:该方法在html布局时,要把中间栏放在左栏、右栏后面,左栏和右栏的顺序不定

实现的效果如下:

自身浮动实现三栏布局

2.方法二:margin负值法

实现方法:两边两栏宽度固定,中间栏宽度自适应,左栏、右栏、中间栏向左浮动,左栏的margin-left设为-100%,中间栏的width设为100%,右栏的margin-left设为-右栏宽度

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>CSS实现三栏布局2</title>
 <style type="text/css">
 body{
 margin:0;
 padding:0;
 }
 .left{
 width:200px;
 height: 300px;
 background-color: #DC698A;
?
 float:left;
 margin-left:-100%;
 }
 .middle{
 width:100%;
 height: 300px;
 background-color: #8CB08B;
?
 float:left;
 }
 .right{
 width:200px;
 height: 300px;
 background-color: #3EACDD;
?
 float: left;
 margin-left: -200px;
 }
 </style>
</head>
<body>
 <!-- 左栏中间栏右栏左浮,左栏margin-left:-100%,中间栏宽100%,,右栏margin-left:-右栏宽度 
 且布局上必须中间栏放第一个-->
 <div class="middle">中间栏</div>
 <div class="left">左栏</div>
 <div class="right">右栏</div>
</body>
</html>

注意:该方法在html布局时,要把中间栏放在第一个

此方法是实现圣杯布局和双飞翼布局的基础。

实现的效果如下:

margin负值法实现三栏布局

3.方法三:绝对定位法

实现方法:左栏、右栏绝对定位,分别固定到页面左右两侧,中间栏不设宽度,用左右margin来撑开距离

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>CSS实现三栏布局3</title>
 <style type="text/css">
 body{
 margin:0;
 padding: 0;
 }
 .left{
 width:200px;
 height: 300px;
 background-color: #DC698A;
?
 position: absolute;
 left:0;
 top:0;
 }
 .middle{
 /*width: 100%;*/
 height: 300px;
 background-color: #8CB08B;
 margin:0 200px;
 }
 .right{
 width:200px;
 height: 300px;
 background-color: #3EACDD;
?
 position: absolute;
 right:0;
 top:0;
 }
 </style>
</head>
<body>
 <!-- 左右两栏绝对定位,分别固定到页面的左右两侧,中间栏不设宽度,用左右margin撑开距离 -->
 <!-- 中间栏的实际宽度是当前屏的100% -->
 <div class="left">左栏</div>
 <div class="middle">中间栏</div>
 <div class="right">右栏</div>
</body>
</html>

实现的效果如下:

此文已由腾讯云+社区在各渠道发布

获取更多新鲜技术干货,可以关注我们腾讯云技术社区-云加社区官方号及知乎机构号