rem结合媒体查询适配的vue项目(PC端和移动端共用一套代码)

一、前言

上周四接到了一个简单的纯前端网页的项目,我用了三天时间已经开发并且部署完毕(为了实现快速简易部署,使用了gitee pages进行部署,这篇文章记录我使用gitee pages部署的详细过程)。这个展示页要求在PC端和移动端双场景使用,但是由于页面简单,为了简单起见,我采用rem结合媒体查询适配开发一套代码来实现这个场景要求。

二、实现结合媒体查询的rem适配

2-1、rem布局

2-1-1、什么是rem

rem是CSS3新增的一个相对单位(root em,根em),这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小——摘自“菜鸟教程

2-1-2、rem举例

p {font-size:14px; font-size:.875rem;}

2-1-3、rem应用

由这个单位的介绍可推出rem的使用,通过动态修改根元素html标签的font-size以px为单位的数值来实现采用了rem单位的元素的相对页面大小,具体操作请继续阅读。

2-2、媒体查询

2-2-1、什么是媒体查询

使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。——摘自“菜鸟教程”。

2-2-2、媒体查询举例

// 如果文档宽度小于 300 像素则修改背景颜色(background-color):
@media screen and (max-width: 300px) {
    body {
        background-color:lightblue;
    }
}

2-2-3、媒体查询应用

媒体查询@media有几个CSS3 多媒体类型,有需要的话,大家可以参考上个链接去了解。常用的是屏幕尺寸,即screen这个类型(如2-2-2中的例子)。
结合你的具体需求将设备的屏幕划分为几个“档次”,来实现在不同的设备屏幕尺寸下显示不同的页面效果。使用媒体查询意味着CSS的代码量有所增加。

2-3、媒体查询结合rem实现PC端和移动端共用一套代码的适配方案

2-3-1、使用VS Code进行代码开发

当然,你也可以使用别的方式计算px和rem的对应数值,我只是提供一种比较简单的方法供大家参考。
VS Code有大量好用的插件,比如这次要用的一个你设定好的单位,你写px值,这个插件帮助你计算rem值,你只需要进行选择即可。插件名是:px to rem & rpx (cssrem),使用图解:
1、打开设置
《rem结合媒体查询适配的vue项目(PC端和移动端共用一套代码)》
2、根据你在不同规格的媒体查询,设置每个屏幕尺寸“档”的初始html的font-size的值:
《rem结合媒体查询适配的vue项目(PC端和移动端共用一套代码)》
设置好之后直接关闭它自动保存并作为当下的计算依据。

2-3-2、区分PC端和移动端

因为UI给了一版PC端的设计图和一版移动端(750px)的设计图,我默认屏幕的宽度大于750px的都用PC的这版图,750px及以下是移动端。
1、使用媒体查询“识别”移动端:

<style scope>
/* PC端的CSS样式代码 */

@media screen and (max-width: 750px) {
	/* 移动端的CSS样式代码 */
}
</style>

2、动态修改当下html跟标签的font-size的js代码:

<script>
...
mounted () {
    this.rem()
    // 动态监听屏幕尺寸变化从而修改font-size
    window.onresize = () => {
      this.rem()
    }
  },
methods: {
	// 动态修改font-size
    rem () {
      const docEl = document.documentElement
      window.rem = docEl.getBoundingClientRect().width / 24
      docEl.style.fontSize = window.rem + 'px'
    }
}
...
</script>

三、说明

参考链接:
菜鸟教程

欢迎大家一起讨论、学习

    原文作者:竹石七
    原文地址: https://blog.csdn.net/BigFamer/article/details/121351615
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