文章详情

很多前端重构工程师在进行网页还原的时候在自适应这一块会面临一些困扰,不能兼容其他屏幕的情况出现,今天分享一些代码希望可以帮助到大家。

这里以宽度为1920像素的设计稿为例,想要一比一还原设计稿达到适配效果需要使用到的JS代码。

PC+移动双端页面自适应屏幕缩放适配JS代码
// 屏幕自适应
var adaptViewport = (function () {
  function detectIE() {
    var ua = window.navigator.userAgent;
    var msie = ua.match(/MSIE (\d+)/g);
    if (msie != null) {
      return parseInt(msie[0].match(/\d+/g)[0]);
    }
    // IE 11
    var trident = ua.indexOf('Trident/');
    if (trident > 0) {
      var rv = ua.indexOf('rv:');
      return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
    }
    return false;
  }
  var minWidth = 1400; // 最小宽度
  var designWidth = 1920; // 设计稿宽度
  var isFirefox = navigator.userAgent.indexOf("Firefox") != -1
  var ieVersion = detectIE();
  var zoom = 1;

  function resize() {
    // doc.clientWidth不包含滚动栏宽度
    var ww = document.documentElement.clientWidth || window.innerWidth;
    var realWid = Math.max(ww, minWidth);
    zoom = realWid / designWidth;
    if (ieVersion && ieVersion < 9) {
      return;
    }
    // firefox不支持zoom. ie9,10,11 zoom表现奇怪
    if (isFirefox || ieVersion >= 9) {
      if (zoom !== 1) {
        if (!$('.wrap').parent().hasClass('wrap-scale')) {
          $('.wrap').wrap('<div class="wrap-scale"></div>')
          $('.wrap-scale').css('position', 'relative');
          $('.wrap').data('originHeight', $('.wrap').outerHeight())
        }
        var transformOrigin = '0% 0%';
        $('.wrap').css({
          'width': designWidth,
          'transform': 'scale(' + zoom + ')',
          'transform-origin': transformOrigin,
          'margin-left': 0
        })
        $('.right-nav').css({
          'transform': 'scale(' + zoom + ')',
          'transform-origin': '100% 50%'
        });
        $('.acttop').css({
          'width': designWidth,
          'transform': 'scale(' + zoom + ')',
          'transform-origin': '100% 50%'
        });
        $('.wrap-scale').css({
          'width': (realWid > minWidth ? 'auto' : minWidth),
          'height': $('.wrap').data('originHeight') * zoom,
          'overflow': 'hidden'
        })
      }
    } else {
      $('.wrap').css({
        'width': designWidth,
        'zoom': zoom
      });
      $('.right-nav').css('zoom', zoom)
      $('.acttop').css({
        'width': designWidth,
        'zoom': zoom
      })
    }
  }
  resize();
  window.onresize = resize;
  // 当切换tab等情形导致.wrap高度改变时,调用此函数。
  function resizeWrapScale() {
    $('.wrap-scale').css({
      'height': $('.wrap').outerHeight() * zoom
    })
  }
  return {
    zoom: zoom,
    resizeWrapScale: resizeWrapScale
  }
})();

微信扫一扫

支付宝扫一扫

版权:

转载请注明出处:https://www.027xm.com/143.html

上一篇:

已经没有上一篇了!

相关推荐
IDEA 2024.3.3 最新破解版安装教程(附激活码,至2099年)
废话不多说,先上 IDEA 2024.3.3 版本破解成功的截图,如下,可以看到已经成功破解到 2099 年辣,舒服! 卸载老版本 IDEA…
701 免费
迅睿CMS表单调用-外部页面调用网站表单/全局表单提交项目
默认情况下表单提交页面是单独的一个页面,而在实际项目中有时候需要把表单提交页面放到首页、放到指定的栏目页、放到会员中心,都有可能性。 本章节…
5
PC+移动双端页面自适应屏幕缩放适配JS代码
很多前端重构工程师在进行网页还原的时候在自适应这一块会面临一些困扰,不能兼容其他屏幕的情况出现,今天分享一些代码希望可以帮助到大家。 这里以…
5
Memcached与Redis的区别:WordPress网站加速优化篇
Memcached和Redis都是一种内存数据结构存储,它们可以作为数据库、缓存或消息队列使用。它们以高性能和高可用性的特点,成为WordP…
WordPress建站云服务器怎么选择?
如果您想搭建一个wordpress博客、商城、品牌官网或者web网站,选择一个稳定的云服务器是非常有必要的。那么如何选择一台适合WordPr…
WordPress主题开发教程手册 — 主题开发函数
Functions.php可以被经典主题、区块主题和子主题使用。 functions.php文件是您向WordPress主题添加特定功能的地…
发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服电话

400-859-8780

客服邮箱

service@027xm.com

扫描二维码

关注微信公众号