美文网首页
再谈翻页H5不同屏幕不同分辨率下的适配法则

再谈翻页H5不同屏幕不同分辨率下的适配法则

作者: microkof | 来源:发表于2017-03-16 17:45 被阅读1485次

从前我写过一篇《翻页H5全分辨率适配最佳实践》,那篇对于不同屏幕不同分辨率下的适配讲的太简单,其实是我想的太简单。想要尽可能完美的适配,其中的花花还是有很多的。

工作台分辨率

从前我讲了,工作台以320x520作为标准分辨率,然后让浏览器根据initial-scale来放大显示。

div层级关系

我认为的比较理想的层级关系是:

div.ancestor>div.page>div.editarea>div.element

也就是说:

1、div.ancestor是祖先层,每个人有自己的写法,在本文里不说,但是宽高必须是视口宽高,也就是百分之百。

2、page层,负责设背景图,它的宽高都始终是百分之百,也就是视口宽高。

3、editarea层,这个层作为一个调整层最重要,下文有详细说明。

4、element层,是具体浮动元素,也就是内容。

内容布局

今天主要讲讲内容布局。由于我们要适配高视口和矮视口,而320x520是最高的视口,所以,设计师做设计,内容注定不应该充满整个画面,也就是说,内容不能从顶线一直铺到底线。既然要有一定的空隙,那么就涉及到空隙留在什么地方。具体分成四种情况:(1)内容居中(2)内容居上(3)内容居下(4)内容占满。

这就相当于word里面的:(1)居中(2)左对齐(3)右对齐(4)两端对齐。可以对照想象一下。

下面分别讲述。

主体内容集中在中部,上下留白

这种布局是最主流的布局,设计师要求程序员:

1、浮动元素集中在中部,留天留地。

2、背景图的主体元素也在中部,留天留地。

应对设计师的这种要求,程序员应该做的是:

1、背景图:

background-position: 50% top;
background-size: cover;

2、editarea样式:

.editarea{
  position: relative;
  width: 100%;
  top: calc((100% - 520px) / 2);
  height: 520px;
}

这里注意top: calc((100% - 520px) / 2);的妙用,简单说,我们希望editarea跟祖先元素中心点重合,也就是居中对齐,而且希望editarea的高度大于视口,是固定值520px。如下图所示:

Paste_Image.png

为什么要这么搞呢?为什么editarea的高度不能是视口100%呢?

因为这涉及到浮动元素的定位问题。我们可以用top、left、bottom、right定位一个元素,但并不存在一种叫center的属性,也就是说我们没办法简单的以容器中心点为坐标来定位元素,只能从四个边开始丈量。

当我们以320x520为画布,摆放好了所有的浮动元素,每个浮动元素都有自己的top值,假设editarea的高度是视口100%,那么非常靠近底部的元素,在视口中就会被裁剪。这当然不是我们想要的。因此,我搞一个向上的偏移,这就让所有浮动内容都在手机屏幕中显示了出来。

3、浮动元素:原则上都使用top: xxxpx,不使用bottom: xxxpx,除非你确定某个浮动元素必须下对齐,而且它在任何视口都不影响其他元素,也不影响背景。另外,浮动元素绝对不允许吸顶或者吸底,因为这样百分百会被裁剪。

主体内容在上方,从上向下铺内容

设计师要求程序员:

1、浮动内容,必须从顶部开始往下排列,到屏幕的底部的时候没有主体内容。比较高的视口下,底部会看到一些无内容区,比较矮的视口下,底部被裁剪。

2、背景图,优先显示顶部内容,背景图的底部不设计实质内容,可以被窗口裁剪。

应对设计师的这种要求,程序员应该做的是:

1、背景图:

background-position: 50% top;
background-size: cover;

2、editarea样式没啥特别的:

.editarea{
    position: relative;
    width: 100%:
    height: 100%;
}

简单解释这里为啥不用top修正位置了呢?因为你的内容要求从顶部往下排,当然就不用修正位置了。

3、浮动元素:原则上都使用top: xxxpx,不使用bottom: xxxpx,除非你确定某个浮动元素必须下对齐,而且它在任何视口都不影响其他元素,也不影响背景。

主体内容全部在下方,从下往上铺内容

这个跟上面相反,内容集中在下部,比如,设计师做了一个舞台,这个舞台是重点,不允许被裁剪,如果裁剪的话,站在舞台上的人就等于悬空了,而且,这个舞台决不允许被裁剪,哪怕是裁剪一部分都会让人看不懂这是个什么东西。这种情况就是所谓主要内容在下部。

