前端小白在路上。。。

初级前端的我,面对很多问题,都不知道怎么解决,百度,问别人,然后自己去理解。

发现,太多的事情无法想象,无法预料,现在,还可以好好的活着就该感恩的活着!

我的大学同学,我的主内家人,竟那么突然离开了,没有留下一丝的只言片语,能怎么办呢?只能感恩的活着,活出感恩的生活,写这个文章,想好好的提醒自己,今天,此时此刻,还能坐着敲代码是种幸福,因为我知道我不是自己活着,我是为荣耀上帝而活,有目标有使命,希望,我身边的人可以因为我而得益处!

感慨下人生,立足现在,好好生活。珍惜眼前的一切,因为不知道明天和意外哪个会先来。。。

进入正题,之前不太会写移动端,就会用框架,然而框架还用的不太熟,所以,一顿百度,记录下。


首先要清楚一些概念:

物理像素(physical pixel)

一个物理像素是显示器(手机屏幕)上最小的物理显示单元,在操作系统的调度下,每一个设备像素都有自己的颜色值和亮度值。

设备独立像素(density-independent pixel)

设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),然后由相关系统转换为物理像素。

所以说,物理像素和设备独立像素之间存在着一定的对应关系,这就是接下来要说的设备像素比。

设备像素比(device pixel ratio)

设备像素比(简称dpr)定义了物理像素和设备独立像素的对应关系,它的值可以按如下的公式的得到:

设备像素比 = 物理像素 / 设备独立像素 // 在某一方向上,x方向或者y方向

在javascript中,可以通过window.devicePixelRatio获取到当前设备的dpr。

在css中,可以通过-webkit-device-pixel-ratio,-webkit-min-device-pixel-ratio和 -webkit-max-device-pixel-ratio进行媒体查询,对不同dpr的设备,做一些样式适配。


移动端页面的head里要写上

解析:

width=device-width:让宽度=设备缩放之后的宽度,比如320、360、375、414这些屏幕。

initial-scale=1:初始化的缩放比例1,这个属性和css中transform: scale(1);有异曲同工之妙。

minimum-scale=1:最小缩放比例,相当于你给div设置mix-height一样,有限制。maximum-scale=1:最大缩放比例。

user-scalable=no:是否允许用户使用双指进行缩放,默认不允许。


我们需要写border:1px的时候,实际上是物理相似2px,这种情况平时做直线的时候勉强可以应付,transform: scaleY(0.5);这样看起来就洗了很多,但是做圆角的按钮的时候就力不从心了,而且大量使用transform 的代码也不是很优雅,这个时候我们可以在头部引入这么一行代码:

就是640,和设计图的尺寸一模一样。还是灰常管用的,可以用下

然后,你需要引入js,之前我写的媒体查询,但是效果不是特别好,很多屏幕还有距离什么的与设计出入太大,所以还是动态获取当前屏幕大小,然后让电脑自己生成相应的样式渲染还是很棒哒!来段js代码

(function () {

var supportOrientation = (typeof window.orientation === 'number' && typeof window.onorientationchange === 'object')

var init = function () {

var htmlNode = document.body.parentNode, orientation

var updateOrientation = function () {

if (supportOrientation) {

orientation = window.orientation

switch (orientation) {

case 90:

case -90:

orientation = 'landscape'

break;

default:

orientation = 'portrait'

break;

}

} else {

orientation = (window.innerWidth > window.innerHeight) ? 'landscape' : 'portrait'

}

htmlNode.setAttribute('class', orientation)

}

var recalc = function () {

var docEl = document.documentElement

var clientWidth = docEl.clientWidth

docEl.style.fontSize = 50 * (clientWidth / 375) + 'px'

}

var x=function(){

recalc()

updateOrientation()

}

if (supportOrientation) {

window.addEventListener('orientationchange', x, false)

} else {

//监听resize事件

window.addEventListener('resize', x, false)

}

x()

}

window.addEventListener('DOMContentLoaded', init, false)

})()



docEl.style.fontSize = 50 * (clientWidth / 375) + 'px'.这个50是根font-size的大小,可以自己改动,我的设计稿是苹果6的375*667,所以我用的50,这个根据实际情况和个人偏好而定,怎么好算怎么来。

然后就可以进行你的布局和渲染了。。。。里面用到的属性,不管是height,width,margin,padding,都统一用的rem,相对的单位,字体的话就是设计给的大小,用px和rem进行换算,话说有点费脑筋,所以如果可以,可以选择用Sass语言,便利开发,这也是我要学习的。

前端小白在路上。。。_第1张图片

慢慢学习,每天进步一点点,希望可以帮到你!

每天都是新的,每天都是与众不同的,世界有你会更美好!加油!!!

你可能感兴趣的:(前端小白在路上。。。)