移动端--笔记

一、移动端

1.什么是移动端?

可以移动得设备被称之为移动端,手机,平板,手表,都可以称之为移动端设备。

2.移动端项目效果如何测试查看?

在浏览器中,按Fn+F12或者右键页面点击检查,打开控制台后激活左上角蓝色小手机。

3.设备模拟器中包含的功能

   (1)切换不同手机型号

   (2)最佳观看比例

   (3)该手机型号的逻辑像素

    (4)右上角三个点可以调出标尺、dpr、设备类型及进行屏幕截图。

4.物理像素(设备像素)

物理像素就是手机屏幕上的像素点,这些像素点在手机出厂时就已经固定了,他是真实存在的像素。

5.逻辑像素(css像素)

在开发页面我们所书写和参考的像素,他是在web编程时的一个虚拟概念像素。

6.设备像素比(dpr)

物理像素和逻辑像素之间的比值。

7.视网膜高清显示屏

在最开始时,是没有物理像素和逻辑像素之分的,但是随着技术的发展,手机屏幕分辨率越来越高。从iphone4开始,提出了一个高清视网膜显示屏的概念,在相同的屏幕大小内,物理像素点多了一倍,这个时候,开始用多个物理像素点来解析一个css像素。

8.为什么学习物理像素、逻辑像素、设备像素比?

目的是为了在拿到图纸后,根据量出的大小,换算我们要去书写的逻辑像素进行开发。

9.布局视口

布局视口是指网页的宽度,一般移动端浏览器都默认设置了布局视口的宽度。一般ios和安卓都会把布局视口定义980px;他是为了解决早期pc端在浏览器上的显示问题而产生的。所以一般pc端页面在移动端上也能显示出来,只是元素显得有点小,而且可以通过手指进行缩放。

10.视觉视口

视觉视口是指用户正在看到的网站的区域,这个区域的宽度等同于移动设备的浏览器窗口的宽度。即用户在移动端看页面时,通过手机窗口看到的区域大小。

11.理想视口

理想视口是指对设备来讲最理想的视口尺寸。需要通过手动添加meta标签来实现,让布局视口和视觉视口大小保持一致。简单的说就是设备多宽我页面多宽。

12.如何设置理想视口

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

13.移动端布局流程

<1>确认设计图出自哪个设备————确认设备像素比dpr

<2>通过设备像素比和量出来的尺寸————确认逻辑像素(css像素)

<3>引入理想视口(meta标签)

<4>引入相关文件和资源,重置默认样式,开始书写样式。

二、移动端布局的几种方式

1.px固定布局 (不推荐)     不能实现多种设备的适配

   以像素作为页面的基本单位,不管设备屏幕及浏览器宽度,只设计一套尺寸;

   通过量取出来的尺寸,经过换算,直接书写页面。

2.响应式布局  (不怎么使用,原因请看优劣势)

优势:

(1)面对不同分辨率设备灵活性强

(2)能够快捷解决多设备显示适应问题

劣势:

(1)其实他是一个折中方案,为了照顾另一端的展示效果,而在pc端和移动端上都无法达到最佳展示效果。

(2)代码累赘臃肿,出现隐藏无用的元素(pc端上藏移动端需要的元素,移动端藏pc端需要的元素),加载时间加长

(3)兼容各种设备工作量大,其实他还是需要根据不同的设备宽度来写几套不同的css,任务量其实总体没有减少,效率低下

(4)html结构总体不变,但是需要写pc端和移动端效果,限制较大,增加开发难度和设计难度。

3.弹性布局

4.等比缩放布局

5.混合布局(弹性布局+等比缩放布局)

三、如何实现响应式布局——————媒体查询

1.概念:媒体查询可以让我们根据设备显示器的特性为其设定CSS样式。媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。

使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果。

2.媒体查询操作方式

书写表达式和查询设备条件,如果都满足则执行为其设置的css,如果不满足则忽略这些css。

3.基础结构

   @media all and (min-width:320px) {

       body { background-color:blue;}

        }

4.支持设备类型(详细请看课件)

     开发中主要使用以下几种

          all         所有类型

          handled     移动端

          screen      前端所有的设备类型(pc、移动、显示屏、笔记本等)

5.关键字    and   not   only

6.几种关键的设备类型媒体查询

<1>手机等小屏幕手持设备    

@media screen and (min-width: 320px) and (max-width: 480px) {}

<2> 平板之类的宽度1024以下设备  

@media only screen and (min-width: 321px) and (max-width: 1024px) {}

