国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss

這篇具有很好參考價(jià)值的文章主要介紹了vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

寫在前面的話:看了這篇文章,有些東西名詞啥的不懂的,或者有疑問的推薦百度,因?yàn)閷懙奶嗾娴娘@得很啰嗦!

1.移動(dòng)端開發(fā)適配

目前移動(dòng)端適配,在市面上主流適配方案無非就兩種,rem方案和vw方案。這些方案,就可以自動(dòng)適配不同移動(dòng)端屏幕尺寸動(dòng)態(tài)縮放。其實(shí)他的適配,你可以理解為整個(gè)頁面進(jìn)行放大縮小,充滿整個(gè)屏幕。記得要在html設(shè)置如下meta
<meta name="viewport" content="width=device-width, initial-scale=1.0">

  • vw方案:把px轉(zhuǎn)換為vw單位,通過設(shè)置viewportWidth:750,750px = 100vw,1vw = 7.5px,這里就跟小程序上的rpx單位類似。
  • rem方案:把px轉(zhuǎn)換為rem單位,受到html上的font-size影響。但是我們不能把這個(gè)font-size寫死,它應(yīng)該是基于屏幕大小動(dòng)態(tài)變化,才能適配不同的手機(jī)屏幕。這里可以借助插件幫我們自動(dòng)設(shè)置基準(zhǔn)值和自動(dòng)把px轉(zhuǎn)換為rem單位,在這里有介紹。
  • 兩個(gè)方案demo
    • mian分支:無vw方案與rem方案,個(gè)人模板
    • mobile分支:基于main分支,加入了vw方案與rem方案,可以通過vite.config.ts 修改useVwModel值進(jìn)行切換
    • mobile_vant:基于mobile分支,引入了vant框架,進(jìn)行了vant配置
  • 演示demo
html {
	//假設(shè)375的設(shè)計(jì)稿,設(shè)置了基準(zhǔn)值為20px,那么當(dāng)屏幕為750的時(shí)候,這里的font-size大小應(yīng)該為40px。因?yàn)橄喈?dāng)于整體放大了兩倍
	font-size: 20px;//1rem = 20px
}

//375:font-size:20px  750:font-size:40px
<div style="font-size: 1rem;">國破山河在城春草木深</div>

//375:font-size:40px  750:font-size:80px
<div style="font-size: 2rem;">感時(shí)花濺淚恨別鳥驚心</div>	

2.vw適配方案(推薦)

只需要安裝插件:postcss-px-to-viewport

  • 安裝:npm install postcss-px-to-viewport --save-dev
  • vite配置參考如下:
//在vite.config.ts中
// vw方案(無像素差):px自動(dòng)轉(zhuǎn)換vw
import pxtovw from "postcss-px-to-viewport"
export default defineConfig({
  css: {
    postcss: {
      plugins: [
        autoprefixer({
          overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8']
        }),
        pxtovw({
          unitToConvert: 'px', // 要轉(zhuǎn)化的單位
          viewportWidth: 750, //100vw=750px,UI設(shè)計(jì)稿的寬度,vant是375??蓞⒖歼@個(gè):https://juejin.cn/post/6961737808339795975
          unitPrecision: 6, // 轉(zhuǎn)換后的精度,即小數(shù)點(diǎn)位數(shù)
          propList: ['*'], // 指定轉(zhuǎn)換的css屬性的單位,*代表全部css屬性的單位都進(jìn)行轉(zhuǎn)換
          viewportUnit: 'vw', // 指定需要轉(zhuǎn)換成的視窗單位,默認(rèn)vw
          fontViewportUnit: 'vw', // 指定字體需要轉(zhuǎn)換成的視窗單位,默認(rèn)vw
          selectorBlackList: ['ignore-'], // 指定不轉(zhuǎn)換為視窗單位的類名,
          minPixelValue: 1, // 默認(rèn)值1,小于或等于1px則不進(jìn)行轉(zhuǎn)換
          mediaQuery: true, // 是否在媒體查詢的css代碼中也進(jìn)行轉(zhuǎn)換,默認(rèn)false
          replace: true, // 是否轉(zhuǎn)換后直接更換屬性值
          landscape: false, // 是否處理橫屏情況
          // exclude: [/node_modules\/vant/i]
        })
      ],
    },
  },

})

