如何实现响应式(自适应)网页

2023-11-02

什么是响应式布局

响应式网页(Responsive Web,RW)又称自适应网页,是一种网页设计布局,可以根据访问媒体不同(网页宽高变化)而变化样式,防止网页布局因访问环境而造成布局混乱,影响用户体验。

为什么会造成布局混乱

移动设备(手机等)的分辨率相较于电脑通常会更小,手机浏览器会根据设定调整自己的网页可视区域,通常为980px(根据设备设置而定)。并且,在移动设备上px可能与电脑上的度量不同,这是由于技术的发展,手机的屏幕像素密度越来越高,造成一个像素点可能对应两个物理像素。

想要实现响应式网页,需要对整个网页布局进行分析,在此基础上,再考虑以下方法。

META标签

<meta content="width=device-width, initial-scale=1.0" name="viewport">

这句话可以说写网页必备,首先我们来理解一下这句话的作用。

meta是一个辅助性标签,可以提供网页元信息,方便SEO,对于响应式布局也有帮助。

viewport是设备能够显示网页的那块区域,根据设备的不同,其viewport可能也不相同。viewport有三种,分别是layout、visual和ideal,这三种具体讲解请自行搜索。移动设备默认是layout viewport,但在开发过程中,我们需要ideal viewport。width=device-width正是将宽设置成ideal viewport的状态,initial-scale是设置页面初始缩放值,viewport总共有六个属性:

属性值 说明
width 设置viewport宽度
height 设置viewport高度
initial-scale 设置页面初始缩放值
minimum-scale 允许用户最小缩放值
maximum-scale 允许用户最大缩放值
user-scalable 是否允许用户缩放

相对度量

CSS3推出了许多相对度量单位,相对度量单位是指参考某一元素变化度量,也就是说其并不是一直不变的。

  1. %: 字面意思百分号,根据父元素而变化。如 width:100% 宽度即父元素大小
  2. vw: 视图宽度,根据视图而变化。如width:100vw 宽度即网页视图宽度
  3. vh: 视图高度,根据视图而变化。如height: 100vh 高度即网页视图高度
  4. em: 根据当前对象文本大小而变化(仅用于字体)
  5. rem: 根据根元素文本大小而变化(仅用于字体)

对于一些需要跟随页面变化的元素,应该使用相对度量单位。比如input框

input[type=text] {
	width: calc(100% - 50px) // 跟随父元素宽度且少50px
}
// 关于calc函数可以看 https://blog.csdn.net/qq_30258721/article/details/126273893

FLEX布局

flex布局也是制作响应式网页重要的一环。flex布局可以用来为盒状模型提供最大的灵活性,最大程度上利用网页空间。

当网页宽高变化时,flex布局可以将盒子重新排列,实现网页布局整齐。

宽高设置

对于一些宽高无法固定的盒模型,宽高不能设置成定值(height:100px), 而应该通过百分比,vh或者其他相对度量值。
百分比和vh用的比较多,对于页面的主体的部分通常写:

width: 100%
// width和height有很多写法,auto、100%、100vw(width)和100vh(height)等等,每种对应不同情况,比如100vh表明盒子高为一视图页面高

注意:不应该所有盒子都设置对象度量。大盒子设置width:100%时,应该思考其内部小盒子需不需要也设置相对度量,如果都设置成width:100%,那么页面变化时,几个盒子都跟着变化,造成样式混乱。一般应该大盒子设置相对,内部小盒子设置定值,这样当大盒子随着页面变化后,如果宽度不够容下所有小盒子,会将其挤到下一行。

媒体查询

@media是CSS3推出的一个新特性,它能识别各种设备,通常类型值设为screen。通过@media可以定义不同宽高下的样式,比如当页面宽度小于800px之间时主体部分背景色变为红色

@media screen and (max-width: 800px) {
    main {
        background-color: red;
    }
}

替换元素

对于一些无法直接通过改变样式的元素,可进行替换,如导航栏,页面缩小时,导航栏项不可以减少,字体大小改变也会导致无法看清等问题,这些将其替换成icon图标,点击即出现导航栏。
在这里插入图片描述
在这里插入图片描述

响应式框架

当然,现在前端框架已经发展的十分成熟,非必要不需要从零开始布局。推荐几个响应式前端框架:

  1. Bootstrap
    自 Bootstrap 3起,Bootstrap就支持响应式布局,且移动设备优先。bootstrap开源且上手简单,十分推荐

  2. Foundation
    Foundation也是相当成熟的前端框架,不仅支持响应式布局,也提供多种web UI组件

  3. Ulkit
    Ulkit是一个轻量级、模块化的前端框架,帮助开发出快速、强大的Web接口,它有着全面的HTML、CSS和JS集合,易于使用和扩展。

  4. Groundwork

  5. Base

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现响应式(自适应)网页 的相关文章