<3>PC客户端或大屏幕设备:1028px至更大

 @media only screen and (min-width: 1029px) {}

<4> 竖屏  

@media screen and (orientation:portrait) and (max-width: 720px) {对应样式}

<5>横屏  

@media screen and (orientation:landscape){对应样式}

注意:默认样式写在最上边

一、移动端几种常用布局方式

1.弹性布局

页面多出现百分比和flex布局。可以一定范围内适配所有尺寸的设备屏幕及浏览器宽度。

特点:

 (1)页面多出现百分比和flex

 (2)关键的模块高度固定,宽度伸缩

 (3)两侧重要模块写固定大小,中间空白区域伸缩有弹性,中间这块尽量写flex:1和百分比。

 (4)图片宽度写百分比大小,高度不写。让他根据宽度大小自适应。放图片的父元素盒子也不要写固定的高度。

 (5)文字流式。不要写宽高。

2.等比缩放布局         弊端:字体大小如果不去单独设置的话,会显得很难看。

 (1)媒体查询+rem实现等比缩放布局

可以实现等比缩放。但是需要达到触发条件,并不是实时的等比缩放。一般不考虑

 (2)rem+vw实现等比缩放布局

 思考:

<1>移动端我们是该关注宽度大小变化还是高度变化?

     ——宽度,高度变了就变了呗,纵向我们让中间内容区域滚动就好了。

<2>rem为相对根元素字体大小,1vw为窗口宽度的百分之1,如果我们将vw作为根元素字体大小会发生什么?

——等比缩放布局。假设你的屏幕大小为380px,这个时候1vw=3.8px;现在改变你的

屏幕大小,你的屏幕宽度为320px,那么这个时候1vw=3.2px;这个时候如果我们将

根元素html的字体大小的单位设置为vw,那么我们如果页面布局中全部使用rem作为

单位,当页面宽度发生变化时,根元素字体大小也会相应的变化,我们就能够实现等比缩放。

 <3>关于如何计算根元素字体大小设置为多少vw

              假设设计图宽640px

              那么逻辑像素为320px

              我们想要1rem=100px;

              又因为逻辑像素总体宽度为320px   所以  1vw=3.2px;

              求   1rem=?vw;  

              1rem=100px   3.2px=1vw;那么我们算出来100px=?vw,就能求出1rem=?vw;   1rem=100px=?vw;

              所以  1rem=31.25vw;

            *<4>求根元素字体大小万能公式     (设置后,设计图量多少写多少)

              html{

                font-size:(10000/设计图大小)vw;

              }  

              求解过程:

              假设设计图为828px

              我们想要828px的设计图在任何屏幕宽度内都是满屏效果

              那么我们得知  828px=100vw;

              又因为我们想要  1rem=100px;

              求1rem=?vw;

              828px=100vw;  等号两边同时除8.28    100px=100/8.28vw

              那么  1rem=100px=100/8.28vw;

              那么   1rem=100/8.28vw;     分子分母同乘100     1rem=10000/828vw;

    3.混合布局(等比缩放和弹性布局混着用)

      其实就是rem+vw+等比缩放布局。

等比缩放布局中,个别部分区域,我们需要给他写上一个固定的大小。之前我们都是用px,

现在我们可以在设置根元素字体大小xxxvw后,使用单位rem。每个模块的字体大小也用rem作为单位。

这个时候,如果页面在缩小,会显得更有弹性,并且字体也会随着页面的缩小而缩小。

  二、页面开发单位

    1.px      逻辑像素(css像素)大小

    2.em      相对父元素字体大小

    3.rem     相对根元素字体大小     根元素——html

    4.vw      vw为视窗宽度      1vw为视窗宽度的百分之1

    5.vh      vh为视窗高度      1vh为视窗高度的百分之1

    6.100vw、100vh和100%之间的区别?

   答:100vw和100vh是占据页面窗口的全部,他们的参照物是视窗,也就是页面窗口。100%是占据父元素大小的全部,如果父元素只有400,他就占400,参照物是父元素,所有,100%和100vw、100vh有本质区别。

一、网格布局     grid

1.含义:它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局

2.grid布局和flex布局之间的区别?

(1)相同点:都可以指定父元素内部内部多个子元素的位置。

(2)不同点:

Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。

Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。

3.grid内部各项的概念(容器、项目、行、列、单元格、网格线)

(1)容器:一个案例中最大的盒子,可以理解成父元素。即写了display:grid的元素。

(2)项目:一个案例中的,最大盒子里面的内容,可以理解成子元素.即写了display:grid元素的子元素。

