uniapp实现微信小程序横屏适配问题demo效果(整理)

简介: uniapp实现微信小程序横屏适配问题demo效果(整理)


使用VMIN进行布局

先了解css3的两个属性vmax和vmin

vmax 相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax
vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin

竖屏布局的时候,750rpx就是竖屏布局屏幕的宽度,vmin不管横竖屏的情况下,100vmin都是手机屏幕的宽度,所以rpx与vmin之间有一个换算的关系:x rpx=( x * 100 / 750)vmin。

也就是说: 75rpx转化为vmin就是 75 * 100/750=10vmin

所以我们将rpx转化成vmin就可以正常的进行横屏的开发。


主要:

@function tovmin(KaTeX parse error: Expected '}', got 'EOF' at end of input: rpx) { //rpx为需要转换的字号

@return #{$rpx * 100 / 750}vmin;

}

<template>
  <view class="clanHall" style="background-image: url(https://image.zrms.com.cn/1683537773246xianghuo.png);">
    <view class="videoTop row-me row-center">
      <image src="../static/back.png" mode="aspectFit" class="returnImg" @click="goClick"></image>
      <view class="row-me row-center broadcast">
        <image src="../static/icon_laba.png" mode="aspectFit" class="margin-right10 horn"></image>
        <swiper circular="true" vertical="true" autoplay="true" interval="3000" duration="1000"
          class="margin-right30 swiperBox">
          <swiper-item v-for="(item,index) in noticeList" :key="index"
            class="row-me row-center swiperItem colorfff">
            <view class="margin-left10 txt1">{{item.name}}</view>于<view class="txt2">{{item.day}}
            </view>去世,送上属于你的思念。
          </swiper-item>
        </swiper>
      </view>
    </view>
    <view class="leftBox">
      <view class="row-me row-center viewBox margin-bottom20" @click="tabLeft(1)">
        <image src="../static/btn_quanjing.png" mode="aspectFit" class="img"></image>
        <view class="font-bold colorfff leftTxt">全景</view>
      </view>
      <view class="row-me row-center viewBox margin-bottom20" @click="tabLeft(2)">
        <image src="../static/btn_sc.png" mode="aspectFit" class="img">
        </image>
        <view class="font-bold colorfff leftTxt">商城</view>
      </view>
      <view class="row-me row-center viewBox margin-bottom20" @click="tabLeft(3)">
        <image src="../static/btn_jcxx.png" mode="aspectFit" class="img"></image>
        <view class="font-bold colorfff leftTxt">家祠信息</view>
      </view>
      <view class="row-me row-center viewBox" @click="tabLeft(4)">
        <image src="../static/btn_jcys.png" mode="aspectFit" class="img"></image>
        <view class="font-bold colorfff leftTxt">家祠议事</view>
      </view>
    </view>
    <view class="rightBottom row-me row-center">
      <view class="viewBox" @click="tabRightbottom(1)">留言</view>
      <view class="viewBox" @click="tabRightbottom(2)">相册</view>
    </view>
  </view>
</template>
<script>
  export default {
    components: {
    },
    data() {
      return {
        noticeList: [ //公告栏播报
          {
            name: '杨树林',
            day: '2020年3月29日',
          },
          {
            name: '杨树林01',
            day: '2020年3月29日',
          },
          {
            name: '杨树林02',
            day: '2020年3月29日',
          },
        ],
      }
    },
    // 侦听器
    watch: {
    },
    // 计算属性
    computed: {
    },
    //组件创建
    created() {
    },
    // 页面加载
    onLoad(e) {
    },
    // 页面显示
    onShow() {
    },
    // 方法
    methods: {
      goClick() {
        this.$.back();
      },
      tabLeft(index) {
        if (index == 1) {
          this.$.toast('暂无开通,敬请期待!');
        } else if (index == 2) {
          this.$.open("/ancestralHall/store/indexList");
        } else if (index == 3) {
          this.$.toast('暂无开通,敬请期待!');
        } else if (index == 4) {
          this.$.toast('暂无开通,敬请期待!');
        }
      },
      tabRightbottom(index) {
        if (index == 1) {
          this.$.toast('暂无开通,敬请期待!');
        } else if (index == 2) {
          this.$.open("/myAncestralHall/myAncestralHallPage/photo");
        }
      },
    },
    // 页面隐藏
    onHide() {
    },
    // 页面卸载
    onUnload() {
    },
    // 触发下拉刷新
    onPullDownRefresh() {
    },
    // 页面上拉触底事件的处理函数
    onReachBottom() {
    },
  }
</script>
<style lang="scss" scoped>
  @function tovmin($rpx) {
    //$rpx为需要转换的字号
    @return #{$rpx * 100 / 750}vmin;
  }
  // width: tovmin(750);
  .clanHall {
    height: 100vh;
    overflow: auto;
    background-color: #2A3143;
    background-size: 100% 100%;
    .videoTop {
      // height: 88rpx;
      height: tovmin(88);
      .returnImg {
        // width: 123rpx;
        // height: 34rpx;
        // margin-left: 60rpx;
        // margin-right: 46rpx;
        width: tovmin(123);
        height: tovmin(34);
        margin-left: tovmin(60);
        margin-right: tovmin(46);
      }
      .broadcast {
        flex: 1;
        // height: 80rpx;
        height: tovmin(80);
        border-radius: 20rpx;
        .horn {
          // width: 30rpx;
          // height: 30rpx;
          width: tovmin(30);
          height: tovmin(30);
        }
        .swiperBox {
          width: 100%;
          // height: 80rpx;
          height: tovmin(80);
          .horn {
            // width: 30rpx;
            // height: 30rpx;
            width: tovmin(30);
            height: tovmin(30);
          }
          .swiperItem {
            font-size: tovmin(24);
            .txt1 {
              color: #DBB081;
            }
            .txt2 {
              color: #DBB081;
            }
          }
        }
      }
    }
    .leftBox {
      position: fixed;
      // top: 118rpx;
      // left: 90rpx;
      // width: 200rpx;
      width: tovmin(200);
      top: tovmin(118);
      left: tovmin(90);
      .viewBox {
        // width: 200rpx;
        // height: 80rpx;
        width: tovmin(200);
        height: tovmin(80);
        background: rgba(0, 0, 0, 0.5);
        border-radius: 50rpx;
      }
      .img {
        // width: 44rpx;
        // height: 44rpx;
        // margin-left: 28rpx;
        // margin-right: 12rpx;
        width: tovmin(44);
        height: tovmin(44);
        margin-left: tovmin(28);
        margin-right: tovmin(12);
      }
      .leftTxt {
        font-size: tovmin(24);
      }
    }
    .rightBottom {
      position: fixed;
      // bottom: 58rpx;
      // right: 40rpx;
      bottom: tovmin(58);
      right: tovmin(40);
      .viewBox {
        // width: 182rpx;
        // height: 70rpx;
        // line-height: 70rpx;
        background-image: url('../static/bg_liuyan.png');
        background-size: 100% 100%;
        // font-size: 26rpx;
        font-weight: bold;
        color: #FFFFFF;
        text-align: center;
        // margin-left: 27rpx;
        width: tovmin(182);
        height: tovmin(70);
        line-height: tovmin(70);
        font-size: tovmin(26);
        margin-left: tovmin(27);
      }
    }
  }
</style>
相关文章
|
21天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
26天前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
26 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
315 3
|
2月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
55 0
微信小程序更新提醒uniapp
|
2月前
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
47 2
|
2月前
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
31 0
|
4月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
115 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
88 0
|
2月前
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
50 0
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
649 7