[适配]关于页面适配的整理

先进行分类。有空填坑。

1.pc或h5长页面,根据浏览器宽度适配。

考虑:fixed属性的页面头部、弹窗,可能需要才用.container .top  .pup 三部分分别进行适配。

(function() {
    function fit_block() {
        var clientw = document.documentElement.clientWidth
        
        var w = 1920  // 根据素材宽度
        var scaleX = clientw / w
        
        var ele      = document.querySelector('.container').style
        ele.transformOrigin       = '0px 0px 0px'
        ele.webkitTransformOrigin = '0px 0px 0px'
        ele.transform             = 'scale(' + scaleX + ')'
        ele.webkitTransform       = 'scale(' + scaleX + ')'
        ele.display               = 'block'
          // ele.height = 【页面高度】 * scaleX + "px"

    }

    fit_block()
    window.onresize = function() {
        fit_block()
    }
})()

 

扩展1. h5长页面,根据浏览器宽度适配。在PC端时适配750px宽度展示。

考虑:fixed属性的页面头部、弹窗,可能需要才用.container .top  .pup 三部分分别进行适配。

(参考wh春节活动新闻态)

(function() {
    function fit_block() {
        var is_pc = !(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))
        var clientw = is_pc ? 750 : document.documentElement.clientWidth
        
        var w = 1080
        var scaleX = clientw / w
        
        var ele      = document.querySelector('body').style
        ele.transformOrigin       = '0px 0px 0px'
        ele.webkitTransformOrigin = '0px 0px 0px'
        ele.transform             = 'scale(' + scaleX + ')'
        ele.webkitTransform       = 'scale(' + scaleX + ')'
        ele.display               = 'block'
    }

    fit_block()
    window.onresize = function() {
        fit_block()
    }
})() 

 

1扩展. 考虑当屏幕宽度小于某个数值时,不再进行宽度占满适配。这样可以保证页面不会被缩放得太小

(参考ddz首页pc版)

 

2. h5单屏,根据浏览器的宽度进行居中适配。

(参考wbcz测试资格查询页

不考虑最小宽度:

// 原页面设计稿 270 * 480
(function flexible (window, document) { function fit_box() { var ele = document.querySelector('.container').style var pup_bg = document.querySelector('#pup_bg').style var clientWidth = document.documentElement.clientWidth var clientHeight = document.documentElement.clientHeight var w = 270 var scaleX = ((document.documentElement.clientWidth < w ? w : document.documentElement.clientWidth) / w) var h = document.documentElement.clientHeight / scaleX ele.height = 270 * scaleX + 'px' ele.transformOrigin = '0px 0px 0px' ele.webkitTransformOrigin = '0px 0px 0px' ele.transform = 'scale(' + scaleX + ')' ele.webkitTransform = 'scale(' + scaleX + ')' ele.display = 'block' pup_bg.height = ((clientWidth / clientHeight < 0.5625) ? 480 * clientHeight / clientWidth * 0.5625 : 480)+ 'px' } fit_box() window.onresize = function () { fit_box() } }(window, document))

考虑最小宽度。(待补充)

(参考ddz春节剪纸活动)

 

2扩展. 考虑固定宽高的盒子,浏览器进行宽度或高度适配,总之要在一屏幕内完全显示。

  类似需求可能在图片放入某个框的时候常常会出现。

(暂无参考)

 

3. 判断屏幕是横屏或者竖屏,针对不同屏幕进行旋转适配。(之前单开的链接在:https://www.cnblogs.com/ximu1009/p/16700191.html

缺陷:如果使用swiper插件,在旋转之后滑动手势无法旋转,慎用此方法!!

场景:(例如H5小游戏)

① 页面内容在一个屏幕内展示完,不上下左右滑动。

② 页面内容左右居中/上下居中。

③ 页面原本内容为竖屏,需要在横屏浏览器中强制左旋90°。

// 横竖屏适配
var vertical = document.documentElement.clientHeight >= document.documentElement.clientWidth
if(!vertical){
    var wth = document.documentElement.clientWidth / document.documentElement.clientHeight
    $('body').css({ 
        'transform': 'rotate(-90deg)  scale(' + wth +') ', 
        'transform-origin': 'center center',
    })
} else {
    $('body').css({
        'transform': '', 
        'transform-origin': '',
    })
}

 

4.设计稿为H5单页,PC强制居中展示,H5采用高度适配

(参考xytx测试资格查询页)

不考虑最小高度:

(function flexible (window, document) {
    function fit_box() {
        var ele          = document.querySelector('.container').style
        var pup_bg       = document.querySelector('#pup_bg').style
        var clientWidth  = document.documentElement.clientWidth
        var clientHeight = document.documentElement.clientHeight
        var h            = 480
        var scaleX       = document.documentElement.clientHeight / h
        var left         = (document.documentElement.clientWidth - 270 * scaleX) / 2

        ele.transformOrigin       = '0px 0px 0px'
        ele.webkitTransformOrigin = '0px 0px 0px'
        ele.transform             = 'scale(' + scaleX + ')'
        ele.webkitTransform       = 'scale(' + scaleX + ')'
        ele.display               = 'block'
        ele.left                  = left + 'px'
    }

    fit_box()
    window.onresize = function() {
        fit_box()
    }
}(window, document))

 

 5. vue2 解决1920*1080 125%放缩笔记本屏幕大小适配问题。

https://blog.csdn.net/weixin_48200589/article/details/125381459

但不好用,现在很多机型是16:10的屏幕。

 

 

posted @ 2023-01-18 15:32  夕苜19  阅读(35)  评论(0编辑  收藏  举报