像素、视口、媒体查询、响应式布局(栅格系统)、移动端屏幕适配

-----------像素----------------

物理像素(设备像素)定义

分辨率:1792*828像素分辨率表示横向828个点,纵向1792个点--物理像素

实际开发使用CSS像素

CSS像素--实际开发中使用的像素

1.别名:逻辑像素/设备独立像素(与设备无关)

2.设备像素比dpr=物理像素/css像素(缩放比例是1的情况下)---同一方向

3.缩放改变的是css像素的大小--物理像素的大小不会改变

4.PPI(dpi):  屏幕每英寸的物理像素点


-------------视口 viewport ------------

1.标签:<meta name="viewport" content="=width=device-width,initial-scale=1,user-scalable=no,maximum-scale=1,minimum-scale=1"/>-----标准写法

2.content:="=width=device-width"----视口自动调整匹配设备宽度

" initial-scale=1"缩放---相当于上面的自动匹配宽度

建议都写避免浏览器兼容问题

3.user-scalable=no/yes | 是否允许用户缩放---一般为no,避免打断布局

maximum-scale=1,minimum-scale=1与上面含义相同,建议都写避免兼容问题

4.获取视口宽度js获取方法

window.innerWidth

document.documentElement.clientWidth

document.documentElement.getBoundingClientRect()

screen.width---不建议,兼容问题

5.dpr 设备像素比js获取方法

window.devicePixelRatio



--------------媒体查询-------------------

为什么需要媒体查询---一套样式不能适应不同的屏幕大小,需要针对不同的大小屏幕去写样式

媒体查询格式------ @media 媒体类型 逻辑(条件表达式){ 选出来再操作 }

媒体类型:不写默认是all(所有类型)/// screen屏幕 /// print打印设备 /// speech屏幕阅读器(残障人士专用)

逻辑:and(与)/// ,(或) /// not(非)

媒体查询 的条件表达式如图(选中的常用)

landspscape 横屏

portrait 竖屏

例子1:

@media screen and ( min-width : 900px ) and ( max-width : 1200px ) { 屏幕宽度 >= 900px , <= 1200px的设备单独设置样式 }

例子2:如果不指定查询的媒体类型,默认是all 所有类型

@media ( min-width : 900px ) and ( max-width : 1200px ) {  } 不指定媒体类型的情况下,@media后直接跟条件表达式即可,因为不需要判断用户的设备类型。




--------------------------媒体查询之策略(案例)----------------------

设置断点,根据用户屏幕设置不同样式

方法1、具体设置,如 (最小400px)and(最大600px)........

方法2、pc端优先,先统一设置最大屏幕对应的图片宽度,再层层设置最大宽度的断点。利用的是css由上到下执行的机制,满足条件就覆盖上一层css样式

方法3、移动端优先,思路与pc端一样,只是出发点不同,先统一设置最小屏幕对应的图片宽度,再层层设置最小宽度的断点。



-------------移动端常用单位------------------

px像素大小

em 相对自己的font大小 ----font-size:12px; height:5em; 那么高就等于5*12=60px,因为太麻烦复杂一般不使用,除了文章首行缩进

rem 相对根节点(html)的font大小,即html{ font-size:12px;} 之后整个文档的rem都会根据这个12px来进行计算rem

vw 相对视口宽度比例 1vw是视窗宽度的1%

vh 相对视口高度比例 1vh是视窗高度的1%

视口宽度用JS获取,根据用户屏幕大小,修改html的字体大小 从而动态调整布局宽高

用px/em做单位,每次都要用js---修改,不能统一修改

统一修改方法:

我们假设 1rem=20px; --> 屏幕宽375px

height=50/20=2.5rem

1rem=40px; --> 屏幕宽750px

height=100/40=2.5rem

得出: 1rem=(?/375)*20px=屏幕宽度

1rem = (document.documentElement.clientWidth / 375) * 20px;

实例Js:

setRemUnit(); //运行一次函数

window.onresize=setRemUnit; //屏幕缩放一次就运行一次函数

function setRemUnit(){

var docEl=document.documentElement; //获取到根节点,就是html

var viewWidth=docEl.clientWidth; //获取到视口宽,没有做兼容,百度一下兼容性问题

docEl.style.fontSize=viewWidth/375*20+'px' //把html的字体宽度改变,所以全局的rem都会跟着改变

}

rem总结:

1. rem与html的字体大小是对应的,如果1rem=20px,那么就需要设置html的字体大小为20px;

2. 如果设计稿是375px宽的,我们指定该宽度下1rem=20px,那么设计稿上40px的元素,就是2rem。也就是说,在写页面的时候,要指定设计稿对应的页面内,1rem等于多少px,然后参考设计稿去计算元素是多少rem。当页面不是375px宽时,就需要根据页面的实际宽度来动态设置html的字体大小,这样元素就会跟随视口的宽度来进行缩放了。


----------------响应式布局--------------

对不同屏幕尺寸大小做出相应,并进行响应布局的一种移动web开发方式,媒体查询设置断点进行不同的布局效果

-------------------栅格系统(看文件夹案例)-------------------------

栅格系统,把页面或者版心等容器分为固定(12/16格等),屏幕缩小时,结构需要占用更多栅格;屏幕变大时,结构需要占用栅格变少



-------------------------移动端屏幕适配---------------------------

源码:https://class.imooc.com/course/1006


简单适配原理

通用适配原理:添加部分,主要解决不同设备像素比下,边框会变粗,因为放大屏幕,1px物理像素会占据更多css像素

还需要设置不同设备像素比下的body、input、a的字体大小,因为dpr是2的情况下,1css像素=2物理像素(肉眼看到的),所以需要根据dpr缩放

一般设计稿是i6为准,并且是放大一倍的,如果只是375的话,量的尺寸需要乘以2

i6的屏幕宽度是375,CSS像素是750个,因为一样大小的手机分辨率可能不一样,所以不能按物理像素,应该按CSS像素所以输出为750,750/18.75=40px=1rem

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354