前言

春招真的是太卷了,让我怀疑春招到底在招谁(是我太菜惹qaq)。总之还是不能松懈下来,总结一下在实习期间遇到的h5的响应式布局、PC和移动端适配方案的选择以及一些问题。本文部分文案由chat-gpt编写,例如介绍响应式布局的文案(才不是因为我懒~)。

响应式布局

响应式布局是指在不同的设备或屏幕大小下,网页能够自动适配并呈现出最佳的视觉效果和用户体验。这是一种以屏幕大小和设备特性为基础的设计方法,旨在确保网站能够在各种不同设备上都能够完美呈现。这样,无论是在大屏幕电脑、笔记本电脑、平板电脑还是手机上访问网站都能够得到良好的体验。
总结了一下,网上目前有以下几种方案:

  1. 媒体查询
  2. flex布局
  3. rem
  4. 百分比
  5. vw/vh
  6. 移动端 viewport
  7. 开发PC端和移动端两套页面

在实习的时候我做过两个项目,是使用了媒体查询和rem的,效果还可以,我会着重介绍这两个方案。

@media媒体查询

关于媒体查询的详细介绍和使用方法:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Media_Queries/Using_media_queries
讲大白话就是在符合条件的情况下,特定的样式会生效,下面是一个例子:

.test {width: 80px;height: 80px;background: #ccc;
}
@media screen and (min-width:600px){.test {width: 100px;height: 100px;}
}

这个效果就是在屏幕宽度小于600px的时候,test类中的高度和宽度都是80px,而在大于等于600px的时候变成了100px,注意这里背景颜色还是原来的灰色,样式只是叠加了,并不是直接替换掉。
看到这里你应该就懂了,电脑、平板和手机各写一套不就行了,确实如此,这么做可以满足大部分的用户。
但也有许多问题,比如写三套就够折磨人了,而且由于市面上手机、电脑和平板屏幕宽度都不太一样,写三套只能满足大部分的用户,一些用户屏幕尺寸比较刁钻的(例如尺寸在手机和平板分割点边缘的),显示的效果就不是很好了。

flex布局

flex布局是一种CSS 3的新的布局方式,可以轻松的实现弹性布局。它的主要思想是通过容器和子项之间的关系来实现网页布局。和传统的布局方式相比,flex布局有很多优点,比如可以快速设置元素的大小、位置、对齐等属性,还可以自适应不同尺寸的屏幕和设备,从而实现更好的响应式布局。

使用flex布局,需要对容器设置display: flex属性。
然后使用flex-direction属性来设置子项的方向(水平或垂直)。flex-wrap属性则用于控制子项是否可以换行,align-items属性用于控制子项在交叉轴上的对齐方式,justify-content属性用于控制子项在主轴上的对齐方式。通过这些属性的设置,我们可以轻松的实现各种布局效果,同时也可以在响应式布局中实现更好的适应性。

个人感觉flex布局比较适合一些页面比较简单的页面,在PC和移动端都有不错的体验。

rem

rem布局是一种响应式布局方式,用于将屏幕尺寸和设备DPI等因素考虑在内,让页面能够在不同的设备上自适应调整布局,在各种尺寸和密度的屏幕上呈现出更好的视觉体验,主要用在移动端上面。

rem是根据根元素(也就是html标签)上的font-size来决定的,例如默认html的font-size为16px,那么1rem就相当于16px,也就是倍数的关系。那么当屏幕宽度不一样的时候,我们就需要动态修改html上的font-size来达到设配的效果。

动态修改有几种方案,第一种是通过媒体查询来修改:

