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

article/2025/10/24 18:24:51

响应式网页

  • 什么是响应式布局
  • 为什么会造成布局混乱
  • META标签
  • 相对度量
  • FLEX布局
  • 宽高设置
  • 媒体查询
  • 替换元素
  • 响应式框架

什么是响应式布局

响应式网页(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


http://chatgpt.dhexx.cn/article/W1UclP6j.shtml

相关文章

基于html+css的自适应展示4

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

前端自适应实现方法

一、自适应的分类 1、大屏幕显示更多内容 描述&#xff1a;即根据固定像素大小&#xff0c;显示内容根据显示器分辨率决定&#xff0c;分辨率越大&#xff0c;显示内容越多。 适应性&#xff1a;适合没有图表的页面&#xff0c;因为图表一般用作大屏展示&#xff0c;而大屏一…

html移动端布局与页面自适应布局

常见的布局方式&#xff0c;这里指的是对于width和height在不同页面情况下的改变&#xff0c; 1.比如使用px&#xff0c;就是固定其高宽&#xff0c;不论页面怎样放大缩小&#xff0c;其占领的依旧是&#xff0c;使用px固定了的高宽。 2.又比如弹性布局&#xff0c;没有设置内容…

HTML页面与浏览器自适应

先看需求&#xff0c;打开了一个页面&#xff0c;正常打开没有问题&#xff0c;但是一旦把浏览器缩小&#xff0c;各种样式都发生了变化&#xff0c;还有一些页面有空余。 碰到这种问题&#xff0c;我们首先想到的就是页面的长宽是写死的&#xff0c;比如使用weight:120px;这类…

HTML简易自适应布局

效果图&#xff1a; 第一步&#xff1a;在body下先建三个块级&#xff0c;代码如下&#xff1a; <div class"one">第1个元素中的内容</div> <div class"two">第2个元素中的内容</div> <div class"three">第3个元…

人脸识别系列(一):dlib安装和使用

Dlib是较流行的人脸识别的开源库&#xff0c;使用c编写&#xff0c;里面包含了许多的机器学习算法&#xff0c;在python中也可以使用。Dlib保持着很好的更新节奏&#xff0c;文档也写得相当清晰&#xff0c;涉及到的资源都有标明在哪里下载&#xff0c;是一个优秀的人脸识别开源…

人脸识别经典开源项目

Face Recognition 是一个基于 Python 的人脸识别库&#xff0c;它还提供了一个命令行工具&#xff0c;让你通过命令行对任意文件夹中的图像进行人脸识别操作。 该库使用 dlib 顶尖的深度学习人脸识别技术构建&#xff0c;在户外脸部检测数据库基准(Labeled Faces in the Wild …

人脸检测库libfacedetection介绍

libfacedetection是于仕琪老师放到GitHub上的二进制库&#xff0c;没有源码&#xff0c;它的License是MIT&#xff0c;可以商用。目前只提供了windows 32和64位的release动态库&#xff0c;主页为https://github.com/ShiqiYu/libfacedetection&#xff0c;采用的算法好像是Mult…

face_recognition使用:人脸识别开源python库(face_recognition是基于dlib的深度学习人脸识别库)

face_recognition实现人脸识别的思路&#xff1a; &#xff11;.给定想要识别的人脸的图片并对其进行编码&#xff08;每个人只需要一张&#xff09;&#xff0c;并将这些不同的人脸编码构建成一个列表。编码其实就是将人脸图片映射成一个&#xff11;&#xff12;&#xff18;…

C/C++ 计算机视觉库/人脸识别开源软件

计算机视觉库 OpenCV OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C 类构成&#xff0c;实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。 OpenCV 对…

libfacedetection 人脸检测库的基本使用

目录 1、源码下载 2、编译 3、构建工程 4、个人总结 运行总结&#xff1a; 与CascadeClassifier级联分类器 人脸检测 对比: 1、源码下载 直接从github上克隆项目仓库。 git clone https://github.com/ShiqiYu/libfacedetection.git2、编译 这个项目使用了cmake脚本&#…

人脸检测库libfacedetection使用方法

libfacedetection介绍 libfacedetection是一个开源的人脸检测库&#xff0c;使用C编写&#xff0c;将模型文件转化为C的静态变量&#xff0c;不依赖外部第三方库&#xff0c;使用时可以直接把源代码拷到自己的工程&#xff0c;也可以使用动态库(so)/静态库(a)的方式来调用&…

人脸识别之一图像采集及人脸库的建立

完整人脸识别系统&#xff08;源码教程环境&#xff09;&#xff1a; 开源毕业设计&#xff1a;基于嵌入式ARM-Linux的应用OpenCV和QT实现的人脸识别系统(源码论文) 完全毕设教程&#xff1a;Linux上Opencv与Qt实现的人脸识别的考勤点名/门禁系统(PC与嵌入式ARM版本) 人脸识别…

C++实现人脸识别(百度云平台)

C实现人脸识别&#xff08;百度云平台&#xff09; 项目资源下载 项目思路&#xff1a;opencv 采集人脸照片&#xff0c;将照片发送至百度智能云平台&#xff0c;百度云平台与人脸库中的数据进行比较并返回结果。 一、项目环境 Ubuntu 64 20.0.4 opencv 4.2.0 二、环境配置…

人脸识别开源库

https://blog.csdn.net/qq_42156420/article/details/83445801 以往的人脸识别主要是包括人脸图像采集、人脸识别预处理、身份确认、身份查找等技术和系统。现在人脸识别已经慢慢延伸到了ADAS中的驾驶员检测、行人跟踪、甚至到了动态物体的跟踪。由此可以看出&#xff0c;人脸…

人脸识别——基于DLib库

目录 1.人脸识别的流程 2.ResNet-34算法概述 3.测试准备 4.测试代码 5.测试结果 1.人脸识别的流程 dlib库提供高精度人脸识别算法是基于深度学习网络ResNet-34实现&#xff0c;该网络基于三百万张照片进行训练&#xff0c;最终获得了人脸检测模型。 模型下载地址&#xff…

深度学习系列18:开源人脸识别库

这年头&#xff0c;能有个开源的人脸库真是感天谢地了&#xff0c;而且可以在arm机器上使用&#xff0c;真不容易。git地址见https://github.com/ageitgey/face_recognition 1. 人脸检测 人脸检测可以选hog和cnn两种。默认用hog&#xff08;在cpu上用cnn真的很慢&#xff09;…

人脸识别库的安装

确保你的python为3.6 !!! 1.安装cmake pip install cmake2.安装boost pip install boost3.安装dlib 选择19.8.1 pip install dlib19.8.14.安装face-recognition pip install face-recognition

应用一个基于Python的开源人脸识别库,face_recognition

转载请注明出处&#xff1a;http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接&#xff1a;http://blog.csdn.net/hongbin_xu/article/details/74981819 或http://hongbin96.com/125 今天看微信时&#xff0c;看到一篇推送文章介绍了一个基于python的开源人…

开源人脸识别库,face_recognition

转载请注明出处&#xff1a;http://blog.csdn.net/hongbin_xu 或 http://hongbin96.com/ 文章链接&#xff1a;http://blog.csdn.net/hongbin_xu/article/details/74981819 或http://hongbin96.com/125 今天看微信时&#xff0c;看到一篇推送文章介绍了一个基于python的开源人…