irpas技术客

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

未知 2543

一、前言

上周四接到了一个简单的纯前端网页的项目,我用了三天时间已经开发并且部署完毕(为了实现快速简易部署,使用了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、打开设置 2、根据你在不同规格的媒体查询,设置每个屏幕尺寸“档”的初始html的font-size的值: 设置好之后直接关闭它自动保存并作为当下的计算依据。

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> 三、说明

参考链接: 菜鸟教程

欢迎大家一起讨论、学习


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #pages部署的详细过程