浏览器缩放解决方案二,分辨率控制

由于通过zoom控制局限性太大,所以改用监听缩放比例的方案,配合rem技术,也可以实现对浏览器缩放的控制

关键代码

@media all and (-webkit-min-device-pixel-ratio: 1)  {
  html {
    font-size: 14px !important;
  }
}
@media all and (-webkit-min-device-pixel-ratio: 1.09) {
  html {
    font-size: 12.7px !important;
  }
}
@media all and (-webkit-min-device-pixel-ratio: 1.24) {
  html {
    font-size: 11.2px !important;
  }
}

由于是项目后期,所以还要配合postcss-px2rem插件,将px转换成rem

vue.config.js中配置postcss-px2rem

 

module.exports = {
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          require('postcss-px2rem')({ remUnit: 16 }) // 换算的基数
        ]
      }
    }
  }
}

 

但只监听缩放,当分辨率变化时,样式还会变得无法控制,于是又监听分辨率又监听缩放,代码开始变得越来越复杂

后来发现,浏览器的放大,其实本质是分辨率的缩小,那么其他元素不变,才形成放大的效果,所以只需要监听分辨率,就可以实现对缩放效果的控制

找到常规的分辨率与缩放的组合

 

1920分辨率下
1745(110%)
1536(125%)
1280(150%)

 

1680分辨率下
1528(110%)
1344(125%)
1120(150%)

 

1440分辨率下
1310(110%)
1152(125%)
 960(150%)

只需要监听这些分辨率,即可实现对浏览器缩放的监听

去除相近的分辨率,还剩下

@media all and (max-width: 1920px) and (min-width: 1747px) {
  html {
    font-size: 16px !important;
  }
}
@media all and (max-width: 1747px) and (min-width: 1681px) {
  html {
    font-size: 14.5px !important;
  }
}
@media all and (max-width: 1681px) and (min-width: 1538px) {
  html {
    font-size: 14px !important;
  }
}
@media all and (max-width: 1537px) and (min-width: 1441px) {
  html {
    font-size: 12.8px !important;
  }
}
@media all and (max-width:1441px) and (min-width: 1346px) {
  html {
    font-size: 12px !important;
  }
}
@media all and (max-width: 1346px)  and (min-width: 1281px){
  html {
    font-size: 11.26px !important;
  }
}
@media all and (max-width: 1281px)  and (min-width: 1153px){
  html {
    font-size: 10.6px !important;
  }
}
@media all and (max-width: 1153px)  and (min-width: 961px){
  html {
    font-size: 9.6px !important;
  }
}
@media all and (max-width: 961px)  {
  html {
    font-size: 8px !important;
  }
}

  

 

缺点

postcss-px2rem插件行内式样式无法转换,自己写的还好办,引入的插件则需要单独去设置

chrome字体默认最小为12px,所以fontsize小于12,字体文件不会跟着变小了

基于这两点,这种方法对缩放效果的控制会有很多差异,如果追求100%还原,不同页面要不断的调整

 

posted @ 2021-12-01 16:23  朱依漾  阅读(834)  评论(0编辑  收藏  举报