欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

uni-app?PC端寬屏適配方案圖文詳解

 更新時間:2023年03月29日 10:59:30   作者:yuan溜溜  
現(xiàn)在uni-app終于官方支持PC寬屏,下面這篇文章主要給大家介紹了關(guān)于uni-app?PC端寬屏適配方案的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

隨著互聯(lián)網(wǎng)的發(fā)展,iOS、Android、H5以及各種小程序快應(yīng)用層出不窮,隨之而來的問題就是如何用一套代碼,適配多個平臺,其中uni-app表現(xiàn)優(yōu)異,已經(jīng)實現(xiàn)了手機(jī)端全覆蓋,支持iOS、Android、H5、微信小程序、阿里小程序、百度小程序、字節(jié)跳動小程序、QQ小程序、快應(yīng)用、360小程序,并且在各端均有優(yōu)異的運行性能。并且從2.9版本起,uni-app 進(jìn)一步提供了PC等寬屏的適配方案,完成了大統(tǒng)一。

具體怎么用

我們下面用一個簡單的案列讓大家直觀感受:

比如現(xiàn)在的需求是,一個列表卡片,點擊卡片進(jìn)入卡片詳情頁,在小程序,ios, Android, 以及h5上表現(xiàn)形式如下:

小程序

H5

但是我想在寬屏pc端兼容這個需求,現(xiàn)在左邊固定寬度展示列表卡片,右邊剩余寬度展示選中的卡片詳情,表現(xiàn)形式如下:

Uni-app具體做法如下:

  • 窗體級適配:leftwindow、rightwindow、topwindow等分欄
  • 組件級適配:match-media組件
  • rpx的寬屏響應(yīng)

窗體級適配:leftwindow分欄

新建rightWindow.vue頁面(這個頁面不需要從寫,只需要復(fù)用原來的組件detail.vue)

<template>
   // 原來的組件detail.vue
	<detail ref="detailPage" :text="detail" ></detail>
</template>

<script>
	export default {
		data(){
			return {
				detail:''
			}
		},
		created(e) {
		  //監(jiān)聽自定義事件,該事件由左側(cè)列表頁的點擊觸發(fā)
		  uni.$on('updateDetail', (e) => {
			this.detail = decodeURIComponent(e.detail)
			// 執(zhí)行 detailPage組件,即:/pages/detail/detail.vue 頁面的load方法
			this.$refs.detailPage.load(e.detail);
		  })
		}
	}
</script>

在列表卡片頁面,處理點擊卡片后與rightWindow交互通信

<template>
  <view class="content-box">
			<view class="each-box" v-for="(item,index) in list" :key="index" @click="goDetail(item?.des)">
				<image class="content-img" :src="item?.url" mode="scaleToFill" />
				<view class="content-des">
					{{item?.des}}
				</view>
			</view>
	</view>
</template>
<script>
  methods: {
        goDetail(detail){
          if (this.pageWidth > 768) { 
            //若為寬屏,則觸發(fā)右側(cè)分欄詳情頁的自定義事件,通知右側(cè)窗體刷新新聞詳情
            uni.$emit('updateDetail', {
              detail: encodeURIComponent(detail)
            })
          } else { 
            // 若為窄評,則打開新窗體,在新窗體打開詳情頁面
            uni.navigateTo({
              url: '/pages/detail/detail?detail=' + encodeURIComponent(detail)
            });
          }
        }
  }
</script>

pages.json中注冊rightWindow

	// 頁面適配
	"rightWindow": {
	    "path": "pages/rightWindow/rightWindow.vue", // 指定 rightWindow 頁面文件
	    "style": {
	      "width": "calc(100vw - 390px)" // 頁面寬度(390px是左邊固定寬度)
	    },
	    "matchMedia": {
	      "minWidth": 580 //生效條件,當(dāng)窗口寬度大于580px時分屏顯示
	    }
	 },

更多配置詳見文檔:https://uniapp.dcloud.net.cn/tutorial/adapt.html

效果如下:

組件級適配:match-media組件

rightWindow等方案是頁面窗體級適配方案,適用于多頁面的組合分欄顯示,那么在同一個頁面內(nèi),不同組件根據(jù)適配方案除了傳統(tǒng)的媒體查詢外,uni-app提供了match-media組件

