在移動(dòng)應(yīng)用中,有一些場(chǎng)景需要我們把頁(yè)面展示為豎屏。Vue 提供了一種簡(jiǎn)單的方式來(lái)導(dǎo)出豎屏,讓我們一起來(lái)詳細(xì)了解。
首先,可以在項(xiàng)目根目錄下找到
vue.config.js文件。如果沒(méi)有該文件,可以在根目錄下新建一個(gè)。需要注意的是
vue.config.js是一個(gè)配置文件,其默認(rèn)是不會(huì)自動(dòng)生成的。
接著,在
vue.config.js文件中添加如下代碼:
module.exports = { configureWebpack: { module: { rules: [ { test: /\.(html|htm|vue)$/, enforce: 'pre', loader: 'vertical-fix-loader', options: { rotate: true } } ] } } };
配置中,我們使用了
vertical-fix-loader,這是一個(gè)特殊的 loader,可以幫助我們解決豎屏問(wèn)題。同時(shí),我們提供了一個(gè)選項(xiàng)
rotate: true,用于旋轉(zhuǎn)頁(yè)面。這樣,頁(yè)面就可以保持豎屏了。
需要注意的是,
vertical-fix-loader是一個(gè)開(kāi)源的 loader,需要我們單獨(dú)安裝。可以使用如下命令進(jìn)行安裝:
npm install vertical-fix-loader --save-dev
安裝完畢之后,我們就可以在項(xiàng)目中使用了。需要注意的是,一些庫(kù)可能直接使用了
postcss-pxtorem等庫(kù),這些庫(kù)會(huì)自動(dòng)將樣式單位轉(zhuǎn)換為 rem。這會(huì)導(dǎo)致旋轉(zhuǎn)后,樣式大小不一致。這時(shí),我們可以使用如下方案適應(yīng)此情況:
// 在代碼中定義 const minWidth = 750; // 設(shè)計(jì)稿寬度 export const rem2px = (rem) =>{ return (rem * Math.min(window.innerWidth, minWidth) / minWidth) * (100 / 75); }; // 在 scss 中使用 @function px2rem($px) { $remSize: #{$px/100}rem; @if (min-width: $minWidth) { @return $remSize; } @return #{rem2px($px)}px; } // 在模板中使用
通過(guò)代碼中定義函數(shù),我們可以在 scss 和模板中直接使用剛才定義的函數(shù)
px2rem。這樣旋轉(zhuǎn)后,頁(yè)面樣式大小就可以得到適當(dāng)?shù)恼{(diào)整。
總體來(lái)說(shuō),導(dǎo)出豎屏的過(guò)程并不復(fù)雜。只需要在項(xiàng)目的配置文件中添加合適的 loader,同時(shí)適當(dāng)調(diào)整代碼樣式等細(xì)節(jié)就可以了。希望這篇文章對(duì)你有所幫助!