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>
相关文章
|
14天前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
109 3
|
21天前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
35 0
微信小程序更新提醒uniapp
|
25天前
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
33 2
|
18天前
|
小程序 数据可视化 API
低代码可视化-uniapp商城首页小程序-代码生成器
低代码可视化-uniapp商城首页小程序-代码生成器
17 0
|
20天前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
37 0
|
3月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
92 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
24天前
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
36 0
|
3月前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
91 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
3月前
|
存储 小程序 JavaScript
|
3月前
|
小程序 前端开发 安全

热门文章

最新文章