美文网首页
页面布局

页面布局

作者: Lyan_2ab3 | 来源:发表于2020-04-08 17:01 被阅读0次

如果只做pc端,那么静态布局(定宽度)是最好的选择;
如果做移动端,且设计对高度和元素间距要求不高,那么弹性布局(rem+js)是最好的选择,一份css+一份js调节font-size搞定;
如果pc,移动要兼容,而且要求很高那么响应式布局还是最好的选择,前提是设计根据不同的高宽做不同的设计,响应式根据媒体查询做不同的布局。

静态布局:

即传统Web设计,网页上的所有元素的尺寸一律使用px作为单位。

流动式布局:

流式布局(Liquid)的特点(也叫"Fluid") 是页面元素的宽度按照屏幕分辨率进行适配调整,但整体布局不变。代表作栅栏系统(网格系统)。

网页中主要的划分区域的尺寸使用百分数(搭配min-、max-属性使用),例如,设置网页主体的宽度为80%,min-width为960px。图片也作类似处理(width:100%, max-width一般设定为图片本身的尺寸,防止被拉伸而失真)

缺点明显:主要的问题是如果屏幕尺度跨度太大,那么在相对其原始设计而言过小或过大的屏幕上不能正常显示

自适应布局:

自适应布局的特点是分别为不同的屏幕分辨率定义布局,即创建多个静态布局,每个静态布局对应一个屏幕分辨率范围。改变屏幕分辨率可以切换不同的静态局部(页面元素位置发生改变),但在每个静态布局中,页面元素不随窗口大小的调整发生变化。可以把自适应布局看作是静态布局的一个系列。

设计方法:使用 @media 媒体查询给不同尺寸和介质的设备切换不同的样式。在优秀的响应范围设计下可以给适配范围内的设备最好的体验,在同一个设备下实际还是固定的布局。

响应式布局:

随着CSS3出现了媒体查询技术,又出现了响应式设计的概念。响应式设计的目标是确保一个页面在所有终端上(各种尺寸的PC、手机、手表、冰箱的Web浏览器等等)都能显示出令人满意的效果

弹性布局:

1、rem,em区别:rem,em都是顺应不同网页字体大小展现而产生的。其中,em是相对其父元素,在实际应用中相对而言会带来很多不便;而rem是始终相对于html大小,即页面根元素。

实际项目设置成 font-size: 62.5%可能会出现问题,因为chrome不支持小于12px的字体,计算小于12px的时候,会默认取12px去计算,导致chrome的em/rem计算不准确。

针对这个现象,可以尝试设置html字体为100px,body 修正为16px,这样 0.1rem 就是 10px,而body的字体仍然是默认大小,不影响未设置大小的元素的默认字体的大小。

2、使用vw、vh等后起之秀的单位,可以实现完美的流式布局(高度和文字大小都可以变得“流式”),弹性布局就不再必要了。详细可参考:视区相关单位vw, vh..简介以及可实际应用场景

// 该代码来自http://www.ghugo.com/mobile-h5-fluid-layout-for-iphone6/
  (function (doc, win) {
    // 分辨率Resolution适配
    var docEl = doc.documentElement,
      resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
      recalc = function () {
        var clientWidth = docEl.clientWidth;
        if (!clientWidth) return;
        docEl.style.fontSize = 100 * (clientWidth / 320) + 'px';
      };

    // Abort if browser does not support addEventListener
    if (!doc.addEventListener) return;
    win.addEventListener(resizeEvt, recalc, false);
    doc.addEventListener('DOMContentLoaded', recalc, false);

    // 一物理像素在不同屏幕的显示效果不一样。要根据devicePixelRatio来修改meta标签的scale,要注释上面的meta标签
    (function () {
      return;
      var dpr = scale = 1;
      var isIPhone = win.navigator.appVersion.match(/iphone/gi);
      var devicePixelRatio = win.devicePixelRatio;
      if (isIPhone) {
        // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
        if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
          dpr = 3;
        } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
          dpr = 2;
        } else {
          dpr = 1;
        }
      } else {
        // 其他设备下,仍旧使用1倍的方案
        dpr = 1;
      }
      scale = 1 / dpr;

      var metaEl = "";
      metaEl = doc.createElement('meta');
      metaEl.setAttribute('name', 'viewport');
      metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' +
        scale + ', user-scalable=no');
      if (docEl.firstElementChild) {
        docEl.firstElementChild.appendChild(metaEl);
      } else {
        var wrap = doc.createElement('div');
        wrap.appendChild(metaEl);
        doc.write(wrap.innerHTML);
      }
    })();

  })(document, window);

flex

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto

参考:
常用解决方案对比(媒体查询、百分比、rem和vw/vh)

相关文章

  • CoordinatorLayout嵌套CoordinatorLa

    页面布局:一级页面布局: 二级页面布局(即在一级页面ViewPager中的Fragment下): 这样布局的目的是...

  • 前端

    前端页面布局前端页面布局——三栏布局 - magi的博客 - CSDN博客 页面高度,位置简述前端页面内的高度、位...

  • Android自定义底部导航栏-Tabbar

    一、添加依赖 二、开始写布局 1、Tabbar布局页面 2、fragment_test.xml布局页面 这个页面就...

  • 左右条栏目 分层MVP RecyclerView

    页面的布局 主页面布局 左面的RecyclerView的布局 android:layout_width="matc...

  • Android----从相册选取图片

    导入包名 相册布局 相册条目布局 图片页面 图片条目布局 相册页面代码 图片页面代码 辅助类 MyImageSho...

  • 布局与定位

    布局 流体布局,扩展窗口时,页面中的内容随之扩展; 冻结布局,页面内容固定,不随页面的扩展而扩展;用一个 包含页面...

  • 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (

    本节主要讲解详情页的页面布局和css样式,以及从主页面到详情页面的跳转问题。 1. 详情页面的布局 页面布局的话,...

  • 店铺装修基础:如何设置页面布局

    *讲解页面布局 三种不同的页面布局 旺铺基础版 旺铺专业版 如何设置网店页面布局 总体流程:进入布局管理——添加布...

  • IM社交App02

    阅读原文 注册 登录 3.3 功能三:主页面 页面布局 主界面代码 3.4 功能四:设置页面 页面布局 退出登录 ...

  • webx笔记-页面布局

    1.页面布局 • Screen,代表页面的主体。• Layout,代表页面的布局。• Control,代表嵌在sc...

网友评论

      本文标题:页面布局

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