微信小程序适配问题 移动端适配方案 viewport

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

iPhone X 兼容

在小程序页面开发中,涉及到需要适配 iPhone X 的地方主要有:导航栏(NavigationBar),标签栏(TabBar)以及页面底部的吸底按钮。

对于position: fixed的可交互组件,如果渲染在iPhone X的安全区域外,容易误触 Home Indicator,应当把可交互的部分都渲染到安全区域内。

建议使用以下 wxss 进行兼容

padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);  //iphoneX以上会多出一部分home indicator区域

 适配方案:

1、meta标签中设置网页在可视窗口的布局方式

<meta name="viewport" content="viewport-fit=cover">

2、fixed 完全吸底元素场景的适配

{
    padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */
    padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */
}

3、fixed 非完全吸底元素场景的适配

{
  margin-bottom: constant(safe-area-inset-bottom);
  margin-bottom: env(safe-area-inset-bottom);
}

另外一种方法:

1、在app.js的onLaunch函数内调用wx.getSystemInfo,获得手机型号(res.model),并存储为全局变量:

onLaunch: function() {
    let _self = this;
    wx.getSystemInfo({
      success: res => {
        let modelmes = res.model;
        if (modelmes.search('iPhone X') != -1) {
          _self.globalData.isIphoneX = true
        }
        wx.setStorageSync('modelmes', modelmes)
      }
    })
}

2.在所需页面的js文件的onLoad函数内从全局变量里面拿出来第一步存储的手机型号值,这里设置为isIphoneX:

onLoad: function(options) 
    let modelmes = wx.getStorageSync('modelmes');
    let isIphoneX = app.globalData.isIphoneX;
    this.setData({
      isIphoneX: isIphoneX
    })
  }

3.在所需页面的wxml里面根据手机型号是否为iPhone X 来运用三元运算符判断底部的位置就可以啦:

<view class="footer" style="margin-bottom: {{isIphoneX ? '68rpx' : '0rpx'}};"></view>

移动端适配方案 viewport

1、利用 meta 标签设置 viewport

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">

width:控制 viewport 的大小,可以指定的一个值,如 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
height:和 width 相对应,指定高度。
initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
minimum-scale:允许用户缩放到的最大比例。
maximum-scale:允许用户缩放到的最小比例。
user-scalable:用户是否可以手动缩放
上面的那段代码的意思就是:设置页面的 layout viewport 等于 ideal viewport 宽度,初始化的页面缩放比为1,用户最大/最小的缩放比都为1,页面不允许用户手动缩放。

2、利用postcss-px-to-viewport将px 自动转换为 vw

(1)安装

npm install postcss-px-to-viewport --save-dev

(2)webpack配置

module.exports = {
  plugins: {
    // ...
    'postcss-px-to-viewport': {
      // options
      unitToConvert: 'px',    // 需要转换的单位,默认为"px"
      viewportWidth: 750,     // 设计稿的视窗宽度
      unitPrecision: 5,       // 单位转换后保留的精度
      propList: ['*', '!font-size'],        // 能转化为 vw 的属性列表
      viewportUnit: 'vw',     // 希望使用的视窗单位
      fontViewportUnit: 'vw', // 字体使用的视窗单位
      selectorBlackList: [],  // 需要忽略的 CSS 选择器,不会转为视窗单位,使用原有的 px 等单位
      minPixelValue: 1,       // 设置最小的转换数值,如果为 1 的话,只有大于 1 的值会被转换
      mediaQuery: false,      // 媒体查询里的单位是否需要转换单位
      replace: true,          // 是否直接更换属性值,而不添加备用属性
      exclude: undefined,     // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
      include: /\/src\//,     // 如果设置了include,那将只有匹配到的文件才会被转换
      landscape: false,       // 是否添加根据 landscapeWidth 生成的媒体查询条件
      landscapeUnit: 'vw',    // 横屏时使用的单位
      landscapeWidth: 1125,   // 横屏时使用的视窗宽度
    },
  },
};

(3)标注不需要转换的属性

  • /* px-to-viewport-ignore-next */ —> 下一行不进行转换.
  • /* px-to-viewport-ignore */ —> 当前行不进行转换
/* example input: */
.class {
  /* px-to-viewport-ignore-next */
  width: 10px;
  padding: 10px;
  height: 10px; /* px-to-viewport-ignore */
}

/* example output: */
.class {
  width: 10px; 
  padding: 3.125vw;
  height: 10px;
}

rem转成rpx

我们可以修改html的fontsize的大小来让rem等于rpx

  let screenWidth=document.documentElement.clientWidth//获取屏幕的宽度
  let centerWH=750/screenWidth//比例
  document.documentElement.style.fontSize=1/centerWH+'px' //设置html根元素fontsize的大小

