美文网首页
页面兼容性布局

页面兼容性布局

作者: yyyyyy96 | 来源:发表于2018-12-30 17:47 被阅读0次

    项目在前端布局时需要考虑页面兼容性的需求,特别是微信端和侧墙要适应不同机型的尺寸和分辨率,尽量保证元素布局不混乱、大小不扭曲变形。

    微信端独有的

    微信提供了rpx的相对尺寸进行屏幕宽度的自适应,不论是布局还是设置元素的宽度均十分便捷。但这种方式本质上和下面要说的百分比布局没有本质区别,只不过不需要手动指定从最外层(从<html>开始)到最内层所有嵌套标签的宽高。

    比较优雅的方式

    我认为的比较优雅的布局,是指仅需要静态设置元素的样式即可完成自适应布局。当页面大小变化时,不需要通过js动态改变元素的样式。最省心的方式就是采用百分比设置元素的定位和大小。

    在我们的项目中,大致有如下几项布局需求:

    1. 所有元素均居中对齐
      居中对齐也有很多实现方式,譬如可以指定元素的position、margin等属性值,一种一劳永逸的方式则是使用flex布局。flex作为一种响应式的布局,能随着页面的变化自动调整元素的定位。
    selector{
      display: flex;
      flex-direction: row;
      align-items: center; /*交叉轴对齐方式*/
      justify-content:center; /*主轴对齐方式*/
    }
    

    为父级元素加上以上四行代码可以解决99%的垂直&水平居中对齐问题。

    1. 页面背景(即最外层组件)正好适应整个页面大小,不希望出现超出页面的部分;
    selector{
    /*绝对定位*/
    /*也可以用fixed,即相对屏幕固定,但不适应微信端下拉刷新页面的功能需求*/
     position:absolute;
    /*百分比布局*/
     width:100%;
     height: 100%;
    }
    
    
    1. 部分元素宽度/高度变占页面固定比例;
      所有外层元素的宽高均指定好后(这个很重要!!),采用百分比设置宽或高即可。
    2. 部分元素宽度/高度占满页面剩余空间。
    selector{
    /*绝对定位*/
     position:absolute;
    top: 200px;
    bottom:0px;
    }
    /
    

    若之前有元素的高度采用像素值,则其占据页面高度的比例就无法确定,导致后续元素也无法使用百分比布局。但如果需要只是简单的占满剩余空间,根据前面元素的总高度指定top值,再将bottom值设为0即可。

    比较不优雅的方式

    某些情况下,不可避免的需要用像素值指定宽高,例如需要元素的宽度自适应而长宽比不变,虽然宽度可以用百分比指定,但高度则需要js获取页面高度再通过相应的运算进行指定。
    微信端则比较好解决,毕竟整个页面的长宽不会改变,只需要在页面最初加载时获取宽高,之后每次渲染都依据相同的属性值即可。但PC端的页面大小会随时变化,只能通过js定时获取页面宽高并不断地重新渲染各元素解决。

    相关文章

      网友评论

          本文标题:页面兼容性布局

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