盒子模型与页面布局

本文深入探讨了网页布局的各种方法,包括固定布局、流式布局、栅格化布局、自适应布局、响应式布局、弹性布局、伸缩布局以及HTML5语义化布局。详细介绍了每种布局的原理、优缺点和实际应用,帮助开发者选择适合的布局策略。
摘要由CSDN通过智能技术生成


一、网页布局介绍

在这里插入图片描述

1.1 固定布局

为网页设置一个固定的宽度,通常以px做为长度单位,常见于PC端网页。

这种布局具有很强的稳定性与可控性,也没有兼容性问题,但不能根据用户的屏幕尺寸做出不同的表现。即如果用户的屏幕分辨率小于这个宽度就会出现滚动条,如果大于这个宽度则会留下空白。

1.2 流式布局(Liquid Layout)

为网页设置一个相对的宽度,页面元素的大小按照屏幕分辨率进行适配调整,但整体布局不变,通常以百分比做为长度单位(通常搭配 min-、max- 属性控制尺寸流动范围以免过大或者过小导致元素无法正常显示),高度大都是用px来固定住。流式布局的代表作栅格系统(网格系统)。

例如设置网页主体的宽度为80%,min-width为960px。图片也作类似处理(width:100%, max-width一般设定为图片本身的尺寸,防止被拉伸而失真)。

缺点:因为宽度使用%百分比定义,但是高度和文字大小等大都是用px来固定,所以在大屏幕下显示效果会变成有些页面元素宽度被拉的很长,但是高度、文字大小还是和原来一样,显示非常不协调

1.3 栅格化布局

将网页宽度人为的划分成均等的长度,然后排版布局时则以这些均等的长度做为度量单位,通常利用百分比做为长度单位来划分成均等的长度。

比如像 bootstrap,foundation 这些框架采用的就是栅格系统,只要给页面元素添加其栅格系统指定的类名,就能达到想要的响应式布局效果。

bootstrap 的栅格系统是通过一系列的行和列的组合来创建页面布局,它的栅格系统最大分为12份

在这里插入图片描述

1.4 自适应布局(Adaptive Layout)

自适应布局的特点是分别为不同的屏幕分辨率定义布局,即为不同类别的设备创建不同的静态布局,每个静态布局对应一个屏幕分辨率范围。改变屏幕分辨率可以切换调用相应的布局(页面元素位置发生改变而大小不变),但在每个静态布局中,页面元素不随窗口大小的调整发生变化。可以把自适应布局看作是静态布局的一个系列。

在这种布局方式下,当视口大小低于设置的最小视口时,界面会出现显示不全,溢出,并出现滚动条。而且当需求改变时,可能会改动多套代码。

使用自适应布局时,首先在网页代码的头部,加入一样 viewport 标签:

<meta name="viewport" content="width=device-width, initial-scale=1" />

设置网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。然后 CSS 代码不能使用绝对大小,即不能指定像素 px 宽度,而只能使用相对大小 em 或者 %百分比、rem等。

1.5 响应式布局

响应式布局的目标是确保一个页面在所有终端上(各种尺寸的PC、手机、ipad等)都能显示出令人满意的效果。通过检测设备信息,决定网页布局方式,即用户如果采用不同的设备访问同一个网页,有可能会看到不一样的展示效果,一般情况下是检测设备屏幕的宽度来实现。可以把响应式布局看作是流式布局和自适应布局设计理念的融合。

应用响应式布局,首先要使用视图的 meta 标签来进行重置:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />

然后使用 @media 媒体查询给不同尺寸和介质的设备切换不同的样式。同自适应布局一样,在书写 CSS 样式时,元素宽度不能使用绝对宽度,而要使用相对大小。

Media Queries 是响应式设计的核心,它根据条件告诉浏览器如何为指定视图宽度渲染页面。在优秀的响应范围设计下可以给适配范围内的设备最好的体验,在同一个设备下实际还是固定的布局。但媒体查询是有限的,也就是可以枚举出来的,只能适应主流的宽高。要匹配足够多的屏幕大小,工作量不小,而且页面中会出现隐藏元素的操作,这样代码就比较冗余,加载时间加长,此外设计也需要多个版本。

1.6 弹性布局(rem/em布局)

弹性布局跟流布局很像,网页宽度不固定,使用 em 或 rem 单位进行相对布局,避免了使用像素 px 布局在高分辨率下几乎无法辨识的缺点,相对%百分比更加灵活,同时可以支持浏览器的字体大小调整和缩放等的正常显示。但弹性布局也有局限性,如果不对这种布局设置一个最小宽度,当用户缩小窗口到足够小时会造成布局严重错位。

