赞
踩
PC端开发:页面主要运行在PC端浏览器中
移动端开发:页面主要运行在手机上
在移动端表现良好的页面,如新浪网
也叫“套壳开发”,通过写特定的代码生成跨平台的web app,可以用一些前端native开发框架或者是在移动端网页的基础上打包生成app。
web app比较接近客户端应用程序的用户体验,可以和系统深度融合,调用一些只有客户端才能调用的功能,如在移动设备上利用html5开发出的网页可以访问电话、摄像头等本地功能;web app特指的是用html5技术开发,在开发中使用一些浏览器私有的方法,使web页面拥有一些native的功能
物理像素(physical pixel)也可成为设备像素(dp:device pixel),显示屏是由一个个物理像素点组成的,通过控制每个像素点的颜色,使屏幕显示出不同的图像,其与设备有关,不可改变。实际开发中不用,其单位为pt
设备像素比(dpr:device pixel ratio),即dpr = 设备像素 / CSS像素(缩放比是1的情况下)
标清屏幕:dpr=1;
高清屏幕:dpr>=2
缩放改变的是CSS像素的大小
按照以上的物理像素比,对于一张50px * 50px 的图片,在手机打开时就会放大倍数,这将会造成图片模糊。在标准的viewport设置中,使用多倍图来提高图片质量,解决高清设备中的模糊问题。通常采用的是二倍图。
视口在PC端是指浏览器显示页面内容的屏幕区域;视口在移动端视口分为三个:
<meta>
视口标签来进行操作使得布局视口与理想视口一致。
<meta>
的属性
maximun-scale=1,minimun-scale=1
:相当于不允许用户缩放
- `<meta>`视口标签设置:标准的viewport参数设置
- 视口宽度与设备保持一致
- 视口的默认缩放比例为1.0
- 不允许用户缩放
- 最大与最小缩放比为1.0
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0, minimum-scale=1.0">
小结:视口就是浏览器显示页面内容的屏幕区域,移动端视口分为布局视口、视觉视口以及理想视口。在移动端布局中,想要的理想视口就是屏幕有多宽,布局视口就有多宽,需要手动通过设置视口标签来完成。
content-box
:即内容content的宽和高为width和height,容器的宽度=content+padding+border+margin,如果设置了内边距等,会把盒子撑开border-box
:即内容content的宽和高=width+padding+border,即设置border
、padding
不会将盒子撑大,而设置margin会把盒子撑大border-box
媒体查询(media query),是响应式设计的基础。其有三点作用
@media 媒体类型 and (媒体功能:值){
// 满足条件的css样式代码
}
媒体类型
all 适用于所有类型
print 适用于打印机和打印预览
screen 适用于电脑屏幕、平板电脑、智能手机等
speech 适用于屏幕阅读器
媒体功能
逻辑运算符
引入media的方法
@media all and (min-width: 321px) and (max-width: 400px){
.box{
background: red;
}
}
媒体类型为all,代表任何设备,并且设备的布局视口宽度大于等于321px且小于等于400px时,让拥有box类的元素背景变红。
<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">
<style>
@media screen and(max-width:640px){
h1{background:red;}
}
@media screen and (min-width:640px) and (max-width:960px) {
h1{background:red;}
}
</style>
移动端常用rem
做单位,将页面的元素统一地进行等比例缩放
setRemUnit();
window.onresize = setRemUnit;
// 获取视口宽度
function setRemUnit(){
var docElement = document.documentElement;
var viewWidth = document.documentElement.clientWidth || window.innerWidth || document.documentElement.getBoundingClientRect().width;
docElement.style.fontSize = viewWidth / 375 * 20 + 'px';
// 1rem = 20px 在375px的视口宽度下
}
max-width
,min-width
,使得内容在合理的范围内创建一个流式布局:
创建一个<meta>
标签,设置视口:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
如,导航器5等分
.nav ul {
width:100%;
}
.nav li {
width:20%;
}
(1)em和rem
em: 相对于当前元素的字体大小→ 1em = 当前标签的font-size
,浏览器默认的font-size
的大小为16px
rem: 相对于根元素(html)的字体大小→ 1rem = html标签的font-size
(2)rem布局的原理
font-size
大小(3)rem布局的优点
设计图的屏幕宽度/给设计图设置的font-size = 你需要适配的屏幕宽度/你需要适配屏幕的fong-size
(4)rem布局的使用方法
rem.js
,让1 rem=当前屏幕的1/10
(function(){
var calc = function(){
var rem = document.documentElement.clientWidth/10;
document.documentElement.style.fontSize = rem + 'px';
rem = document.documentElement.clientWidth > 750?37.5:rem;
// console.log(rem);
}
calc();
window.addEventListener('resize',calc);
})();
(5)rem适配方案
rem和less、媒体查询配合:计算不同屏幕的媒体查询
less详解
less作为一门CSS扩展语言,也就是说CSS预处理器。(Leaner Style Sheets)简称less,它只不过是为css新增这些的功能,比如说:变量、函数、作用域等等。它的优点是:更具有维护性、扩展性等,可以降低了维护的成本,根据按这样的话,那么less可以让我们写更少的代码做更多的事情。
插件适配
根据html font-size值而定
插件来进行html的font-size的值的改变。
适应插件 flexible.js 进行适配
flexible.js
文件内容:将屏幕划分为10等份,省去写不同屏幕的媒体查询
// 首先是一个立即执行函数,执行时传入的参数是window和document (function flexible (window, document) { var docEl = document.documentElement // 返回文档的root元素 var dpr = window.devicePixelRatio || 1 // 获取设备的dpr,即当前设置下物理像素与虚拟像素的比值 // 调整body标签的fontSize,fontSize = (12 * dpr) + 'px' // 设置默认字体大小,默认的字体大小继承自body function setBodyFontSize () { if (document.body) { document.body.style.fontSize = (12 * dpr) + 'px' } else { document.addEventListener('DOMContentLoaded', setBodyFontSize) } } setBodyFontSize(); // set 1rem = viewWidth / 10 // 设置root元素的fontSize = 其clientWidth / 10 + ‘px’ function setRemUnit () { var rem = docEl.clientWidth / 10 docEl.style.fontSize = rem + 'px' } setRemUnit() // 当页面展示或重新设置大小的时候,触发重新 window.addEventListener('resize', setRemUnit) window.addEventListener('pageshow', function (e) { if (e.persisted) { setRemUnit() } }) // 检测0.5px的支持,支持则root元素的class中有hairlines if (dpr >= 2) { var fakeBody = document.createElement('body') var testElement = document.createElement('div') testElement.style.border = '.5px solid transparent' fakeBody.appendChild(testElement) docEl.appendChild(fakeBody) if (testElement.offsetHeight === 1) { docEl.classList.add('hairlines') } docEl.removeChild(fakeBody) } }(window, document))
(1)响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局,其适用于页面比较简单的网页,不适合复杂的网页,如电商类
响应式设计与自适应设计的区别:响应式开发一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;自适应需要开发多套界面,通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机,从而请求服务层,返回不同的页面。
(2)响应式布局的原理
响应不同的屏幕尺寸——媒体查询(根据不同的设备加载不同的css)
总结:
(1)移动端性能主要影响因素
(2)移动端一个页面从开始到呈现完毕需要经历的阶段
(3)移动端性能优化目标
(4)移动端性能优化的手段
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。