3.rem適配方案(有0.1px誤差)

需要安裝兩個(gè)插件,1rem=html上的font-size

插件一:lib-flexible —— 用于自動(dòng)設(shè)置 rem 基準(zhǔn)值(也就是html上的font-size),切記需要再main.js中 import ‘a(chǎn)mfe-flexible’ 后才會(huì)自動(dòng)設(shè)置基準(zhǔn)值

插件二:postcss-pxtorem —— 是一款 postcss 插件,用于將px單位轉(zhuǎn)化為 rem(你可以直接在項(xiàng)目中寫px,它會(huì)自動(dòng)幫你轉(zhuǎn)換為rem單位)

  • 安裝插件一:npm i amfe-flexible -D

  • 安裝插件二:npm i postcss-pxtorem -D

  • 在main.js文件中: import ‘a(chǎn)mfe-flexible’

  • 安裝(自動(dòng)管理瀏覽器前綴,非必裝):npm install autoprefixer --save

  • 如果使用了unocss參考配置, 使用下面的unocss插件把自帶的rem轉(zhuǎn)換為px,在通過postcss-pxtorem轉(zhuǎn)換為rem

  • unocss插件(把默認(rèn)的rem單位轉(zhuǎn)換為px,完整配置參考demo):npm install -D @unocss/preset-rem-to-px

  • vite配置參考如下:

//在vite.config.ts中
// rem方案(部分轉(zhuǎn)換后會(huì)有0.1px的像素差,推薦vw方案):css自動(dòng)轉(zhuǎn)換為rem,切記需要再main.js中 import 'amfe-flexible' 自動(dòng)設(shè)置基準(zhǔn)值
import postCssPxToRem from 'postcss-pxtorem'
export default defineConfig({
  css: {
    postcss: {
      plugins: [
        autoprefixer({
          overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8']
        }),
       postCssPxToRem({
          // 自適應(yīng),px>rem轉(zhuǎn)換
          rootValue:75, // 這里代表的是1rem等于多少rootValue的px。75表示750設(shè)計(jì)稿,37.5表示375設(shè)計(jì)稿
          propList: ['*'], // 需要轉(zhuǎn)換的屬性,這里選擇全部都進(jìn)行轉(zhuǎn)換
          selectorBlackList: ['norem', 'ignore'], // 過濾掉norem-開頭的class,不進(jìn)行rem轉(zhuǎn)換
          mediaQuery: false,  // 允許在媒體查詢中轉(zhuǎn)換 px
        }),
      ],
    },
  }
})

4.原子化插件 unocss 與 tailwindcss

原子化的意思就是,把css的每一個(gè)屬性,定義成一個(gè)class,這樣子的話,我們寫樣式的時(shí)候,可以直接寫,無需再命名class,好維護(hù),如顏色大小主題等。部分樣式參考:

style="width:100%;height:50px;display:flex;flex-direction:row;background:white;"

// unocss || tailwindcss
class="w-full h-[50px] flex flex-row bg-white"

就我使用一段時(shí)間以來,我最大的感受的就是太爽了,再也不需要 命名class,寫起來很絲滑。但是我認(rèn)為它也有一些弊端,比如:1.前期有個(gè)學(xué)習(xí)記憶的成本(多敲就好)。2.個(gè)人開發(fā)又快又好的,團(tuán)隊(duì)開發(fā)可能要被罵娘(強(qiáng)制別人學(xué)習(xí)使用囧),除非他們也用。3.復(fù)用問題,因?yàn)樗值奶?xì)了,如果一些組合樣式經(jīng)常要用到,不好進(jìn)行復(fù)用,可以通過使用@apply解決。

unocss是基于tailwindcss的。雖然我用的unocss,但是我查文檔用的tailwindcss,寫法跟tailwindcss是一樣的 囧!這兩個(gè)框架優(yōu)劣百度更詳細(xì)