用法:

match-media組件中放置內(nèi)容,并為該組件指定一組 media query 媒體查詢規(guī)則,如屏幕寬度。運行時,如屏幕寬度滿足查詢條件,則這個組件就會被展示,反之則隱藏。

<template>
	<view class="component-style">
		<!--  這個寬度是整個屏幕寬度,不是分屏的寬度-->
		<match-media :min-width="375" :max-width="768" >
			<view class="min">
				{{ text }}
			</view>
			<view class="min">
				{{ text }}
			</view>
		</match-media>
		<match-media :min-width="769">
			<view class="max">
				{{ text }}
			</view>
			<view class="max">
				{{ text }}
			</view>
		</match-media>
	</view>
</template>

<style scoped lang="less">
	.component-style{
		padding: 20px 10px;
		border-radius: 4px;
		.max{
			font-size: 30px;
			color: palevioletred;
		}
		.min{
			font-size: 20px;
			color: olive;
		}
	}

</style>

效果如下:

width<=580

width>580

rpx的寬度適應(yīng)

設(shè)計Mobile App時,設(shè)計師常會以 iPhone6 作為視覺稿的標(biāo)準(zhǔn),即按照750px屏幕寬度出圖;程序員以750px作為基準(zhǔn),根據(jù)設(shè)備實際尺寸,動態(tài)換算(縮放)出適合當(dāng)前設(shè)備屏幕的元素寬高。

這就是rpx(responsive pixel)的實現(xiàn)思路,只不過rpx由框架引擎動態(tài)換算元素尺寸,無需程序員寫代碼干預(yù)。

面向mobile端時,rpx是一種很理想的解決方案,因為各種移動設(shè)備的屏幕寬度差異不是很大,相對于750px微調(diào)縮放后的效果,可最大化的還原設(shè)計師的設(shè)計。

但是,一旦脫離移動設(shè)備,在pc屏幕,或者pad橫屏狀態(tài)下,因為屏幕寬度遠(yuǎn)大于750了。此時rpx根據(jù)屏幕寬度變化的結(jié)果就嚴(yán)重脫離了預(yù)期,大的慘不忍睹。

下面我們用一個32 x 32的icon為例

.icon-style{
  width: 64rpx ;  // 若設(shè)計稿寬度為 375px,icon在設(shè)計稿上的寬度為32px,那么icon在 uni-app 里面的寬度應(yīng)該設(shè)為(750 * 32 / 375)rpx
  height: 64rpx ;
}

在小屏,顯示效果:

運行到1200px的pc端,經(jīng)過計算的icon = 102px,效果如下(icon太大了):

為此,在uni-app 2.9+起,新增了 rpx 按750px做基準(zhǔn)屏寬的生效范圍控制,即屏幕寬度超過某閥值(默認(rèn)為960px)后,將不再以屏幕實際寬度換算元素寬高,而改以固定屏幕寬度(默認(rèn)為375px)計算元素寬高

以上述圖文列表為例,當(dāng)屏幕寬度為1200px(大于960px)時,將采用固定的屏幕寬度(默認(rèn)375px)計算縮略圖的寬高,按照這個機(jī)制,pc端運行效果如下,相比上圖的放大變丑,展現(xiàn)更為理想優(yōu)雅。

pages.json配置如下

	"globalStyle": {
		"rpxCalcMaxDeviceWidth": 960, // rpx 計算所支持的最大設(shè)備寬度,單位 px,默認(rèn)值為 960
		"rpxCalcBaseDeviceWidth": 375// 設(shè)備實際寬度超出 rpx 計算所支持的最大寬度時,rpx計算所采用的固定屏幕寬度,單位 px,默認(rèn)值為 375
	},

當(dāng)然,開發(fā)者可在rpx寬度管控的基礎(chǔ)上,略作調(diào)整,實現(xiàn)更好的pc寬屏效果,如寬屏大于多少px時候,固定列表寬度且居中顯示,如下圖。實際應(yīng)用中,可采用前面介紹的分欄窗口,將列表在左側(cè)分欄中顯示。

總結(jié)

到此這篇關(guān)于uni-app PC端寬屏適配方案的文章就介紹到這了,更多相關(guān)uni-app PC端寬屏適配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論