Paste_Image.png

此时设计师要求程序员:

1、浮动内容,必须从底部开始往上排列,到屏幕的顶部的时候没有主体内容。比较高的视口下,顶部会看到一些无内容的天花板,比较矮的视口下,天花板允许被裁剪。

2、背景图,优先显示底部内容,背景图的顶部不设计实质内容,可以被裁剪。

应对设计师的这种要求,程序员应该做的是:

1、背景图:

background-position: 50% bottom;
background-size: cover;

2、editarea样式跟上面一样:

.editarea{
    position: relative;
    width: 100%:
    height: 100%;
}

3、浮动元素:原则上都使用bottom: xxxpx,不得使用top: xxxpx,除非你确定某个浮动元素必须在顶部,而且确认它在任何视口都不影响其他元素,也不影响背景。

主体内容占满全屏

这个就有点意思了,也就是说:

设计师要求程序员:

1、屏幕顶部的内容必须全露,而且尽量吸顶。

2、屏幕底部的内容也必须全露,而且尽量吸底。

3、屏幕中央的内容占据的面积可大可小,比较疏松,均匀分布。

这种“主体内容占满全屏”的例子有:

1、弹幕,假设你设定弹幕有10行,要求铺满全屏,那么就是从顶部开始均匀往下铺10行。弹幕当然不允许被裁剪,而且必须均匀分布。高视口下,行间距就大一点,低视口下,行间距就小一点。

2、局部滚动列表,这个列表尽管是局部滚动的,但是我们当然希望它尽量占满全屏。

应对设计师的这种要求,程序员应该做的是:

1、背景图:

background-position: 50% 50%;
background-size: cover;

2、editarea样式跟上面一样:

.editarea{
    position: relative;
    width: 100%:
    height: 100%;
}

3、浮动元素:如果要均匀分布,原则上都使用top: xxx%,注意,用百分比,而不用px值。

类总结

page层:

.bpt {
    background-position: 50% top;
}

.bpb {
    background-position: 50% bottom;
}

page层默认是background-position: 50% 50%;,根据需要再追加.bpt或.bpb。

editarea层:

.editarea {
    position: relative;
    margin: 0 16px;
    width: 288px;
    height: 520px;
    top: calc((100% - 520px) / 2);
    tap-highlight-color: transparent;
    overflow: hidden;
}

.editarea-w100 {
    margin: 0;
    width: 320px;
}

.editarea-h100 {
    height: 100%;
}

相关文章

  • 再谈翻页H5不同屏幕不同分辨率下的适配法则

    从前我写过一篇《翻页H5全分辨率适配最佳实践》,那篇对于不同屏幕不同分辨率下的适配讲的太简单,其实是我想的太简单。...

  • 移动h5自适应布局

    移动h5自适应布局 问题一,分辨率Resolution适配:不同屏幕宽度,html元素宽高比和字体大小,元素之间的...

  • Android TV 开发之屏幕适配

    前言 Android 的屏幕适配是指适配不同机顶盒 UI 框架层输出的分辨率和 dpi,而不是适配不同分辨率的电视...

  • 安卓屏幕分辨率

    话不多说,推荐几篇有关安卓屏幕适配文章,以后会不定时更新: 分辨率概念 Android屏幕适配(不同的屏幕分辨率和...

  • 016--cc.Widget与屏幕适配

    屏幕适配 1: 一款游戏能适应不同的手机分辨率,我们把这个称为屏幕适配;2: creator屏幕适配策略: 固定...

  • 屏幕适配

    什么是屏幕适配:为了使同一款App在不同分辨率的手机上显示效果大致相同的这个过程,叫做屏幕适配。为何要做屏幕适配:...

  • CSS搬运工

    适配不同分辨率屏幕https://blog.csdn.net/cyjch/article/details/5150...

  • iOS屏幕尺寸适配

    屏幕适配方法 针对不同屏幕尺寸的适配,主要有3种方式:1.不同屏幕尺寸下,元素的尺寸是固定的;2.不同屏幕尺寸下,...

  • 屏幕适配

    基本概念 适配 概念:适合兼容各种不同的情况系统适配:针对不同系统版本进行适配屏幕适配:针对不同大小的屏幕尺寸进行...

  • Android屏幕适配总结

    Android屏幕适配总结 前言 目录 定义 使得某一元素在Android不同尺寸、不同分辨率的手机上具备相同的显...

网友评论

      本文标题:再谈翻页H5不同屏幕不同分辨率下的适配法则

      本文链接:https://www.haomeiwen.com/subject/boidnttx.html