pc端网站与移动端(手机)网站区别
PC端
:屏幕尺寸大,显示内容多,结构复杂,缩小浏览器窗口,页面内容结构并不会发生改变,也并不是响应式移动端(手机网站)
:屏幕尺寸小,显示的内容有限,结构清晰,简洁,设备类型(ipad,iphone5,6,安卓等)繁多,页面内容结构自适应变化,随着浏览器窗口缩小而缩小,放大而放大,等比例缩放相同点
:利用html+css(包括css3)+javascript,pc端性能优化同样适用于移动端策略不同点
:
不可不知的前端性能优化
文章适合页面内容结构均匀分配,固定高度,结构不是很复杂,注意要设置viewport视口内容宽度等于设备的宽度如下示例代码如下
html内容结构样式代码
固定高度,宽度自适应,100%比做适配
左边
右边
1
2
3
4
5
6
7
8
9
10
左边80%
右边20%
示例代码如下所示
用老版本display:box弹性盒子布局示例代码如下
display:box实现页面的自适应
左边
右边
1
2
3
4
5
6
7
8
9
9
新版本的弹性盒模型实现页面自适应
html内容结构代码
左边
右边
1
2
3
4
5
6
7
8
9
9
css层叠样式代码
*{
padding:0;
margin:0;
}
body{
font-family:"微软雅黑";
font-size:16px;
}
.parent{
display:-webkit-flex; /*声明弹性盒模型*/
display:flex;
}
.left,.right{
width:40px;
height:40px;
text-align:center;
line-height:40px;
}
.left{
background:#abcdef;
}
.right{
background:#DD4F43;
}
.center{
-webkit-flex:1; /*一定要注意加上浏览器前缀,否则就会失效*/
flex:1;
}
.center input{
width:100%;
height:40px;
outline:none;
}
.banner-adv{
width:100%;
height:200px;
display:-webkit-box;
display:box;
background:#0D6CB0;
}
.list{
width:100%;
height:90px;
display:-webkit-flex;
display:flex;
}
.list div{
-webkit-flex:1;
flex:1;
text-align:center;
line-height:90px;
}
.list div:nth-of-type(1){
background:#DE5246;
}
.list div:nth-of-type(2){
background:#19A25F;
}
.list div:nth-of-type(3){
background:#FF8080;
}
.list div:nth-of-type(4){
background:#F4CD0B;
}
.list div:nth-of-type(5){
background:#9EDA45;
}
.list-Two{
margin:15px 0 0 0;
}
.list-Two div:nth-of-type(1){
background:#B847FF;
}
.list-Two div:nth-of-type(2){
background:#79B900;
}
.list-Two div:nth-of-type(3){
background:#FF2424;
}
.list-Two div:nth-of-type(4){
background:#D2E4F0;
}
.list-Two div:nth-of-type(5){
background:#4CDF2B;
}
.con{
height:200px;
display:-webkit-flex; /*声明弹性盒模型*/
display:flex;
}
.con div:nth-of-type(1){
-webkit-flex:8; /*根据父元素分成8等分,占80%*/
flex:8;
background:#80B3FF;
}
.con div:nth-of-type(2){
-webkit-flex:2; /*根据父元素分成2等分,占20%*/
flex:2;
background:#CD8B37;
}
自己设置一个640等宽度,然后进行等比例缩放(目前低版本的安卓不支持) 让640px像素的东西,缩放到iphone5 320的尺寸当中去,怎么个缩放呢,让宽度等比例缩放,高度自适应,所以这样看起来就不会失真,让宽高度等比例的缩放,按照640来进行切图
viewport
:视口宽度,设备的屏幕上能用来显示我们的网页的那一块区域()浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域)
content
:描述视口内容,width=device-width
,网页内容宽度等于设备的宽度
initial-scale
:()初始缩放比例),能够起到和width=device-width相同的效果(把理想的视窗设置为设备宽度),两个配合使用能够很好的解决移动端各设备的适配问题
maximum-scale
:最大缩放比例
minimum-scale
最小缩放比例
user-scaleable
:如果值是0或者no,表示禁止用户手指缩放
html内容结构
![](img/06chugui.jpg)
![](img/07shoubiao.jpg)
![](img/08zhoumojiadain.jpg)
![](img/09junzi.jpg)
css层叠样式
*{
padding:0;
margin:0;
}
div{
width:640px;
}
img{
width:100%;
display:block;
}
js代码
/*
* 固定页面的尺寸,做一个640的页面为标准,然后进行等比例缩放,整个页面会跟着宽度等比例缩放
* @function scaleFun 等比例缩放函数
* @Object {Number} screenWidth:获取window屏幕的宽度
* @number fixedWidth 设置页面固定宽度
* @number {scale} 缩放比例,屏幕(设备)的宽度/固定的宽度
* @Object {createMeta} 动态的创建meat标签元素
* @Object {metaAttr} 定义一个对象,设置添加属性
* @for..in循环,将metaAttr的属性添加到createMeta中去
* @将meta标签添加到head头部中去
*/
window.onload = function(){
// 等比例缩放函数
function scaleFun(){
var screenWith = window.screen.width; // 获取window屏幕的宽度
var fixedWidth = 640; // 固定宽度
var scale = screenWith/fixedWidth; //缩放比例 window屏幕的宽度/固定宽度,这里的640看设计图纸给的像素,如果是750那么就写750,计算缩放比
var createMeta = document.createElement("meta");// 动态的创建meta标签
// 设置属性
var metaAttr = {
name:"viewport",
content:'width='+fixedWidth+', initial-scale='+scale+', maximum-scale='+scale+', user-scalable=no'
}
for(var key in metaAttr){
createMeta[key] = metaAttr[key];
}
// 将createMeat添加到head头中
document.getElementsByTagName("head")[0].appendChild(createMeta);
/*
createMeta.setAttribute('name','viewport'); createMeta.setAttribute('content','width='+fixedWidth+', initial-scale='+scale+', maximum-scale='+scale+', user-scalable=no');
document.getElementsByTagName('head')[0].appendChild(createMeta);
*/
}
scaleFun();
}
html内容结构
欢迎关注微信itclan公众号
![](img/06chugui.jpg)
![](img/07shoubiao.jpg)
![](img/08zhoumojiadain.jpg)
![](img/09junzi.jpg)
css层叠样式
less预处理器
@rem:40rem // 这里的rem怎么确定,根据你设计稿尺寸,根据有js中把网页(设计图)分成多少等分,动态的设置html根节点的大小,这里分成16等分,比如设计稿是640那么1rem就等于640/16=40px,如果设计稿是320,同理320/16=20
*{
padding:0;
margin:0;
}
body{
overflow-x:hidden;
}
div.imgList{
width:720/@rem;
}
img{
display:block;
}
div.spanText{
text-align:center;
font-size:40/@rem;
}
编译出来的对应的css
*{
padding:0;margin:0
}
body{
overflow-x:hidden
}
div.imgList{
width:18rem
}
img{
width:18rem;
display:block
}
div.spanText{
text-align:center;
font-size:1rem
}
js代码
window.onload = function(){
var html = document.querySelector("html"); // 获取根节点html,用h5新增的选择器
var timer = null;
// 动态的获取设置根节点fontSize大小
function changeRem(){
var htmlWidth = html.getBoundingClientRect().width; // 获取网页的宽度,也就是屏幕的宽度
html.style.fontSize = htmlWidth/16+"px";// 把网页(设计图)分成多少等分,动态的设置html根节点的大小,这里分成16等分
}
// 页面尺寸发生改变时,重新计算文字等大小,功能函数
function Time(){
clearTimeout(timer);
timer = setTimeout(function(){
changeRem();
},10)
}
// 浏览器窗口发生变化时
window.addEventListener('resize',function(){
Time();
});
// 页面加载的时候,如果调用缓存的话,在次执行changeRem
window.addEventLister('pageshow',function(e){
if(e.persisted){ // 判断有没有缓存
Time();
}
})
}
总结