lib-flexible和postcss-px2rem PC端和移动端的适配 (PC端的设计稿1920,移动端的设计稿750)

2024-02-28 01:20

本文主要是介绍lib-flexible和postcss-px2rem PC端和移动端的适配 (PC端的设计稿1920,移动端的设计稿750),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前ui 给pc端的设计稿是 1920* 1080 ,并没有提过要写移动端网站,所以之前一直做的是pc端。

1,安装 flexible和 postcss-px2rem(命令行安装)

npm install lib-flexible --savenpm install postcss-px2rem --save

vue.confit.js的文件中:

在node_modules 找到 lib-flexible文件下的flexible.js,然后找到refreshRem函数,将其改为:

那么pc端的适配就好了

后来又在这的基础上要加入移动端的适配,并且UI给的移动端设计图是750,额鹅鹅鹅,而pc端的是1920,在网上查了,好像没找到 怎么同事解决给1920的设计稿和750的设计稿,最终自己摸索了会,将lib-flexible文件下的flexible.js,然后找到refreshRem函数改为:

    function refreshRem(){

        console.log('将根据已有的meta标签来设置缩放比例',win)

        var width = docEl.getBoundingClientRect().width;

        if (width / dpr > 540) {

            width = width * dpr;

        }

        

        let flag = win.navigator.userAgent.match(

            /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i

        );

        if(flag === null) {

            console.log("pc端");

            var rem = width / 10;

           

        }else {

            console.log("移动端");

            var rem = (width / 10)*2.56;   // 移动端的2.56 是 我用  192 /75 = 2.56  然后移动端的尺寸就可以1:1 进行

            

        }

        docEl.style.fontSize = rem + 'px';

        flexible.rem = win.rem = rem;

    }

《----------------------------------------------------------》

然后 首页:

<template>

  <div class="home" >

    <div v-if="type" class="homePC">

      <div class="headerNav" v-if="type">

        <div class="logo">

          <img src="@/assets/images/home/logo.png" alt="">

        </div>

        <ul class="titleNav">

          <router-link :to=item.routerName tag="li" v-for="(item,index) in  navList" :key="index" class="title">{{item.name}}</router-link>

        </ul>

    </div>

    <div>

      <router-view></router-view>

    </div>

    <div :class="$route.path==='/developmentCenter' || $route.path==='/developmentCloud'?'footer footDevelopment':$route.path==='/index'?'footer footIndex':'footer'" >

      <div><a href="#" target="_blank" class="beian">陕ICP备*****号-1</a></div>

      <div class="titleFoot">陕西****科技有限公司</div>

    </div>

    </div>

    <div v-if="!type" class="homeMobile">

      <div class="mobileHeaderNav">

        <div class="mobileNav">

          <img src="@/assets/mobileImages/home/icoNav.png" alt="" @click="mobileNavClick">

        </div>

        <div class="mobileLogo">

          <img src="@/assets/mobileImages/home/logo.png" alt="">

        </div>

        <div class="mobileNavContent" v-show="navHalfMobile" @click="navLiClick">

          <ul class="mobileUl" >

            <router-link tag="li" v-for="(item,i) in navListMobile" :key="i" :to=item.routerName @click="navLiClick">

              <div class="mobileIclPadding">

                <img :src="item.ico" alt="" :class="'mobileImg'+i">

              </div>

              <div class="mobileTitle">{{item.title}}</div>

            </router-link>

          </ul>

        </div>

      </div>

      <div>

      <router-view></router-view>

    </div>

    <!-- class="mbileFooter" -->

    <div  :class="$route.path==='/index' || $route.path==='/mobileDevelopment' || $route.path==='/mobileDevelopmentCloud'?'mbileFooter mbileFooterBack':'mbileFooter'">

      <a href="#" target="_blank" class="beianMobile">陕ICP备*****号-1</a>

      <div class="companyMobile">陕西****科技有限公司</div>

    </div>

      

    </div>

  </div>

  

</template>

<script>

export default {

  name: 'Home',

   data () {

    return {

        // value1: 0,

        navList:[

          {

            name:'首页',

            routerName:'index'

          },

          {

            name:'研发中心',

             routerName:'developmentCenter'

          },

          {

            name:'国科学院',

             routerName:'academySciences'

          },

          {

            name:'产品中心',

             routerName:'productCenter'

          },

          {

            name:'开发云',

             routerName:'developmentCloud'

          },

          {

            name:'专家团队',

             routerName:'expertTeam'

          },

          {

            name:'联系我们',

            routerName:'contactUs'

          }

        ],

         navListMobileRouter:[

          {

            name:'首页',

            routerName:'index'

          },

          {

            name:'研发中心',

             routerName:'mobileDevelopment'

          },

          {

            name:'国科学院',

             routerName:'academySciences'

          },

          {

            name:'产品中心',

             routerName:'productCenter'

          },

          {

            name:'开发云',

             routerName:'developmentCloud'

          },

          {

            name:'专家团队',

             routerName:'expertTeam'

          },

          {

            name:'联系我们',

             routerName:'contactUs'

          }

        ],

        navListMobile:[

           {

            ico:require('@/assets/mobileImages/home/homeIco.png'),

            title:'首页',

             routerName:'index'

          },{

            ico:require('@/assets/mobileImages/home/developmentIco.png'),

            title:'研发中心',

            routerName:'mobileDevelopment'

          }, {

            ico:require('@/assets/mobileImages/home/academyIco.png'),

            title:'国科学院',

            routerName:'mobileAcademySciencest'

          }, {

            ico:require('@/assets/mobileImages/home/developmentIco.png'),

            title:'产品中心',

            routerName:'mobileProductCenter'

          }, {

            ico:require('@/assets/mobileImages/home/cloudIco.png'),

            title:'开发云',

            routerName:'mobileDevelopmentCloud'

          }, {

            ico:require('@/assets/mobileImages/home/experIco.png'),

            title:'专家团队',

            routerName:'mobileexpertTeam'

          }, {

            ico:require('@/assets/mobileImages/home/contactIco.png'),

            title:'联系我们',

            routerName:'contactUs'

          }

        ],

        type:true,

        navHalfMobile:false

    }

  },

  created() {

    console.log(navigator.userAgent)

        let flag = navigator.userAgent.match(

        /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i

    );

    console.log('66666666666666666',flag);

    if(flag === null) {

        console.log("pc端");

        this.type = true

       

    }else {

        console.log("移动端");

        this.type = false

        

    }

  },

  methods:{

    mobileNavClick() {

      this.navHalfMobile = true

    },

    navLiClick() {

      setTimeout(() => {

        this.navHalfMobile = false

      },500)

      

    }

  }

}

</script>

由于首页路面涉及到重定向,所以首页的pc端和移动端我写在了一个页面,剩下的页面可以和pc端分开写

这篇关于lib-flexible和postcss-px2rem PC端和移动端的适配 (PC端的设计稿1920,移动端的设计稿750)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/754094

相关文章

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm