注册
web

移动端网页开发有感


前段时间参与了一个移动端页面开发的需求,开发时明显感觉与 pc 端开发相比,移动端页面的限制会更多😭


需求结束后思考了一下究竟是哪些方面感觉不舒服?有没有对应的解决方法?以便下次开发移动端页面时能提升开发效率和体验。


移动端网页容易出现布局问题 🤦‍♂️


因为页面空间小,容易出现元素重叠、挤压、换行等样式问题,怎么在不同尺寸的设备上合适地展示页面?


解决办法:




  1. 使用 <meta name="viewport"> 标签 ✨


    这个标签想必做过移动端页面开发的同学都不陌生吧?它就是专门为移动端展示优化而增加的标签。


    先来看看它的作用是什么?


    它可以设置移动端页面宽度、缩放比例、是否允许用户缩放网页等


    它的基本属性有哪些?


    属性名含义取值范围
    width控制视口大小具体数值或 'device-width'
    initial-scale页面初始缩放比例0.0 ~ 10
    minimum-scale控制页面允许被缩小的倍数0.0 ~ 10
    maximum-scale控制页面允许被大的倍数0.0 ~ 10
    user-scalable控制是否允许放大和缩小页面yes 或 no

    需要注意的是在移动设备上默认页面宽度为 980px:




Luban_16853778753692bc31648-c60e-4ebc-845c-3bac272f7393.jpg


假如我们希望页面的视口宽度与设备宽度相同,同时初始缩放比例为 1,可以在 <head> 里增加这个的 meta 标签
<meta name="viewport" content="width=device-width,initial-scale=1">


Luban_1685377875383f6d72d0e-c360-43aa-807a-739399af01fe.jpg


这样页面的展示就符合我们的预期了




  1. 使用 vw、vh 视口单位
    vw、vh 都是视口单位


    简而言之:100vw = 视口宽度,100vh = 视口高度 (够简单吧 😅




  2. 使用 rem 相对单位




rem 在移动端开发中很重要,因为不同移动设备有着不同的尺寸和分辨率,如果我们用固定的 px 作为元素大小单位会发现不够适用


而 rem 是相对单位大小,它相对的是根元素 html 的字体大小,比如:


<html>
<head>
<style>
html {
font-size: 14px; // 这里将 html 的字体大小设为 14px
}
.content {
font-size: 2rem; // 在页面展示时将会被计算成 14 * 2 = 28px
}
</style>
</head>
<body>
<div class="content">rem</div>
</body>
</html>

所以我们可以根据设备大小动态设置根元素大小,从而成比例地更改页面里其它元素的大小


    const BASE_PAGE_WIDTH = 370
const BASE_SIZE = 16

function setRem() {
const scale = document.documentElement.clientWidth / BASE_PAGE_WIDTH
document.documentElement.style.fontSize = `${scale * BASE_SIZE}px`
}

setRem()

真机调试比较麻烦 😌


尽管可以在电脑浏览器上模拟移动设备的展示情况,但并不够真实,在开发和测试阶段仍然需要在真机上调试;


同时可能我们的测试环境需要连接 vpn 或添加特定的请求头才能访问到,所以在手机上需要通过电脑代理才能访问测试环境,从而进行开发测试;


最后,即使能在手机上访问到本地开发和测试环境的页面,你会发现当页面报错的时候你压根就看不到 log 日志输出或网络请求,这种干看着页面有问题却不能进一步排查的感觉就很难受 😖


还好有一些工具可以帮我们化解这些难题 🥳


解决办法:



  1. 首先我们可以使用 whistlecharles 来连接电脑代理,这里以 whistle 为例:

    • 电脑安装并启动 whistle
    • 手机和电脑在同一局域网下
    • 手机设置网络代理
    • 手机安装 https 证书




具体操作可以访问官方文档的详细步骤哈



Done!现在手机会通过电脑作为代理来访问网络,可以直接访问开发地址或测试环境地址啦~



  1. 然后我们可以使用 VConsole 在移动设备上进行调试,它相当于在页面上加了一个控制台,从而让我们可以查看页面上的日志输出、网络请求等,它的用法也很简单:

// 使用 npm 安装
npm install vconsole

import VConsole from 'vconsole'

new VConsole()

// 使用 CDN 安装
<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
<script>
// VConsole will be exported to `window.VConsole` by default.
const vConsole = new window.VConsole();
</script>


然后你会发现页面右下角多了一个 vConsole 的按钮:


Screenshot_2023-06-12-23-46-33-090_mark.via.jpg


我们可以测试一下打印日志:


    document.addEventListener('click', handlePageClick)

function handlePageClick() {
console.log('Daniel Yang')
}

在点击页面后再点击 vConsole 按钮会发现在展开的面板里 log 一栏已经显示出 log 的内容:


Screenshot_2023-06-12-23-48-35-778_mark.via.jpg


同时我们也可以在 VConsole 面板上查看页面元素结构、客户端存储、网络请求等,总之非常的 nice 🤗


以上就是自己对一次移动端网页开发过程中遇到的问题小小的总结,如果你在移动端开发中有遇到其它印象深刻的坑,欢迎一起留言讨论哦


006APoFYly8hesgm67dwpj30hs0hbmxv.jpeg

作者:卡布奇诺有点苦
来源:juejin.cn/post/7243757233666195515
th="50%"/>

0 个评论

要回复文章请先登录注册