@media screen and (min-width: 320px) {html {font-size: 21.33333333px;}
}
@media screen and (min-width: 360px) {html {font-size: 24px;}
}
@media screen and (min-width: 375px) {html {font-size: 25px;}
}
@media screen and (min-width: 384px) {html {font-size: 25.6px;}
}
@media screen and (min-width: 400px) {html {font-size: 26.66666667px;}
}
@media screen and (min-width: 414px) {html {font-size: 27.6px;}
}
@media screen and (min-width: 424px) {html {font-size: 28.26666667px;}
}
@media screen and (min-width: 480px) {html {font-size: 32px;}
}
@media screen and (min-width: 540px) {html {font-size: 36px;}
}
@media screen and (min-width: 720px) {html {font-size: 48px;}
}
@media screen and (min-width: 750px) {html {font-size: 50px;}

还有一种方法是通过js来动态修改:

function remSize(){var deviceWidth = document.documentElement.clientWidth || window.innerWidth; //兼容多浏览器//限制宽度if(deviceWidth >= 750){deviceWidth = 750}if(deviceWidth <= 320){deviceWidth = 320}/*为什么除以7.5呢?是因为结果比较好计算,这也是可以根据设计稿的宽度来决定的。例如设计稿宽度是750px,那么将html的font-size设置成750/7.5=100px,那么1rem就相当于100px。当屏幕宽度不同的时候,也可以达到自适应的效果。*/document.documentElement.style.fontSize = (deviceWidth / 7.5) + 'px'document.querySelector('body').style.fontSize = 0.16 + 'rem' //相当于16px
}
remSize()
//调整窗口大小时调用函数
window.onresize = ()=> remSize()

通过以上操作,在css文件中就可以使用rem单位了,在不同的环境下也都有着不错的效果和体验。
当然自己手写的还是比较粗糙,现在比较成熟和流行的方案有淘宝的flexible.js,我们可以下载源码到自己的项目里面使用,原理和上面例子差不多,这里就不过多赘述。

如果你还是想用px,懒得自己计算rem,那也可以通过插件来解决,例如在vue项目中,通过安装postcss-px2rem这个插件,然后在vue.config.js中设置参数就可以了:

module.exports = {// 适配css: {loaderOptions: {css: {},postcss: {plugins: [require('postcss-px2rem')({remUnit: 75// 1rem为75px,意思是在750的设计稿下,把屏幕切成10份,那么一份就是75了。那么在其他宽度的设计稿下也是按照这个比率来计算,达到适配。})]}}},...}

然后在css文件中你就可以继续愉快的使用px了。
但这个方法也存在着缺陷,例如项目中某些样式是通过实时计算的px值得到的,这些值就不能换算成rem了。

百分比

就如同字面一样,用百分比来设置高度,宽度,margin和padding等属性。但缺点在于他们参考的元素并不是统一的。例如width和height会参考父元素的width和height,但margin和padding参考的是父元素的width,而圆角百分比是参考自身的,因为这些原因很可能出现问题,所以不推荐单独使用。

移动端 viewport

Viewport(视口)是一个设备独立像素的抽象概念,它是浏览器上下文中的一个可视化区域。Viewport 的大小随着设备的屏幕大小而变化,而且无法通过 JavaScript 直接获取其准确值。Viewport在响应式网页设计方案中非常重要,在移动设备上尤为关键,因为移动设备通常会有不同大小的屏幕。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
width=device-width: 自适应手机屏幕的尺寸宽度
maximum-scale: 缩放比例的最大值
minimum-scale: 缩放比例的最小值
inital-scale: 缩放的初始化
user-scalable: 用户是否能缩放页面

vw/vh

使用vw和vh适配是一种比较新的响应式布局技术,用于自适应不同尺寸屏幕和设备。vw和vh是视窗宽度和高度的相对单位,使用vw和vh单位可以使元素在不同尺寸的屏幕上自适应调整大小和位置,从而实现更好的布局效果。

使用viewport meta标签在HTML文件中设置视口:

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

使用vw单位代替固定值的宽度,例如:width: 50vw;
使用vh单位代替固定值的高度,在实际应用中可结合媒体查询等技术进行适配,例如:

height: 50vh;
@media (max-width: 768px) {height: 100vh;
}

需要注意的是,由于视窗的宽高比例可能与实际屏幕比例不一致,因此在设置元素大小和位置时,最好使用相对定位和百分比来实现。此外,vw和vh单位在一些低版本浏览器中可能无法支持,需要进行兼容处理。

开发PC端和移动端两套页面

如果PC和移动端的页面差异太大的话,也是可以选择开发两套页面的。

总结

总之,个人感觉没有完美的适配方案,只能根据自己的需求来选择,尽量达到理想的状态。也不一定只选择一种方案,可以结合多种方案来实现效果。

如果上述内容有任何问题,欢迎留言讨论。
参考链接:https://blog.csdn.net/LOxia/article/details/123723334
https://juejin.cn/post/7035540378811891749

h5响应式布局、PC和移动端适配方案相关推荐

  1. html vw布局,完美的响应式布局vw+vh+rem屏幕适配方案!

    一.前言 根据前面写的 你不知道的css单位,进行了一种响应式布局的思考. 视口布局的优点:宽度和高度全部自动适应!再加上rem布局的字体适应,可以完美解决各种屏幕适配问题! 单位可参考 : 你不知道 ...

  2. 移动端开发、各种兼容问题、响应式布局开发、移动端和PC端开发的不同

    文章目录 一.移动端开发 二.移动端开发和PC端开发的不同 1.@1 响应式布局开发 2.关于CSS3的兼容 3.关于ES6+的兼容 4.还有一些移动端独有的兼容问题: 三.DPR:屏幕像素密度比「高 ...

  3. 前端开发——移动端及响应式布局解决办法总结(适配)

    问题分析:前端开发一个产品(网站.系统.APP等)会遇到的一个难点就是适配问题,比如开发一个网站,你在一个页面开发的时候从视觉看起来没什么异样,换个不同分别率的设备,电脑,手机等,发现样式全乱了,这个 ...

  4. 响应式布局技术:App如何适配不同尺寸的设备

    作者 | 阿里巴巴文娱技术 叮东 头图 |  CSDN 下载自东方IC 背景 近年来,大屏手机.安卓Pad.iPad.折叠屏手机.车机大屏等大尺寸设备发展迅猛.尤其是2020年二季度中国平板市场出货量 ...

  5. html怎么做成响应式的,怎么用html5完成响应式布局?

    怎么用html5完成响应式布局?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 怎么用5完成响应式布局? 步骤1 建立空 ...

  6. 前端响应式布局原理与方案(详细版)

    引言 响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局.传统的开发方式是PC端开发一套,手机端再开发一套,而使用响应式布局只要开发一套就够,缺点就是CSS比较重.下面是博客网站对不同设备适配后的结 ...

  7. 移动web开发 17-1 响应式布局 bootstrap首页 框架 阿里百秀项目

    1 响应式开发原理 1.1 响应式开发原理 核心:使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 1.20媒体查询(重点) 媒体查询区间的写法 当屏幕宽度<=768 ...

  8. 响应式布局的实现方法

    响应式布局可以让网站同时适配不同分辨率的屏幕,让客户有更好的体验.一共有以下五种方法实现响应式布局: 1.百分比布局. 2.媒体查询布局. 3.rem响应式布局. 4.vw响应式布局. 5.flex弹 ...

  9. PC端、移动端响应式布局的常用解决方案对比(媒体查询、百分比、rem和vw/vh)

    PC端.移动端响应式布局的常用解决方案对比 简要介绍: 一.px 和 视口 1. 像素 2. 视口 (1) 布局视口(layout viewport) (2) 视觉视口(visual viewport ...

最新文章

  1. java gif 帧_在Java中修复动画gif的帧速率
  2. Xshell的安装和连接
  3. 我们和计算机系的老教授聊了聊TCP优化与产学矛盾
  4. linux guard什么进程,使用linux系统性能监控工具KSysguard监控远端主机介绍
  5. [html] 写html代码时,怎样才加速写代码的速度呢?你有什么方法?
  6. css3 操作动画要点
  7. 简单易用的ASP.NET UBB编辑器
  8. python for IOS,支持iPhone
  9. docker下安装mysql数据库
  10. 用yacc编写的算术运算计算器_10天学会四则运算小计算器设计之第5天
  11. GIT更新一其中一个提交版本
  12. ubuntu服务器配置php,Ubuntu下配置PHP服务器
  13. 从零开始学WEB前端——网页的骨架——HTML理论讲解
  14. 怎么在图片上直接编辑文字?建议收藏这些编辑方法
  15. 异步FIFO跨时钟域亚稳态如何解决?
  16. 食物语电脑版服务器一直维护,《食物语》进不去解决办法(图文)
  17. python中小写字母和数字用什么表示_Python – 检查数字,大写,小写字母和特殊字符的输入...
  18. Tomcat执行startup.bat出现闪退的可能原因
  19. P4 学习笔记(1)-- P4程序的构成、基本组件
  20. 【单细胞高级绘图】10.KEGG富集结果的圆圈图

热门文章

  1. 服装店收银系统小程序哪家好?
  2. TurnipBit:DIY音乐盒教程实例
  3. html把图片做正方形背景图片,完美的页面背景图片制作
  4. 智慧物流对于智慧城市有多重要?
  5. Community Day 社区嘉年华 · 深圳站|极客社区与技术大咖的双向奔赴,这一次走在技术迭代之前
  6. 分页存储存储管理方式详解
  7. 爬虫基础(案例:爬取英雄联盟全皮肤)
  8. 目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块
  9. Linux下plink软件使用方法,#软件工具#解密GWAS的利器--Plink 使用解析
  10. 财产清查概述、 全面清查的情况、局部清查的情况、财产清查的方法、财产清查结果的处理