流式布局、响应式布局、弹性布局等概念和区别

静态布局(Static Layout)

即传统Web设计,网页上的所有元素的尺寸一律使用px作为单位。
1、布局特点:不管浏览器尺寸具体是多少,网页布局始终按照最初写代码时的布局来显示。常规的pc的网站都是静态(定宽度)布局的,也就是设置了min-width,这样的话,如果小于这个宽度就会出现滚动条,如果大于这个宽度则内容居中外加背景,这种设计常见于pc端。
2、设计方法:
  PC:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查阅被遮掩部分;
  移动设备:另外建立移动网站,单独设计一个布局,使用不同的域名如wap.或m.。
  在移动端开发中采用静态布局的两种方式:(来自:流布局与响应式网页设计有什么区别?)
 (1)在viewport meta标签上设置width=320,页面的各个元素也采用px作为单位。通过用JS动态修改标签的initial-scale使得页面等比缩放,从而刚好占满整个屏幕。(见前端开发-web app 变革之rem)
 (2)设在viewport meta标签上设置content"width=640,user-scalable=no,页面的各个元素也采用px作为单位。由于640px超出了手机宽度,浏览器会自动缩小页面至刚好全屏。(具体见content"width=640,user-scalable=no" 然后再进行固定尺寸的px设计? - 前端开发)
优点:这种布局方式对设计师和CSS编写者来说都是最简单的,亦没有兼容性问题。
缺点:显而易见,即不能根据用户的屏幕尺寸做出不同的表现。
当前,大部分门户网站、大部分企业的PC宣传站点都采用了这种布局方式。固定像素尺寸的网页是匹配固定像素尺寸显示器的最简单办法。但这种方法不是一种完全兼容未来网页的制作方法,我们需要一些适应未知设备的方法。

自适应布局(Adaptive Layout)

自适应布局的特点是分别为不同的屏幕分辨率定义布局,即创建多个静态布局,每个静态布局对应一个屏幕分辨率范围。改变屏幕分辨率可以切换不同的静态局部(页面元素位置发生改变),但在每个静态布局中,页面元素不随窗口大小的调整发生变化。可以把自适应布局看作是静态布局的一个系列。
1、布局特点:屏幕分辨率变化时,页面里面元素的位置会变化而大小不会变化。
2、设计方法:使用 @media 媒体查询给不同尺寸和介质的设备切换不同的样式。在优秀的响应范围设计下可以给适配范围内的设备最好的体验,在同一个设备下实际还是固定的布局。

流式布局(Liquid Layout)

流式布局(Liquid)的特点(也叫"Fluid") 是页面元素的宽度按照屏幕分辨率进行适配调整,但整体布局不变。代表作栅栏系统(网格系统)。
网页中主要的划分区域的尺寸使用百分数(搭配min-*、max-*属性使用),例如,设置网页主体的宽度为80%,min-width为960px。图片也作类似处理(width:100%, max-width一般设定为图片本身的尺寸,防止被拉伸而失真)。
1、布局特点:屏幕分辨率变化时,页面里元素的大小会变化而但布局不变。【这就导致如果屏幕太大或者太小都会导致元素无法正常显示】
2、设计方法:使用%百分比定义宽度,高度大都是用px来固定住,可以根据可视区域 (viewport) 和父元素的实时尺寸进行调整,尽可能的适应各种分辨率。往往配合 max-width/min-width 等属性控制尺寸流动范围以免过大或者过小影响阅读。
这种布局方式在Web前端开发的早期历史上,用来应对不同尺寸的PC屏幕(那时屏幕尺寸的差异不会太大),在当今的移动端开发也是常用布局方式,但缺点明显:主要的问题是如果屏幕尺度跨度太大,那么在相对其原始设计而言过小或过大的屏幕上不能正常显示。因为宽度使用%百分比定义,但是高度和文字大小等大都是用px来固定,所以在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度、文字大小还是和原来一样(即,这些东西无法变得“流式”),显示非常不协调。

响应式布局(Responsive Layout)