(3)行和列:容器里面的水平区域称为"行",垂直区域称为"列"。

(4)单元格:行和列的交叉区域,称为"单元格"。

(5)网格线:划分单元格的线叫做网格线。水平的网格线划分行,垂直的网格线划分列。

(6)网格线的规律:

<1>1行2列       两横三竖

<2>2行1列       三横两竖

<3>2行2列       三横三竖

<4>n行n列      n+1横n+1竖 

4.grid布局的属性

 (1)属性分类:网格布局可以分为两类,一类为容器属性,一类为项目属性

 (2)容器属性(写给父元素的属性)

1.触发网格布局     display:grid;

              grid            触发网格布局

              inline-grid     触发网格布局,容器变为行内块元素

          2.行列划分

            ——(1)grid-template-rows             划分行        

            ——(2)grid-template-columns           划分列

            ——(3)案例:  3行3列

                    grid-template-rows:100px 100px 100px;

                    grid-template-columns:100px 100px 100px;

            ——(4)特性:可以定义多个属性值,有几个属性值划分几行或几列,每个参数为行或列的大小。

              分不下会溢出,分不完会有剩余空间。每个子元素都会按顺序出现在网格内。子元素

              不写大小,会默认占据此单元格的全部空间。

            ——(5)属性值:

              ——《1》像素取值     100px 100px 100px;

              ——《2》百分比取值   33.3% 33.3% 33.3%;

              ——《3》关键词auto   20% auto 30%;     (auto会去自动分配剩余空间)

              ——《4》功能函数     repeat(5,20%);    repeat()内第一个值为平铺次数,第二组参数为每次平铺需要平铺的值。

              ——《5》关键词       auto-fill     (需要搭配repeat()使用,一般当做repeat的第一个值,根据第二个值来决定平铺几次)

              ——《6》关键词fr     1fr 2fr 3fr   将大小划分多份,每个参数为每份所占份额。

              ——《7》功能函数minmax()      规定行或列的最大最小值

              ——《8》划分网格线   案例如下:      (一般此属性搭配项目属性grid-row和grid-column一起使用)

                            grid-template-rows:[x1] 100px [x2] 100px [x3] 100px [x4] ;

                            grid-template-columns:[y1] 100px [y2] 100px [y3] 100px [y4];  

                         

          3.指定区域    grid-template-areas  (一般搭配grid-area使用)

            案例: grid-template-areas:

                                "a a b"

                                "c c b"

                                "c c d";

            注意事项:划分区域时,只能是长方形和正方形,不能斜着来组成三角形或者梯形。可以用"."作为占位符使用,

            使用"."的区域,不再使用。而且"."可以斜着用。

          4.项目的排列方向   grid-auto-flow

                          row       子项优先沿着行排列(默认值)

                          column     子项优先沿着列排列

          5.项目单元格对齐方式  

              justify-items

                  start    横向开始地方对齐

                  end      横向结束地方对齐

                  center   居中

                  stretch  拉伸铺满(默认值,但是子项如果写宽,此特性不显示)

              align-items

                  start    纵向开始地方对齐

                  end      纵向结束地方对齐

                  center   居中

                  stretch  拉伸铺满(默认值,但是子项如果写高,此特性不显示)

              *place-items:垂直 水平;      项目单元格对齐方式复写形式

          6.项目单元格整体对齐方式

              justify-content    整体水平对齐方式

              align-content       整体垂直对齐方式

              *place-content:垂直 水平;      项目单元格整体对齐方式复写形式

                  start                开始地方对齐

                  end                  结束地方对齐

                  center               居中对齐

                  space-around         环绕式分布

                  space-between        两端分布

          7.行列间距    (此属性不要和palce-content一起使用)

              grid-row-gap          网格行与行之间的间距

              grid-column-gap       网格列与列之间的间距

              *grid-gap:行间距 列间距;      复写形式,网格行列之间的间距

      (4).项目属性 

        (1)grid-row:x1/x2      (复写属性)  斜杠之前为开始地方的网格线名称,斜杠后为结束地方网格线名称。

            等价于一下两个属性

            grid-row-start      开始地方的网格线名称

            grid-row-end        结束地方网格线名称

        (2)grid-column:y1/y2   (复写属性)  斜杠之前为开始地方的网格线名称,斜杠后为结束地方网格线名称。

            grid-column-start      开始地方的网格线名称

            grid-column-end        结束地方网格线名称

        (3)grid-area         项目所占的区域

            案例:grid-area:a;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值