现在人们的上网方式各式各样,有手机、ipad、电脑等等。老老实实一种媒体端很差么,哎,不过这也是没办法的事儿。javascript
这时候只能靠咱们前端去兼容各个款式的显示器了~css
想要页面显示的好看,又让代码简易,就要用到响应式布局。前端
此篇文章会在如下几个方面啰嗦一下响应式布局的各个问题:java
一、响应式布局的优缺点chrome
二、可实现的几个方式浏览器
①百分比自适应布局布局
②经过媒体查询字体
③使用JS根据浏览器设备引用不一样的CSS值url
三、应用开发中实际使用spa
响应式布局的优缺点
一、优势:
与以往的弹性盒子相比,响应式布局会更好的、更主动的根据用户设备变化更呈现出不一样的效果,它比弹性盒子更灵活,可读性更强。响应式的一套方案解决全部设备的自适应问题。
二、缺点:
研发难度高,对应的css文件多是多个,也多是单个。
可实现的几个方式
百分比自适应布局
<meta name="viewport" content="width=device-width, initial-scale=1" />
viewport 是指须要加载meta 标签时读取的名字为“视口”,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。
优势:简单方便
缺点:在额外设置margin、padding时,或者使用不一样浏览器时,会使得布局混乱
这里面的,第一个 screen 意思为屏幕,这里面还有许多参数,包括all(用于全部设备)、print(用于打印机和打印预览)、speech(应用于屏幕阅读器等发声设备)。 一般直接写all。
使用and来并列显示多种状况,min-width 和max-width 来定义在那种尺寸的屏幕上显示,这就是响应式的灵魂。
<link rel="stylesheet" type="text/css" href="CSS文件夹/02-响应式布局.css" media="all and (max-width: 800px)"/>
注意:使用此方法时,在style标签中就不能写样式了。否则此方法就会失效。
@import url("css/02-响应式布局.css") all and (max-width: 800px);
优势:如今大部分的响应式布局都是使用@media 来实现的,能够书写大量的公共样式,在须要适应屏幕的时候,在大括号内加入相应的功能便可实现响应式布局。
缺点:可能须要对同一个类书写不一样的样式,代码比较繁复,难度也稍微难点。
根据不一样浏览器:
<script type="text/javascript"> var version = navigator.userAgent; if (version.indexOf("MSIE") > 1) { document.write("<link href='ie.css' rel='stylesheet' type='text\/css'\/>"); } else if (version.indexOf("Chrome") > 1) { document.write("<link href='chrome.css' rel='stylesheet' type='text\/css'\/>"); } else if (version.indexOf("Firefox") > 1) { document.write("<link href='ff.css' rel='stylesheet' type='text\/css'\/>"); } </script>
根据不一样分辨率:
<script type="text/javascript"> if (screen.width == 1024){ document.write("<link href='css/css1.css' rel='stylesheet' type='text\/css'\/>"); }else { document.write("<link href='css/css2.css' rel='stylesheet' type='text\/css'\/>");} </script>
没有哪种方法是完美的,推荐的是三种方法交替使用,在恰当的地方使用恰当的方法。
在布局过程当中,通常都是宽度的百分比与媒体查询交替使用的,而且在加载网页以前,加入meta标签,定义一下viewport的内容,这样更方便于移动端的响应。也兼顾了设备的兼容性。
而响应式的设计方案的通常作法就是根据目标用户的访问设备的主要类型作三种或四种布局。每种布局有一个区间,好比说小屏的手机分分辨率能够设定为[320,640]。而后分别设计每种布局便可,通常来讲,各个布局主要是调整模块的排列布局顺序,内容调整越少越好(尽可能减小用户适应成本)。