5.引入移動(dòng)端vant框架

vant框架的設(shè)計(jì)稿是375,如果我們自身的設(shè)計(jì)是375那就無需做額外的配置,但是如果我們是750的設(shè)計(jì)稿,那么rem方案和vw方案需要多做一些配置。這里配置參考兩個(gè)方案demo

6.關(guān)于rpx

rpx是微信小程序上的單位,750rpx=100vw,在設(shè)計(jì)稿750的情況下,1px = 1rpx。在設(shè)計(jì)稿為375的情況下,2px = 1rpx。建議小程序開發(fā)使用750設(shè)計(jì)稿!

  • uniapp項(xiàng)目運(yùn)行在瀏覽器上會(huì)把rpx轉(zhuǎn)換為rem,rem適配方案
    vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
  • uniapp運(yùn)行在小程序上,則不會(huì)進(jìn)行轉(zhuǎn)換。這里超出750,長度溢出了。
    vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5

7.使用unocss插件后,實(shí)現(xiàn)rpx一樣的書寫方式

移動(dòng)端開發(fā),我們?cè)谑褂胾niapp框架開發(fā)后,我們可以無任何負(fù)擔(dān)的使用rpx像素,因?yàn)閡niapp在編譯對(duì)應(yīng)平臺(tái)的時(shí)候,會(huì)自動(dòng)幫我們轉(zhuǎn)換對(duì)應(yīng)的像素單位。也就是說,750的設(shè)計(jì)稿,設(shè)計(jì)稿的寬高是多少,我們就可以寫多少的rpx大小。

通過使用vw或者rem適配方案后,我們也可以實(shí)現(xiàn)同樣的效果。我們想設(shè)置長度為500,但是我們?cè)踊牟寮?w-1 默認(rèn)設(shè)置大小為下4px,w-125才為500px,書寫有負(fù)擔(dān)。
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
我們不得不采用以下方式:
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
這樣可以實(shí)現(xiàn)同樣的效果,但是問題是繁瑣了,我們能不能直接通過 w-500實(shí)現(xiàn)呢?可以可以的,這些都是可以自己定制的。這里我們生成一個(gè)新的屬性來做區(qū)分,這里定義一個(gè)ww 和 hh 代表的就是 你給我多少,我就是多少px像素。

//uno.config.js
export default defineConfig({
  // 預(yù)設(shè)的別名,可以進(jìn)行一些組合使用
  shortcuts: [
    ['center', 'flex items-center justify-center'],
    ['btn', 'px-2 py-1 rounded inline-block bg-teal-700 text-white cursor-pointer !outline-none hover:bg-teal-800 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
    ['icon-btn', 'inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600'],
  ],
  
  rules:[
    [/^ww-(\d+)$/, ([, d]) => ({ width: `$n5n3t3zpx` })],
    [/^hh-(\d+)$/, ([, d]) => ({ height: `$n5n3t3zpx` })],
  ]
})

vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
也可以修改默認(rèn)的,這里列舉部分:
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5

這種方式也不是最優(yōu)解,我們使用官方的一個(gè)插件,上面也有提到,把unocss默認(rèn)的rem單位改為px單位安裝使用文檔。
因?yàn)樗J(rèn)的baseFontSize為16px=1rem,w-1=4px=0.25rem,
我們要想實(shí)現(xiàn)w-1=1px,只需要把baseFontSize改為4px即可。

 presetRemToPx({
      baseFontSize:4,//默認(rèn)16(1rem=16px),改為4以后,1rem=1px,方便移動(dòng)端直接使用px單位
    }),

vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5

通過 http://localhost:5173/__unocss 地址查看編譯的樣式

8.關(guān)于uniapp使用unocss

