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

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Vue中插槽slot的使用示例详解

《Vue中插槽slot的使用示例详解》:本文主要介绍Vue中插槽slot的使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、插槽是什么二、插槽分类2.1 匿名插槽2.2 具名插槽2.3 作用域插槽三、插槽的基本使用3.1 匿名插槽