PC端项目兼容手机端

背景

开发中要求实现一个页面适配pc适配mobile,没有真实操作过记录一下。

方案

GPT推荐

  • 响应式布局
    • 使用 CSS 媒体查询 (采用)
    • 使用 Tailwind CSS
  • 视口单位 + REM 适配 + (采用
  • 组件化方案(PC 和 Mobile 组件分开)
  • 动态路由区分 PC 和 Mobile

推荐建议:

  • 如果 PC 和移动端 UI 结构相似推荐方案 1(响应式布局)

  • 如果 PC 和移动端适配需要更精准的缩放方案 2(REM + px 转换)

  • 如果 PC 和 Mobile 差异较大方案 3(不同组件)

  • 如果 PC 和 Mobile 完全不同方案 4(动态路由跳转)

实现

  1. 根据视口计算REM的值, 并监听视口变化
html 复制代码
<!doctype html>
<html lang="en">
    <head>
        <!-- 这个必须要有 -->
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    </head>

    <body>
        <div id="app"></div>
    </body>
    <script>
        // 设置根元素的字体大小
        function setRootFontSize() {
            const width = window.innerWidth;
            const baseWidth = width > 768 ? 1920 : 375; // 根据ui设计图来设定,pc: 1920; mobile: 375
            const fontSize = (width / baseWidth) * 16; // 根据屏幕宽度设置字体大小,16px 是基础字体大小
            document.documentElement.style.fontSize = `${fontSize}px`; 
        }

        // 初始化
        setRootFontSize();

        // 在窗口大小变化时重新设置字体大小
        window.addEventListener('resize', setRootFontSize);
    </script>
</html>

2.pc以及mobile的设计图结构分析

一般使用 Flex 或者 Grid。我项目中使用的是Flex,但是觉得Grid更好一些。

遇到问题以及解决

  • 第三方组件样式问题

    • 问题 使用antd的组件时,在切换到移动端时,样式展示不一致问题
    • 解决 使用 css in js自定义组件样式,将一些px单位的值转为rem
    js 复制代码
    import styled from 'styled-components';
    import { Button } from 'antd'
    
    const CustomBtn = styled(Button)`
      // xxxxx
    `
相关推荐
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-05-21
前端·人工智能·经验分享·chatgpt·html
怕浪猫1 小时前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
小鹏linux2 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
前端若水3 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Bigger3 小时前
mini-cc:一个轻量级 AI 编程助手的诞生
前端·ai编程·claude
涵涵(互关)3 小时前
Naive-ui树型选择器只显示根节点
前端·ui·vue
BY组态3 小时前
Ricon组态系统最佳实践:从零开始构建物联网监控平台
前端·物联网·iot·web组态·组态
BY组态3 小时前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·物联网·iot·web组态·组态
SoaringHeart3 小时前
Flutter进阶:OverlayEntry 插入图层管理器 NOverlayZIndexManager
前端·flutter
放下华子我只抽RuiKe54 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架