推薦這個(gè)項(xiàng)目uni-app vue3中使用,它是基于uniapp官方模板。clone這個(gè)項(xiàng)目后,修改package.json
“unocss-preset-weapp”: “^0.53.5”,然后通過pnpm i安裝依賴
這個(gè)可以直接在uniapp運(yùn)行,但是這個(gè)unocss插件提示支持不好,推薦用vscode。所以在vscode使用如下:

  • 運(yùn)行在瀏覽器:pnpm run dev:h5
  • 運(yùn)行在小程序:pnpm run dev:mp-weixin,但是它只是實(shí)時(shí)監(jiān)聽文件變動(dòng)和生成最新代碼,你需要手動(dòng)啟動(dòng)微信開發(fā)者工具并雙擊打開項(xiàng)目。打開后,后續(xù)實(shí)時(shí)修改能夠?qū)崟r(shí)更新!
    vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5

9.演示demo

vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5
vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss,技術(shù)分享,vue.js,前端,javascript,unocss,vant,移動(dòng)端,h5文章來源地址http://www.zghlxwxcb.cn/news/detail-523031.html

到了這里,關(guān)于vue 移動(dòng)端開發(fā)vw適配方案&rem適配方案 + vant框架 + unocss|tailwindcss的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • css面試題:px、em、rem、vw、vh的區(qū)別

    pixel,px,表示像素,也就是顯示器上一個(gè)個(gè)的小點(diǎn),每個(gè)像素點(diǎn)都是大小一樣的,所以像素被分到了絕對(duì)長長度單位中。 有人把px當(dāng)作相對(duì)單位,是相對(duì)于 觀看設(shè)備 的。對(duì)于 低 dpi/ppi(像素密度) 的設(shè)備,1px 是顯示器的一個(gè)設(shè)備像素(點(diǎn))。對(duì)于打印機(jī)和高分辨率屏幕,

    2024年02月12日
    瀏覽(23)
  • Vue中使px自動(dòng)轉(zhuǎn)rem配置 (h5適配問題)

    以下方法為px自動(dòng)轉(zhuǎn)換rem,顧名思義,配置完成后,不用再關(guān)心rem換算等等,只需按照設(shè)計(jì)稿的px值寫入即可,當(dāng)你保存后 PostCSS 插件會(huì)自動(dòng)將px轉(zhuǎn)換成所配置的rem值,并且你在瀏覽控制臺(tái)觀測(cè)界面時(shí)你會(huì)發(fā)現(xiàn)你在代碼里寫的是px單位,在控制臺(tái)被轉(zhuǎn)換成了rem單位。 postcss 一種

    2024年01月22日
    瀏覽(19)
  • css基礎(chǔ)知識(shí)三:說說em/px/rem/vh/vw的區(qū)別?

    css基礎(chǔ)知識(shí)三:說說em/px/rem/vh/vw的區(qū)別?

    一、介紹 傳統(tǒng)的項(xiàng)目開發(fā)中,我們只會(huì)用到px、%、em這幾個(gè)單位,它可以適用于大部分的項(xiàng)目開發(fā),且擁有比較良好的兼容性 從CSS3開始,瀏覽器對(duì)計(jì)量單位的支持又提升到了另外一個(gè)境界,新增了rem、vh、vw、vm等一些新的計(jì)量單位 利用這些新的單位開發(fā)出比較良好的響應(yīng)式

    2024年02月09日
    瀏覽(37)
  • CSS查缺補(bǔ)漏之常用長度單位(px、em、rem、%、vw/vh、vmin/vmax)

    CSS查缺補(bǔ)漏之常用長度單位(px、em、rem、%、vw/vh、vmin/vmax)

    此文內(nèi)容較少,輕輕松松掌握,莫要有壓力~ 正如現(xiàn)實(shí)生活中長度具有mm、dm、cm、m等,在css中,也具備多種長度單位,本文對(duì)常用的幾種單位進(jìn)行詳細(xì)舉例介紹~ px:像素單位 初學(xué)css時(shí),px單位經(jīng)常被使用,此處按下不表~ ?em:表示相對(duì)于 當(dāng)前元素 或 父元素 的font-size的倍數(shù)

    2024年02月09日
    瀏覽(20)
  • 微信小程序適配問題 移動(dòng)端適配方案 viewport

    iPhone X 兼容 在小程序頁面開發(fā)中,涉及到需要適配 iPhone X 的地方主要有:導(dǎo)航欄(NavigationBar),標(biāo)簽欄(TabBar)以及頁面底部的吸底按鈕。 對(duì)于position: fixed的可交互組件,如果渲染在iPhone X的安全區(qū)域外,容易誤觸 Home Indicator,應(yīng)當(dāng)把可交互的部分都渲染到安全區(qū)域內(nèi)。

    2024年02月12日
    瀏覽(23)
  • javascript常見100問|前端基礎(chǔ)知識(shí)|問ajax-fetch-axios-區(qū)別請(qǐng)用 XMLHttpRequestfetch 實(shí)現(xiàn) ajax節(jié)流和防抖px em rem vw/箭頭函數(shù)的缺點(diǎn)

    HTML CSS JS HTTP 等基礎(chǔ)知識(shí)是前端面試的第一步,基礎(chǔ)知識(shí)不過關(guān)將直接被拒。本章將通過多個(gè)面試題,講解前端??嫉幕A(chǔ)知識(shí)面試題,同時(shí)復(fù)習(xí)一些重要的知識(shí)點(diǎn)。 扎實(shí)的前端基礎(chǔ)知識(shí),是作為前端工程師的根本?;A(chǔ)知識(shí)能保證最基本的使用,即招聘進(jìn)來能干活,能產(chǎn)出

    2024年04月27日
    瀏覽(34)
  • pc端與移動(dòng)端適配 解決方案

    pc端與移動(dòng)端適配 解決方案

    一般網(wǎng)站實(shí)現(xiàn)pc端與移動(dòng)端適配的需求,方案有兩個(gè): 1、一套頁面,從設(shè)計(jì)時(shí)就考慮到跨設(shè)備適配,響應(yīng)式的一步到位; 2、開發(fā)兩套頁面,根據(jù)設(shè)備尺寸加載加載不同的資源,目前已經(jīng)不常見了; 做一個(gè)響應(yīng)式的頁面。即只用一個(gè)鏈接,用媒體查詢來控制樣式。同一個(gè)鏈接

    2024年02月04日
    瀏覽(16)
  • vue+vant移動(dòng)端顯示table表格加橫向滾動(dòng)條

    vue+vant移動(dòng)端顯示table表格加橫向滾動(dòng)條

    參考文章: https://blog.csdn.net/weixin_46511008/article/details/127210738 https://my.oschina.net/u/4261744/blog/3315859 vant移動(dòng)端顯示table效果,增加復(fù)選框,可以進(jìn)行多選和全選。加橫向滾動(dòng)條,可以看全部內(nèi)容。 主要是參考上面兩篇文章。

    2024年02月17日
    瀏覽(28)
  • h5響應(yīng)式布局、PC和移動(dòng)端適配方案

    春招真的是太卷了,讓我懷疑春招到底在招誰(是我太菜惹qaq)??傊€是不能松懈下來,總結(jié)一下在實(shí)習(xí)期間遇到的h5的響應(yīng)式布局、PC和移動(dòng)端適配方案的選擇以及一些問題。本文部分文案由chat-gpt編寫,例如介紹響應(yīng)式布局的文案(才不是因?yàn)槲覒衺)。 響應(yīng)式布局是指

    2024年02月05日
    瀏覽(27)
  • web移動(dòng)端適配有哪些解決方案?每個(gè)方案的優(yōu)缺點(diǎn)評(píng)估

    移動(dòng)端適配的解決方案主要包括以下幾種: rem方案 :這是最早被廣泛采用和討論的移動(dòng)端適配方案。通過在頁面上使用 rem 單位來控制頁面元素的大小,實(shí)現(xiàn)在不同尺寸的設(shè)備上保持界面展示效果的一致性。這種方案的優(yōu)點(diǎn)在于簡單易用,但缺點(diǎn)是對(duì)安卓的適配性可能不夠好

    2024年02月21日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包