随着CSS3出现了媒体查询技术,又出现了响应式设计的概念。响应式设计的目标是确保一个页面在所有终端上(各种尺寸的PC、手机、手表、冰箱的Web浏览器等等)都能显示出令人满意的效果,对CSS编写者而言,在实现上不拘泥于具体手法,但通常是糅合了流式布局+弹性布局,再搭配媒体查询技术使用。——分别为不同的屏幕分辨率定义布局,同时,在每个布局中,应用流式布局的理念,即页面元素宽度随着窗口调整而自动适配。即:创建多个流体式布局,分别对应一个屏幕分辨率范围。可以把响应式布局看作是流式布局和自适应布局设计理念的融合。
响应式几乎已经成为优秀页面布局的标准。
*原理:*通过媒体查询来定制某个宽度区间的网页布局
2、设计方法:媒体查询+流式布局。通常使用 @media 媒体查询 和网格系统 (Grid System) 配合相对布局单位进行布局,实际上就是综合响应式、流动等上述技术通过 CSS 给单一网页不同设备返回不同样式的技术统称。
*优点:*1.面对不同的分辨率设备灵活性强
2.能够快速的解决多设备显示的适应问题
3.适合中小型网站
*缺点:*1.兼容于各种设备工作量大,效率降低
2. 代码累赘,以及加载事件过长

响应式布局的使用

语法: @media媒体类型关键字 媒体特性(即媒体条件) {样式代码}

@media screen and (max-width:1200px){
	.c-nav ul li{
		margin-left: 20px;
	}
}
@media screen and (max-width:992px){
	.c-nav ul li{
		margin-left: 10px;
	}
}
@media screen and (max-width:768px){
	.c-nav ul li:nth-child(4),.c-nav ul li:nth-child(5){
		display: none;
	}
}
@media screen and (max-width:576px){
	.c-nav{
		background-color:rgba(176,204,243,0.8);
		padding: 10px 0px 10px 0px;
		opacity: 0.9;
	}
	.c-nav .navFlex{
		flex-wrap:wrap;
		font-size: 20px;
		justify-content: space-between;
	}
	.c-nav .logo{
		height: 30px;
	}
	.c-nav ul li{
		padding-top: 10px;
		margin-left: 0px;
		display: block;
	}
	.c-nav ul li a{
		border-bottom: 3px solid transparent;
	}
	.c-nav ul a:hover{
		border-bottom: 3px solid #e4c17e;
	}
	.c-nav ul li:nth-child(4),.c-nav ul li:nth-child(5){
		display: block;
	}
	.c-nav .hiden{
		display: block;
	}
	.c-nav .show{
		width: 100%;
		font-size: 14px;
		text-align: center;
		display: none;
	}
}

弹性布局(flexible layout)

弹性布局,又称“Flex布局”,是由W3C于2009年推出的一种布局方式。可以简便、完整、响应式地实现各种页面布局。而且已经得到所有主流浏览器的支持。

>>> 了解两个基本概念,接下来会频繁提到:

  • 容器: 需要添加弹性布局的父元素;
  • 项目: 弹性布局容器中的每一个子元素,称为项目;

>>> 了解两个基本方向,这个牵扯到弹性布局的使用:

  • 主轴: 在弹性布局中,我们会通过属性规定水平/垂直方向为主轴;
  • 交叉轴: 与主轴垂直的另一方向,称为交叉轴。

弹性布局的使用

  • 给父容器添加display: flex/inline-flex;属性,即可使容器内容采用弹性布局显示,而不遵循常规文档流的显示方式;
  • 容器添加弹性布局后,仅仅是容器内容采用弹性布局,而容器自身在文档流中的定位方式依然遵循常规文档流;
  • display:flex; 容器添加弹性布局后,显示为块级元素;
  • display:inline-flex; 容器添加弹性布局后,显示为行级元素;
  • 设为 Flex布局后,子元素的float、clear和vertical-align属性将失效。但是position属性,依然生效
.box {
            display: flex;
            justify-content: space-between;
          }

rem布局

** em、rem、meta标签的基本概念**
em 是一个布局的长度单位,当前对象内文本的字体大小的相对单位,也就是说相对于当前元素的font-size。

rem 是(根)字体大小相对单位,也就是说跟当前元素的font-size没有关系,而是跟整个body的font-size有关系。

meta标签,我们可以指定浏览器的适口,适口就是可以看见的区域

你可能感兴趣的:(新手)