HTML5如何利用rem实现自适应布局

HTML5如何利用rem实现自适应布局,第1张

分析设计图

假设设计图大小为1080px。这也就意味着,在开发时,需要兼容的最大分辨率为1080px,最小的为320px。

2. 调整视口

代码实例:

<!DOCTYPE html>

<head>

    <meta charset="UTF-8" />

    <title>布局之路-移动端开发实例</title>

    <meta name="viewport" content="width=device-width,user-scalable = no" />

    <link rel="stylesheet" type="text/css" href="css/reset.css" />

</head>

<body>

    <div class="wrap"></div>

</body>

</html>

代码解析:由于使用不同设备打开网页时,宽度均有所不同,所以不能讲视口设置为固定值,应当为width=device-width,即将视口设置为当前设备的宽度。

3. 确定设计图的最小字体

浏览器(部分)能够显示的最小字体未12px,当移动端页面宽度为320px时,要保证最小字体为12px,那么在1080px的设计图中,最小字体应当为42px。

代码实例:

    <style type="text/css">

        html {

            font-size: 42px

        }

    </style>

4. 按照设计图的像素进行开发

按照正常网页开发流程,进行网页开发即可。

5. 使用百分比和rem替换px

代码效果对比:

/*使用固定像素*/

.box {

    float: left

    width: 658px

    font-size: 72px

    text-align: center

    line-height: 195px

}

/*使用百分比和rem*/

.box {

    float: left

    width: 60.93%

    font-size: 1.71rem

    text-align: center

    line-height: 4.64rem

}

代码解析:

水平方向的值,将具体像素调整为百分比。百分比的计算是根据父级的内容区宽度进行计算的。

例如,父级宽度为1080px, 子级元素为197px,那么子元素转换为百分比为:197/1080*100%=18.24%。需要注意的是百分比根据父级计算,当标签结构级别不同时,计算公式中的“分母”也有所不同,在开发时这个地方很容易出现问题,请务必注意。

垂直方向的值,将具体像素调整为rem,与水平方向相比,垂直方向的计算就比较简单。例如,行高为195px,HTML标签当前的字体大小为42px,将行高转换为rem单位,即195/42= 4. 64rem。

先给你写一套代码,之后再来解释哈。

css部分:

.aa {

    display: flex //使用flex布局,可以轻易获得水平布局

    align-items: center //垂直方向居中

    justify-content: center //水平方向居中

    height: 200px

    border: 1px solid #000

}

.aa1, .aa2, .aa3 {

    flex: 1

    padding: 2px

    height: 100px

}

.aa1 div, .aa2 div, .aa3 div {

    width: 80%

    height: 100px

}

.aa1 div {

    background-color: red

}

.aa2 div {

    background-color: green

}

.aa3 div {

    background-color: blue

}

html部分:

  <div class="aa">  //flex的容器外框

    <div class="aa1"><div style="width: 100%">内容1</div></div>

    <div class="aa2"><div style="width: 100%">内容2</div></div>

    <div class="aa3"><div style="width: 100%">内容3</div></div>

  </div>

效果如图:

垂直和水平居中都是相对于外框来说的,即本例的aa来说的。flex=1即为在水平方向是等分布局的。在你给的安例中,直接循环aa就可以。如果对flex不懂,可以去学习一下,推荐扩展链接:网页链接

感应式设计,简单来说,就是当用不同设备访问时,能够根据设备的宽度和高度对设备进行动态的适配;例如,用iPhone4、iPhone5、iPhone6、PC、iPad访问同一个网址,正好能打开一个适合该设备的一个HTML5的页面,不留白边,不变形。这就算是感应式设计了,也就是本文说的“屏幕自适应”。由于设备分辨率不同,长宽比不同,如果设计一次,就要适应所有的屏幕(包括PC),这个几乎是不可能的。主要有以下三种情况:

1. 如果等比例缩放,内部位置关系会发生变化,会严重影响用户体验;同时,设备屏幕之间不存在等比例的关系,所以同样会有部分屏幕内容无法显示或留白边;

2. 如果把小屏幕适配好,放在更高的大屏幕里面,那两边就会有白边;或者把图扯大,这样就会变形;

3. 如果把大屏幕适配好,放在小屏幕中,就有些部分会丢失。

除非借助未来的AI(人工智能)的发展,否则很难自动解决这个问题。以前的网站设计,其实也是分开几种版面进行设计的,例如,根据宽度为多少时候采用一种设计板式。

所以,我就纳闷了,现在HTML5工具到底是如何实现感应式的呢?

经研究发现,一共有两种方式:

第一种,伪“感应式”设计:(HTML5模板类方案)

上图是HTML5模板类测试结果,依次是iPhone4、iPhone5、iPhone6

可以看出iPhone4时,变形最严重,iPhone5效果最好,iPhone6是等比例缩放后,两侧边缘,有些像素显示不了。

因此,这种“感应式”,称之为伪“感应式”HTML5工具,在设计时不会留白边,但是要求尽量把内容都往中间放,需要设计一张名为“背景”的底图,用于拉伸时用。

存在的问题:

1. 内容都要居中放置,别放上下个边;例如,把按钮放到最下面,iPhone打开后,就会看不到按钮;

2. 不可能适应PC、Pad等设备。

结论:

简单、应急时使用。

第二种,多版面感应式设计:(VXPLO互动大师方案)

用于互动大师,通过添加 Device控件的方式,实际上还是需要设计几个版面(设计上多数可以Ctrl-C +Ctrl-V,所以设计上并不算麻烦),因此本质上是真正的“感应式”设计,只要稍微勤快点儿,是可以一个URL地址,完美适应多个屏幕的,包括PC和Pad。用于互动大师,通过添加 Device控件的方式,实际上还是需要设计几个版面(设计上多数可以Ctrl-C +Ctrl-V,所以设计上并不算麻烦),因此本质上是真正的“感应式”设计,只要稍微勤快点儿,是可以一个URL地址,完美适应多个屏幕的,包括PC和Pad。

结论:要做真正的“感应式”设计,自动适应多个屏幕,又不想写代码,就只能用互动大师http://vxplo.cn去做。设计中不会出现任何变形或丢失情况,不过需要多设计几个版面,一般如果是手机端的轻应用设计iPhone 4 5 6的分辨率就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7230090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存