### Install project dependencies Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Installs all required project dependencies using pnpm. ```bash pnpm install ``` -------------------------------- ### Run development server Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Starts the local development server at http://localhost:3000. ```bash pnpm dev ``` -------------------------------- ### Atomic CSS Example with Unocss Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Demonstrates using Unocss with the REM to PX preset for styling. The utility classes will be automatically converted to responsive VW units. ```vue

Hello, Unocss!

This is a simple example of Unocss in action.

``` -------------------------------- ### Install pnpm globally Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Installs the pnpm package manager globally using npm. ```bash npm install -g pnpm ``` -------------------------------- ### Install Iconify Carbon Icons Source: https://vue-zone.github.io/docs/vue3-vant-mobile/icons Install the Carbon icon set from Iconify using pnpm. This is a prerequisite for using Carbon icons with Unocss. ```bash pnpm add -D @iconify-json/carbon ``` -------------------------------- ### Use Built-in Vant Icon Source: https://vue-zone.github.io/docs/vue3-vant-mobile/icons Directly use Vant's Icon component for common UI elements. Ensure Vant is installed and configured. ```vue ``` -------------------------------- ### Preview production build Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Serves the production build locally for testing at http://localhost:4173/. ```bash pnpm preview ``` -------------------------------- ### Build for production Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Compiles the project for production and outputs files to the dist directory. ```bash pnpm build ``` -------------------------------- ### Clone project locally Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Uses tiged to clone the project template into a new directory and navigates into it. ```bash npx tiged vue-zone/vue3-vant-mobile my-mobile-app cd my-mobile-app ``` -------------------------------- ### Initialize Dark Mode via Script Source: https://vue-zone.github.io/docs/vue3-vant-mobile/dark-mode Inject this script to automatically apply the dark class based on local storage or system preferences. ```ts ``` -------------------------------- ### Basic HTML and Body Styles for REM Layout Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Minimal global styles required for REM layout configuration. Ensure an empty `` style is present if not already defined. ```css html { } body, p, li { margin: 0; /* 省略样式 */ } /* 省略其它选择器样式 */ ``` -------------------------------- ### Configure Fixed Theme Mode Source: https://vue-zone.github.io/docs/vue3-vant-mobile/dark-mode Force a specific theme by setting the value in the composable file. ```ts // these APIs are auto-imported from @vueuse/core useDark().value = false export const isDark = useDark() export const toggleDark = useToggle(isDark) export const preferredDark = usePreferredDark() ``` -------------------------------- ### Using Inline PX to VW Conversion in Templates Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Apply the `vw` utility function directly within template styles to convert pixel values to responsive viewport units. ```vue
``` -------------------------------- ### PostCSS Configuration for VW Units with Max Display Width Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Enhance desktop accessibility by limiting the viewport unit's maximum width. This prevents excessive scaling on larger screens. ```typescript postcss: { plugins: [ viewport({ appSelector: '#app', viewportWidth: 375, maxDisplayWidth: 600 }), ] } ``` -------------------------------- ### Configure npm registry Source: https://vue-zone.github.io/docs/vue3-vant-mobile/getting-started Sets the npm registry to the npmmirror mirror for faster package downloads. ```bash npm config set registry https://registry.npmmirror.com ``` -------------------------------- ### PostCSS Configuration for VW Units Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Configure PostCSS to convert px units to vw units using the viewport plugin. Set the design draft width to 375px. ```typescript postcss: { plugins: [ viewport({ // 最外层选择器 appSelector: '#app', // 设计稿宽度(Vant 设计稿的尺寸是375) viewportWidth: 375, }), ] } ``` -------------------------------- ### Unocss Configuration with REM to PX Preset Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Integrate the `@unocss/preset-rem-to-px` preset into Unocss configuration to convert REM units to PX, facilitating subsequent VW conversion. ```typescript import presetRemToPx from '@unocss/preset-rem-to-px' export default defineConfig({ presets: [ ... presetRemToPx({ baseFontSize: 4, }), ], }) ``` -------------------------------- ### PostCSS Configuration for REM Layout Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation Configure PostCSS for REM layout adaptation, ensuring compatibility with older devices and limiting maximum view width. ```typescript // vite.config.ts postcss: { plugins: [ viewport({ appSelector: '#app', viewportWidth: 375, maxDisplayWidth: 600, mobileUnit: 'rem', }), ] } ``` -------------------------------- ### Define Dark Mode Composables Source: https://vue-zone.github.io/docs/vue3-vant-mobile/dark-mode Structure for the dark.ts file to manage theme state using VueUse auto-imports. ```text src/composables/ └── composables/ └── dark.ts ``` ```ts // these APIs are auto-imported from @vueuse/core export const isDark = useDark() export const toggleDark = useToggle(isDark) export const preferredDark = usePreferredDark() ``` -------------------------------- ### Access Dark Mode State Source: https://vue-zone.github.io/docs/vue3-vant-mobile/dark-mode Retrieve the current theme mode or user preference. ```ts const mode = isDark.value ? 'dark' : 'light' ``` ```ts const userPreferredDark = preferredDark.value ? 'dark' : 'light' ``` -------------------------------- ### Toggle Dark Mode Source: https://vue-zone.github.io/docs/vue3-vant-mobile/dark-mode Trigger the theme switch function. ```ts toggleDark() ``` -------------------------------- ### Utility Function for Inline PX to VW Conversion Source: https://vue-zone.github.io/docs/vue3-vant-mobile/browser-adaptation A runtime utility function to convert inline pixel values to viewport units, ensuring responsiveness for inline styles. ```typescript // src/utils/inline-px-to-vw.ts ... export default function vw(n: number) { if (n === 0) return n const vwN = round(n * 100 / idealWidth, 3) const maxN = round(n * maxWidth / idealWidth, 3) const cssF = n > 0 ? 'min' : 'max' return `${cssF}(${vwN}vw, ${maxN}px)` } ``` -------------------------------- ### Use Iconify Icons with Unocss Source: https://vue-zone.github.io/docs/vue3-vant-mobile/icons Apply Iconify icons directly in your Vue templates using Unocss class syntax. Supports dark mode variants. ```vue