随机推荐

  • 无时无刻不蹭网,使用6款WIFI检测工具

    我们生活在一个移动的世界 如果你有一部笔记本电脑 那就意味着你肯定会经常通过Wi Fi联入互联网 你不但会在路途中的某个地方 比如咖啡馆 机场或者酒店里使用Wi Fi 而且在家中也会使用到它 你甚至有可能在办公室使用的也是无线网络 那么这里
  • typescript中,对象使用动态变量作为key获取相应的值时类型声明

    对于一个obejct对象 我们常用获取某个值的方法有两种 点 运算符 obj name 其中name是这个obj的键 方括号obj name 其中name是一个变量 在js中我们这样写完全没有问题 但是如果在ts文件中 使用变量作为方括号中
  • 4G发展成果丰硕 加速布局迎接5G到来

    4G取得显著成效 近五年 我国移动通信取得飞跃式发展 在4G标准 技术 市场 应用等各个方面都取得显著成效 回顾我国移动通信网络技术发展 已经走过了第一代模拟技术 1G 第二代数字技术 2G 和第三代宽带数字技术 3G 目前正处在第四代移动
  • python中compare_python中sort()方法的cmp参数

    python基础编程 里有讲到一段高级排序 如果希望元素能按照特定的方式进行排序 而不是sort函数默认的方式 即根据python的默认排序规则按升序排列元素 第5章内对此进行讲解 那么可以通过compare x y 的形式自定义比较函数
  • node简易命令行开发

    一 在学习的过程中 好奇npm run build 到底做了什么 打包 build对应的命令行为 cross env NODE ENV dev vue cli service build 1 修改环境变量NODE ENV为dev 2 执行v
  • python xlrd 2.0.1版本不支持.xlsx格式

    python xlrd库的新版本2 0 1版本移除了对 xlsx格式的支持 只支持 xls格式 报错信息如下 File Library Frameworks Python framework Versions 3 7 lib python3
  • jest单元测试-基础

    jest单元测试 基础 一 认识前端自动化 随着前端的发展 前端设计的领域已经越来越多 也越来越复杂 这就对我们前端工程化能力 提出了更高的要求 好的前端工程化一般包括三个大的方面 前端自动化测试 前提条件 高质量的代码设计 高质量的代码实
  • 常量与指针间的转换 warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

    最近重新学习C语言 在指针数组处遇到了点问题 代码如下 include
  • UNCTF2022-公开赛-MISC-部分WriteUp

    1 magic word 西南科技大学 magic word docx后缀改成zip 然后解压 打开 word document xml 复制这一段 必须向上图那样复制 不然末尾一段零宽字符会没复制上 零宽网站 https www mzy0
  • JavaScript 数据类型——八种数据类型总结

    JavaScript 目前包含八种数据类型 其中可以分成两大类 基本数据类型 原始值 Number 数值 包含NaN String 字符串 Boolean 布尔值 Undefined 未定义 未初始化 Null 空对象 Symbol 独一无
  • 远程桌面的端口设置和原理探究

    在上一篇文章外网远程控制局域网内主机 路由器端口转发设置 文章中我提到了远程连接的基本原理 本文来验证一下 并且看看怎么来修改远程连接的默认端口 首先 在被控机上开启 允许远程连接 那么内部远程控制程序就监听了3389端口 主控端发起远程连
  • HashMap浅析

    1 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现 此实现提供所有可选的映射操作 并允许使用null值和null键 此类不保证映射的顺序 特别是它不保证该顺序恒久不变 2 HashMap的数据结构 在java编程语言
  • 测试工具学习——Robot Framework

    Robot Framework作为框架平台 可以加载各种Library 通过测试套件 资源文件集成起来 然后可以针对被测试细听进行不同角度的测试 Windows 一 使用主要流程 创建工程和测试套 File gt New Project N
  • vue 路由跳转 外部链接

    1 vuejs 是单页面应用 应用内的跳转 可以用router link标签 跳转demo
  • 微服务Dubbo和SpringCloud架构设计、优劣 势⽐较

    本 主要围绕微服务的技术选型 通讯协议 服务依赖模式 开始模式 运 模式等 来综合 较 Dubbo和Spring Cloud 这2种开发框架 架构师可以根据公司的技术实 并结合项 的特点来选择某个 合适的微服务架构平台 以此稳妥地实施项 的
  • 解决webstorm中ts自动编译

    解决webstorm中ts自动编译 我们可以首先写一段ts代码 然后在终端执行tsc helloworld ts来编译为js代码 下面运行代码 使用node helloworld js来运行 但是当我们改变ts内容时 js内容不会对应改变
  • python中的科学计数法表示

    在python中如何使用科学计数法对我们想要定义的变量进行赋值呢 请看以下代码 coding utf 8 author 15025 time 2021 8 2 14 43 software PyCharm Description Scien
  • Linux开发工具之项目自动化构建工具-make/Makefile

    make是一条命令 makefile是一个文件 两个搭配使用 完成项目自动化构建 makefile带来的好处就是自动化编译 一旦写好 只需要一个make命令 整个工程完全自动编 译 极大的提高了软件开发的效率 下面来看一个实例 在Makef
  • mysql 优化之索引视图和索引为何未调用

    如何判断语句运行速度的快慢呢 执行计划 在mysql中我们可以通过explain显示了mysql如何使用索引来处理select语句以及连接表 可以帮助选择更好的索引和写出更优化的查询语句 我们在查询mysql语句时经常会出现查询速度极其缓慢
  • 如何实现响应式(自适应)网页

    响应式网页 什么是响应式布局 为什么会造成布局混乱 META标签 相对度量 FLEX布局 宽高设置 媒体查询 替换元素 响应式框架 什么是响应式布局 响应式网页 Responsive Web RW 又称自适应网页 是一种网页设计布局 可以根