附:Phone各种设备尺寸及数据详细表文章来源地址https://www.toymoban.com/news/detail-518853.html

到了这里,关于微信小程序适配问题 移动端适配方案 viewport的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Webstorm 入门级玩转uni-app 项目-微信小程序+移动端项目方案

    1. Webstorm uni-app语法插件 : Uniapp Support Uniapp Support - IntelliJ IDEs Plugin | Marketplace 第一个是不收费,第二个收费 我选择了第二个 Uniapp Support ,有试用30天,安装重启webstorm之后,可以提高生产率。 补充 有小伙伴说搜索不到插件,目前webstorm 2022.3版本还能搜到2个: # Uniapp Tool  

    2024年02月11日
    浏览(108)
  • [微信小程序] movable-view 可移动视图容器 - 范围问题

    movable-view 可移动视图容器 可移动视图容器,在页面中可以拖拽滑动。movable-view必须在 movable-area 组件中,并且必须是直接子节点 运行效果: 发现文字超出了移动区域的问题,去查阅了文档,发现这个默认是不允许超出的 问题原因:没有给 movable-view设置宽高,所以它自动

    2024年02月16日
    浏览(48)
  • 微信小程序:小程序常见问题及解决方案

    在小程序中使用原生的表单组件时,在有弹出框出现的情况下,原生表单组件会出现在遮罩层上面,且会造成事件穿透的情况。 解决方案一: 使用cover-view,cover-view比原生组件的层级更高,或者说也是一种原生组件,不过在cover-view的子组件只能是coveri-view、cover-image,对于包

    2024年02月10日
    浏览(72)
  • 微信小程序启动后黑屏问题解决方案

    微信小程序是一种轻量级的应用程序,可以在微信客户端内部运行。然而,有时候在打开微信小程序时会遇到黑屏的问题,即启动后看到一个黑色的屏幕,无法正常显示小程序的内容。本文将介绍一些可能导致微信小程序黑屏问题的原因,并提供解决方案。 资源加载问题 如

    2024年02月04日
    浏览(436)
  • 微信小程序----键盘弹出挡住输入框问题解决方案

    微信小程序键盘弹出挡住输入框问题解决方案 问题:微信小程序聊天输入框点击后,键盘弹出挡住输入框 解决办法: 1、给输入框添加一个 bindkeyboardheightchange 事件,获取键盘的高度 2、给发送消息的盒子一个bottom bottom 为监听到的键盘的高度 效果图:

    2024年03月27日
    浏览(164)
  • uniapp 微信小程序最新隐私弹窗更新方案,更新后无法登录问题解决方案

    uni-popup ref=\\\"popusAuthorization\\\" type=\\\"center\\\" :maskClick=\\\"false\\\" view class=\\\"contentview\\\" view class=\\\"title\\\"隐私保护指引/view view class=\\\"des\\\" @click=\\\"openPrivacyContract\\\" 在使用当前小程序服务之前,请仔细阅读text style=\\\"color: #07c160;\\\"{{privacyContractName}}/text。如你同意{{privacyContractName}},请点击“同意”开始使

    2024年02月09日
    浏览(47)
  • 【微信小程序】屏幕适配

    在网页中一般是使用 rem 单位,它能够根据html的字号大小自动改变尺寸,开发者可以动态的计算屏幕尺寸,然后根据屏幕大小的不同设置html的字号 小程序解决适配使用 rpx 单位,它能够根据屏幕大小自动进行转换。 每一个机型的宽度和高度都不一样,只需要写rpx自动会折算

    2024年03月08日
    浏览(36)
  • 关于微信小程序背景图手机上加载不出来问题的解决方案

    1.问题:平时在给背景图的时候大家的第一反应一定是在css中直接写background-image,直接就把图片当背景放在了那里,但是这样的方法在pc端还是可以的,在小程序端却存在着加载不出来的问题,现在我来给大家提供一个解决方法(插入图片的方法) 2.原理:一个大的父盒子,同时

    2024年02月04日
    浏览(99)
  • uniapp微信小程序 页面返回使用navigateBack,返回后页面不刷新问题解决方案

    尝试了众多方法,比如vuex,本地缓存,都不行 1,如果是页面之间的跳转 可以使用onShow生命周期请求数据 2,组件之间的跳转,使用redirectTo,通过关闭当前页面,跳转到指定页面再加载,这种适合二级页面到三级页面数据不更新问题 3,当一级页面使用了某个组件,组件内跳转

    2024年02月15日
    浏览(59)
  • 微信小程序登录适配(2023年最新)

    众所周知,微信小程序开发文档更新那不是一般的快,开发者都来不及去适配 😭 今天就来说说登录这一块到底改了哪些地方,以及怎么去适配 我们先来看看更改了哪些? 先放小程序登录文档这块更新的公告:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56

    2024年02月11日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包