1.7 伸缩布局(Flex box)

使用 css3 Flex 系列属性进行相对布局,用来为盒模型提供最大的灵活性。对于富媒体和复杂排版的支持非常大,但是存在兼容性问题。任何一个容器都可以指定为 flex 布局,行内元素也可以使用。

注意:设为 flex 布局后,子元素的 float、clear、vertical-align 属性将失效。

1.8 自适应布局和响应式布局对比

不同点:

  • 1.自适应需要开发多套界面;响应式只需开发一套界面。
  • 2.自适应对页面的屏幕适配实在一定的范围,比如:pc 端 > 1024px; 平板 768 ~ 1024px; 手机端 < 768px; 响应式是一套页面同时兼容在 pc 端、平板和手机端的各个不同视口,而不是为每个终端做一个特定的版本,所以需要考虑的状态非常多。

相同点:

  • 都是通过检测视口分辨率,使页面适应不同分辨率的视口。

三种传统PC端⽹⻚布局⽅式:

  • 传统的DIV+CSS布局
  • HTML5+CSS3布局
  • 响应式布局

1.9 网页布局——DIV+CSS布局

最常用!
此种布局是⽹⻚的HTML通过DIV标签+CSS样式表代码开发制作的(HTML)⽹⻚的统称。

DIV+CSS布局好处:便于维护,有利的SEO(⾕歌将⽹⻚打开速度作为排名因素及SEO因素),

⽹⻚打开速度还原,符合web标准等。

在这里插入图片描述

1.10 网页布局——HTML5+CSS3布局

HTML5 可以让很多更语义化的结构化代码标签代替⼤量⽆意义的 div 标签

  • 1.这种语义化的特性提升了⽹⻚的质量和语义
  • 2.减少了以前⽤于CSS 调⽤的class 和 id 属性

对搜索引擎的友好 新的结构标签带来的是⽹⻚布局的改变及提升对搜索引擎的友好。(相比于div标签,HTML5语义化标签提供了更加丰富准确的信息,从而可以帮助搜索引擎更好的搜索页面元素)

HTML5的新标签元素有:

<header> 定义⻚⾯或区段的头部;

<footer> 定义⻚⾯或区段的尾部;

<nav> 定义⻚⾯或区段的导航区域;

<section> ⻚⾯的逻辑区域或内容组合;

<article> 定义正⽂或⼀篇完整的内容;

<aside> 定义补充或相关内容;

在这里插入图片描述

注意:使⽤HTML5 语义化标签的布局模式在IE9以下浏览器不兼容,可使⽤下⾯的代码解决

<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"
type="text/javascript"></script>
<![endif]-->

1.11 网页布局——响应式布局

1)第⼀种:直接在⻚头中使⽤CSS样式修饰。
在这里插入图片描述

2)第⼆种:导⼊不同的css样式⽂件
在这里插入图片描述

二、DIV+CSS网页布局

2.1 模拟效果

在这里插入图片描述

简单划分页面
在这里插入图片描述

2.2 代码

1)初始代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DIV+CSS传统网页布局</title>
</head>
<body>
    
 
    <!-- 网页头部开始 -->
    <div id="header"></div>
    <!-- 网页头部结束 -->
 
    <!-- 导航开始 -->
    <div id="nav"></div>
    <!-- 导航结束 -->
 
    <!-- 页面主体开始 -->
    <div id="container"></div>
    <!-- 页面主体结束 -->
    
 
    <!-- 页面尾部开始 -->
    <div id="footer"></div>
    <!-- 页面主体结束 -->
</body>
</html>

2)简单样式编写
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
运行后发现边缘存在空白,这是由于body内部存在内补白
在这里插入图片描述

3)通过公共样式消除补白
在这里插入图片描述
在这里插入图片描述

4)进一步完善头部
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5)完善主体body样式
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
6)完善body内容
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
7)丰富单个列表的内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
8)最终代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DIV+CSS传统网页布局</title>
    <style>
        /*公共的css样式*/
        *{
    margin:0px;padding:0px}
        a{
    text-decoration: none;}
        ul{
    list-style:none;}
 
        #header{
    
            position:fixed;/* 固定位置*/
            top: 0px;
            /* height: 80px; header-nav已经设定了高度 这里可以去掉了 */
            width
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值