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

136 篇文章 4 订阅
113 篇文章 1 订阅

只有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{
            //pc端使用
             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;

  }

更多大屏适配方法:

https://juejin.cn/post/7163932925955112996#heading-13

nuxt.js使用rem:

https://blog.csdn.net/leng0920/article/details/130850294 

html使用rem:

https://blog.csdn.net/leng0920/article/details/129786882

  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值