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

这篇具有很好参考价值的文章主要介绍了h5响应式布局、PC和移动端适配方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

春招真的是太卷了,让我怀疑春招到底在招谁(是我太菜惹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文章来源地址https://www.toymoban.com/news/detail-446322.html

到了这里,关于h5响应式布局、PC和移动端适配方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【H5移动端】常用的移动端方案合集-键盘呼起、全面屏适配、图片大小显示、300ms点击延迟、首屏优化(不定期补充~)

    这篇文章总结了我在工作中做H5遇到的一些问题,包括我是怎么解决的。可能不是当下的最优解,但是能保证解决问题。 单位适配问题可看:【H5移动端】前端H5移动端的单位适配方案集,包括给你用例子讲明白什么是1像素的问题(不定期补充~) 本文章未来也会不定期的补充

    2024年02月14日
    浏览(28)
  • vue项目pc端和移动端适配

    一、样式中根据设计稿确定缩放比例(可以设置全局或者部分页面) 二、监听窗口大小改变,设置根字体大小 created() { // 获取当前设备的宽度,设置rem的根字体大小 let width = window.innerWidth; width = width = 1200 ? 1200 : width; const htmlObj = document.getElementsByTagName(“html”)[0]; htmlObj.sty

    2023年04月09日
    浏览(28)
  • 【前端布局篇】响应式布局 Bootstrap 移动端布局

    1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局:对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局:利用html搭建结构与内容,使用CSS添加装饰 HTML5+CSS3系列课程 携程网首页-移动端 响应式布局实战之微加建

    2024年02月10日
    浏览(30)
  • uniapp制作pc端响应式布局——带开源前端【伸手党福利】【持续更新】

    实现目标:uniapp一套式制作pc端、pad端、手机端。符合国家等保二级标准。 截至目前(2023年3月2日),uniapp对于横屏的支持,仍旧过于保守,uni-admin在移动端bug不断,显示错位和兼容性很难作为主推产品进行呈现。侧边栏没有原生动画(web端可以后期使用css动画强撸,安装包

    2023年04月16日
    浏览(68)
  • 【移动端网页布局】移动端网页布局基础概念 ④ ( 物理像素 | 物理像素比 | 代码示例 - 100 像素在 PC浏览器 / 移动端浏览器 显示效果 )

    移动端 网页开发 与 PC 端开发有很多不同之处 , 在图片处理方向需要采用 二倍图 / 三倍图 / 多倍图 方式进行图片处理 ; 图片处理的方式与如下的 物理像素 与 物理像素比 概念相关 ; 物理像素 : 物理像素就是 设备 上的分辨率 , 如 1920 x 1080 像素 , 就是宽度上有 1920 个像素 , 高

    2023年04月23日
    浏览(38)
  • 前端移动端布局自适应 及移动端和PC端共用一套代码注意事项

    前端移动端布局自适应 目录 一、自适应布局概念? 二、使用步骤 1. head标签里要写适用移动端 2. 自适应单位问题 3. CSS如何写? 总结 前言 移动端布局需要适应不同大小手机平板屏幕,所以字体图片等尺寸就要做到随着屏幕大小的变化去自适应,这样会给用户很好的体验感和

    2024年02月08日
    浏览(30)
  • H5嵌入小程序适配方案

    时间过去了两个多月,2024已经到来,又老了一岁。头发也掉了好多。在这两个月时间里都忙着写页面,感觉时间过去得很快。没有以前那么轻松了。也不是遇到了什么难点技术,而是接手了一个很烂得项目。能有多烂,一个页面发起六次同一个请求得存在,不得已又要重构页

    2024年01月22日
    浏览(44)
  • 微信小程序适配问题 移动端适配方案 viewport

    iPhone X 兼容 在小程序页面开发中,涉及到需要适配 iPhone X 的地方主要有:导航栏(NavigationBar),标签栏(TabBar)以及页面底部的吸底按钮。 对于position: fixed的可交互组件,如果渲染在iPhone X的安全区域外,容易误触 Home Indicator,应当把可交互的部分都渲染到安全区域内。

    2024年02月12日
    浏览(31)
  • vue 移动端开发vw适配方案&rem适配方案 + vant框架 + unocss|tailwindcss

    写在前面的话:看了这篇文章,有些东西名词啥的不懂的,或者有疑问的推荐百度,因为写的太多真的显得很啰嗦! 目前移动端适配,在市面上主流适配方案无非就两种,rem方案和vw方案。这些方案,就可以自动适配不同移动端屏幕尺寸动态缩放。其实他的适配,你可以理解

    2024年02月12日
    浏览(28)
  • web移动端适配有哪些解决方案?每个方案的优缺点评估

    移动端适配的解决方案主要包括以下几种: rem方案 :这是最早被广泛采用和讨论的移动端适配方案。通过在页面上使用 rem 单位来控制页面元素的大小,实现在不同尺寸的设备上保持界面展示效果的一致性。这种方案的优点在于简单易用,但缺点是对安卓的适配性可能不够好

    2024年02月21日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包