使用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>