程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • HTML

  • CSS

    • CSS 基础语法
    • CSS 引入的方式
    • CSS 选择器
    • CSS 背景样式设置
    • CSS 文本和字体样式设置
    • CSS a标签样式设置
    • CSS 列表样式设置
    • CSS 表格样式设置
    • CSS 盒子模型
    • CSS 边框样式设置
    • CSS 轮廓样式设置
    • CSS margin(外边距)
    • CSS padding(填充)
    • CSS 长宽高样式设置
    • CSS 元素的隐藏与显示
    • CSS 内容溢出和滚动条
    • CSS 伪类和伪元素
    • CSS 表单样式设置
    • CSS !important 规则
    • CSS 元素的浮动和定位
    • CSS flex布局
    • CSS 布局对齐汇总
    • CSS 实战技巧
    • CSS 移动端适配
      • 1. 使用媒体查询 (Media Queries)
      • 2. 使用视口 (Viewport) 元标签
      • 3. 使用弹性布局 (Flexbox/Grid)
      • 4. 使用 rem 或 em 单位
      • 5. 使用第三方库
      • 6. 使用 viewport 单位 (vw, vh)
      • 7. 使用 PostCSS 插件
    • 移动端开发之流式布局
    • 移动端开发之 rem 布局
    • 移动端开发之响应式布局
  • JavaScript

  • 前端三剑客
  • CSS
scholar
2024-12-27
目录

CSS 移动端适配

# 移动端适配

# 1. 使用媒体查询 (Media Queries)

通过 CSS 媒体查询可以根据设备的屏幕尺寸来调整样式。以下是一个基本的示例:

/* styles.css */
body {
  font-size: 16px;
}

@media (max-width: 768px) {
  body {
    font-size: 14px;
  }
}

@media (max-width: 480px) {
  body {
    font-size: 12px;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

这种方法可以针对不同的屏幕宽度调整样式,保证在不同设备上的良好显示效果。

# 2. 使用视口 (Viewport) 元标签

在 index.html 文件中加入以下元标签,使得页面能够根据设备宽度缩放:

<!-- index.html -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
1
2

这个标签会告诉浏览器适配设备的宽度,并根据 initial-scale 设置初始缩放比例。

# 3. 使用弹性布局 (Flexbox/Grid)

使用 flexbox 或 grid 布局可以让布局更具弹性,自动适应不同尺寸的屏幕。

/* styles.css */
.container {
  display: flex;
  flex-wrap: wrap;
}

.item {
  flex: 1 1 100%;
}

@media (min-width: 600px) {
  .item {
    flex: 1 1 48%;
  }
}

@media (min-width: 1024px) {
  .item {
    flex: 1 1 30%;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

这种布局方式可以在不同屏幕尺寸下自动调整布局,使页面内容更易阅读和操作。

# 4. 使用 rem 或 em 单位

使用 rem 或 em 作为单位代替 px,可以更好地适配不同的屏幕尺寸。

/* styles.css */
html {
  font-size: 16px; /* 1rem = 16px */
}

.container {
  padding: 1rem;
}

.text {
  font-size: 1.5rem;
}

@media (max-width: 768px) {
  html {
    font-size: 14px;
  }
}

@media (max-width: 480px) {
  html {
    font-size: 12px;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

这种方式结合媒体查询可以动态调整根字体大小,从而全局调整所有元素的大小。

# 5. 使用第三方库

可以使用第三方库如 Vant (opens new window) 或 Bootstrap-Vue (opens new window) 来快速构建适配移动端的 Vue 应用。

npm install vant
1

然后在项目中引入并使用:

import Vue from 'vue';
import Vant from 'vant';
import 'vant/lib/index.css';

Vue.use(Vant);
1
2
3
4
5

这些库提供了大量现成的 UI 组件,默认就适配移动端,减少了你手动编写样式的工作量。

# 6. 使用 viewport 单位 (vw, vh)

vw 和 vh 是相对于视口宽度和高度的单位,可以用于设置元素的宽高,使其更具响应性。

.container {
  width: 100vw;
  height: 50vh;
}
1
2
3
4

这种方式可以让元素根据视口大小自动调整尺寸。

# 7. 使用 PostCSS 插件

可以通过 postcss-px-to-viewport 插件将 px 单位自动转换为 vw 单位,实现更精确的移动端适配。

步骤:

  1. 安装插件:

    npm install postcss-px-to-viewport -D
    
    1
  2. 在项目的 postcss.config.js 中配置:

    module.exports = {
      plugins: {
        'postcss-px-to-viewport': {
          viewportWidth: 375, // 设计稿的视口宽度
          viewportHeight: 667, // 设计稿的视口高度
          unitPrecision: 5, // 单位转换后保留的小数位数
          viewportUnit: 'vw', // 需要转换的视口单位
          selectorBlackList: ['.ignore', '.hairlines'], // 不需要转换的类
          minPixelValue: 1, // 小于或等于1px不转换为视口单位
          mediaQuery: false, // 允许在媒体查询中转换px
        }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
编辑此页 (opens new window)
上次更新: 2025/01/29, 14:37:13
CSS 实战技巧
移动端开发之流式布局

← CSS 实战技巧 移动端开发之流式布局→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式