首页 > 其他分享 >vue使用rem (手机端PC端通用)

vue使用rem (手机端PC端通用)

时间:2022-08-25 10:38:02浏览次数:49  
标签:vue whdef PC 宽度 bodyWidth rem var document

只有PC端时 main.js

 

new Vue({
  router,
  store,
  render: h => h(App),
  created(){
    // 实例创建完成后被立即调用rem换算方法,解决内容闪现问题
        setRemPc();
        window.addEventListener('resize', setRemPc);//浏览器窗口大小改变时调用rem换算方法
    },
}).$mount('#app');

//rem计算
function setRemPc() {
  var whdef = 100/1920;// 表示1920的设计图,使用100PX的默认值
  var bodyWidth = document.body.clientWidth;// 当前窗口的宽度
  var rem = bodyWidth * whdef;// 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
  document.getElementsByTagName('html')[0].style.fontSize = rem + 'px';
}
//window.addEventListener('load', setRemPc);

 

只有手机端时 main.js

 

new Vue({
  router,
  store,
  render: h => h(App),
  created(){
    // 实例创建完成后被立即调用rem换算方法,解决内容闪现问题
        setRem();
        window.addEventListener('resize', setRem);//浏览器窗口大小改变时调用rem换算方法
    },
}).$mount('#app');

//rem换算 
 function setRem() {
    var whdef = 100 / 750; // 表示750的设计图,使用100PX的默认值
    var bodyWidth = document.body.clientWidth; // 当前窗口的宽度
    var rem = bodyWidth * whdef; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
    document.getElementsByTagName('html')[0].style.fontSize = rem + 'px';
  }

 

pc端跟手机端在同一个项目时

 

new Vue({
    router,
    store,
    render: h => h(App),
    created(){
    // 实例创建完成后被立即调用rem换算方法,解决内容闪现问题
        
        if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
           setRem();
           window.addEventListener('resize', setRem);//浏览器窗口大小改变时调用rem换算方法
          }
          else{
             setRemPC()  
             window.addEventListener('resize', setRemPc);//浏览器窗口大小改变时调用rem换算方法
          }
    },
}).$mount('#app');
   
 // 手机端
    function setRem() {
      var whdef = 100 / 750; // 表示750的设计图,使用100PX的默认值
      var bodyWidth = document.body.clientWidth; // 当前窗口的宽度
      var rem = bodyWidth * whdef; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
      document.getElementsByTagName('html')[0].style.fontSize = rem + 'px';
    }
   //pc端
    function setRemPC() {
      var whdef = 100 / 1920; // 表示1920的设计图,使用100PX的默认值
      var bodyWidth = document.body.clientWidth; // 当前窗口的宽度
      var rem = bodyWidth * whdef; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
      document.getElementsByTagName('html')[0].style.fontSize = rem + 'px';
    }

 

页面使用(index.vue)

 

  <!-- 普通写法 -->

  <!--html:-->

          <div class="title">签到成功</div>

<!--css:-->

    .title {

    font-size: 16px;

    font-family: PingFangSC-Medium, PingFang SC;

    font-weight: bold;

    color: #242e42;

    margin-bottom: 10px;

  }

  <!-- 转换rem后的写法 -->

  <!--html:-->

          <div class="title">签到成功</div>

<!--css:-->

    .title {

    font-size: 0.16rem;//16px写成0.16rem是因为我们在main.js设置了1920的设计图,使用了100px的默认值,所以我们在转换的时候直接用设计图的px值除以100就是现在的rem值(例:16px/100=0.16rem)

    font-family: PingFangSC-Medium, PingFang SC;

    font-weight: bold;

    color: #242e42;

    margin-bottom: 0.1rem;

  }

 

标签:vue,whdef,PC,宽度,bodyWidth,rem,var,document
From: https://www.cnblogs.com/lengfang/p/16623416.html

相关文章

  • VUE 基础知识总结
    VUE的介绍VUE的导包<!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title><!--开发环境版本--><scriptsrc="https://cdn.jsdel......
  • vue文件夹上传控件选哪个好?
    ​需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步:......
  • Vue3中defineEmits、defineProps 是怎么做到不用引入就能直接用的
      最近正在将一个使用单文件组件的OptionsAPI的Vue2JavaScript项目升级为Vue3typescript,并利用CompositionAPI的优势。比如,下面这种 选项API 方式:......
  • Vue 鼠标选中文本
    Vue鼠标选中文本@mouseup结合window.getSelection().toString()鼠标选中文本**@mouseup**结合window.getSelection().toString()<h2@mouseup="handleMouseSele......
  • 【原创】只用Asp.NET Core Web API与Vue 3.0搭建前后分离项目
    特地记录一下,网上的教程写的稀里糊涂的,整得我都心塞塞的,其实实现的过程蛮简单的问题是这样的:我将Vue构建生成好的文件,放在后端wwwroot文件里面,并开启静态文件访问功能,结果......
  • vue3 基础-应用app和组件基本概念
    这篇主要对vue最基础的应用程序Application和组件Components进行一个简要和直观的认知,具体要分析的代码如下:<!DOCTYPEhtml><htmllang="en"><head><metac......
  • vue3.0 多环境配置
    vue3.0多环境配置最常见的多环境配置,就是开发环境配置,和生产环境配置(也就是上线的配置),很多情况下我们开发环境下的域名,和一些配置项,和我们生产模式下的不同,这个时候......
  • 【TPC附加赛YSTG】星坠比赛题解
    零、写在前面比赛地址本人比较菜,在这场接近提高组的模拟赛中获得了\(30+100+30+50=210\)的烂分事实上只要把暴力打足成绩一般就不会差但后来本人在Z......
  • vue 每次进入页面 生命周期
    生命周期1.vue有哪些生命周期函数有8个 beforeCreate created beforeMount mounted  beforeUpdate updated beforeDestroy destroyed2.一旦进入组件或......
  • vue3父子组件传值defineProps、defineEmits、defineExpose
    一、前言本文介绍父子组件传值defineProps、defineEmits、defineExpose二、语法在scriptsetup中必须使用defineProps和defineEmitsAPI来声明props和emits,它......