Vue3(开发h5适配)

在开发移动端的时候需要适配各种机型,有大的,有小的,我们需要一套代码,在不同的分辨率适应各种机型。

因此我们需要设置meta标签

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

移动设备具有各种不同的屏幕尺寸和分辨率,例如智能手机和平板电脑。为了提供更好的用户体验,网页需要根据设备的屏幕宽度进行自适应布局。如果不设置width=device-width,移动设备会按照默认的视口宽度(通常是较宽的桌面屏幕)来渲染网页,导致网页内容在移动设备上显示不正常,可能出现内容被截断或需要水平滚动的情况

然后我们实现一个经典的圣杯布局

圣杯布局:在CSS中,圣杯布局是指两边盒子宽度固定,中间盒子自适应的三栏布局,其中,中间栏放到文档流前面,保证先行渲染;

圣杯布局

<template><div><header><div>left</div><div>center</div><div>right</div></header></div>
</template>
header {display: flex;justify-content: space-between;div {height: 50px;color: white;text-align: center;line-height: 50px;}div:nth-child(1) {width: 100px;background: red;}div:nth-child(2) {flex: 1;background: green;}div:nth-child(3) {width: 100px;background: blue;}
}

正常手机看着也还行

image.png

但是如果是小手机就会有问题 很挤

image.png

自适应

发现px是相对单位固定的,无法进行自适应,不会随着屏幕尺寸的改变而改变。

rem 是根据html的font-size 进行缩放的,可以进行自适应,缺点就是需要计算每个屏幕大小所对应的font-size

vw vh是相对viewport 视口的单位,配合meta标签可以直接使用,无需计算

1vw=1/100视口宽度

1vh=1/100视口高度

当前屏幕视口是375像素,1vw就是3.75像素

现在知道了用什么单位,但是我们还要根据px去换算vw就很麻烦,能不能自动转换???

postCss

https://cn.vitejs.dev/config/shared-options.html#css-postcss

发现vite已经内置了postCss

https://www.postcss.com.cn/

postCss 提供了 把Css 转换AST的能力,类似于Babel,为此我们可以编写一个插件用于将px转换为vw

npm init vue

构建一个vue项目

根目录新建一个plugins文件夹新建两个文件pxto-viewport.ts type.ts

然后在 tsconfig.node.json 的includes 配置 "plugins/**/*",

compilerOptions 配置 noImplicitAny:false

image.png

pxto-viewport.js

import type { Options } from './type'
import type { Plugin } from 'postcss'
const defaultOptions = {viewPortWidth: 375,mediaQuery: false,unitToConvert:'px'
}
export const pxToViewport = (options: Options = defaultOptions): Plugin => {const opt = Object.assign({}, defaultOptions, options)return {postcssPlugin: 'postcss-px-to-viewport',//css节点都会经过这个钩子Declaration(node) {const value = node.value//匹配到px 转换成vwif (value.includes(opt.unitToConvert)) {const num = parseFloat(value)const transformValue = (num / opt.viewPortWidth) * 100node.value = `${transformValue.toFixed(2)}vw` //转换之后的值}    },}
}

type.ts

export interface Options {viewPortWidth?: number;mediaQuery?: boolean;unitToConvert?: string;
}

vite.config.ts 引入我们写好的插件

  css:{postcss:{plugins:[pxToViewport()]},},

image.png

这样的话各种屏幕都差不多了。

额外的小知识

比如要增加一个 可以设置全局的字体大小 或者全局背景颜色切换应该怎么做呢?

  1. 安装vueUse
npm i  @vueuse/core
  1. 定义Css变量
:root {--size: 14px;
}
div {height: 50px;color: white;text-align: center;line-height: 50px;font-size: var(--size);
}
  1. 切换字体大小
  <div><button @click="change(36)"></button><button @click="change(24)"></button><button @click="change(14)"></button></div>
import { useCssVar } from '@vueuse/core'
const change = (str: number) => {const color = useCssVar('--size')color.value = `${str}px`
}

useCssVar 的底层原理就是

document.documentElement.style.getPropertyValue('--size')
读取就是get设置就是set 只要想切换的页面用这个css变量就可以了,如果想持久存储就用localstorage

image.png

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619696.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JDK介绍

JDK,JRE和JVM之间的关系 JVM是运行环境&#xff0c;JRE是含运行环境和相关的类库&#xff0c;跟node环境是一个意思 JDK目录介绍 目录名称说明bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。conf该路径下存放了JDK的相关配置文件include该路径下存放了一些…

【算法训练-链表】合并两个有序链表、合并K个有序链表

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;首先&#xff0c;链表对应的数据结构在这篇Blog中&#xff1a;【基本数据结构 一】线性数据结构&#xff1a;链表&#xff0c;基于对基础知识的理解来进行题目解答。…

alias命令手册

alias&#xff1a;查看和定义别名 功能描述 alias命令用来设置指令的别名。使用alias时&#xff0c;用户可以使用单引号 ‘ ‘ 将原来的命令引起来&#xff0c;防止特殊字符导致错误。 alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名&#xff0c;…

Ubuntu学习之alias命令

Ubuntu学习之alias命令 1.1 alias功能介绍 当我们经常需要在命令窗键入复杂冗长的命令时&#xff0c;alias就派上用场啦。alias允许用户为命令创建简单的名称或缩写&#xff0c;哪怕这个缩写只有一个字符。即为指令设置别名。 1.2 alias语法 语法&#xff1a;alias [name”va…

linux alias命令路径,Linux alias命令

本文概述 Linux的” alias”命令将shell中的一个字符串替换为另一个字符串。这是一个shell内置命令。它将复杂的命令转换为更简单的命令, 换句话说, 通过将其替换为更简单的命令来创建快捷方式。 在命令行中使用”alias”会创建一个临时的”alias”。临时alias仅在退出外壳程序…

git alias

git alias 其实之前就用过一些 alias&#xff0c;比如说 git reflog show 就是 git log -g --abbrev-commit --prettyoneline 的 alias&#xff0c;一般 alias 可以存储到 git 的 config 文件&#xff0c;repo 等级的在 .git 下&#xff0c;global 的一般在 ~/.gitconfig 或者…

【ubuntu】alias命令

目录 1 alias的作用 2 语法 &#xff08;1&#xff09;简单命令 &#xff08;2&#xff09;多条命令 3 alias永久化 &#xff08;1&#xff09;启动vim编辑器 &#xff08;2&#xff09;进入编辑模式 &#xff08;3&#xff09;退出 &#xff08;4&#xff09;source使…

Elasticsearch:Index alias

现在让我们来谈谈 Elasticsearch 最简单和最有用的功能之一&#xff1a;别名 &#xff08;alias)。为了区分这里 alias 和文章 “Elasticsearch : alias 数据类型”&#xff0c;这里的别名&#xff08;alias&#xff09;指的是 index 的别名。 别名正是他们听起来的样子; 它们是…

Linux alias 的用法

Linux alias 的用法 作者: Sway 1. 啥是alias alias的英文意思是别名. 通俗来说 alias 的概念是让方便你写一段非常非常小的小程序 如 : sway:~$ alias alias lsls --colorauto这里的意思是当你输入 ls 的时候就等同输入 ls --colorauto 但是当我们切换用户的时候 alias …

Nginx中alias与root的区别

目录&#xff1a; 一、区别二、举例说明1三、举例说明2 一、区别 Nginx指定文件路径有两种方式root和alias&#xff0c;这两者的用法区别在于对URI的处理方法不同。 二、举例说明1 alias&#xff1a; location /i/{ alias /usr/local/nginx/html/admin/&#xff1b;} #若…

详解nginx的root与alias

文章目录 1. 结论2. 详解root2.1 基本用法2.2 location的最左匹配原则2.3 index2.4 nginx location解析url工作流程2.5 末尾/ 3. 详解alias3.1 基本用法 4. 特殊情况4.1 alias指定文件4.2 root指定文件 nginx版本: 1.18.0 1. 结论 location命中后 如果是root&#xff0c;会把…

Linux命令之alias

在Linux中&#xff0c;alias命令的功能是设置命令的别名&#xff0c;用以简写命令&#xff0c;提高操作效率。根据参数的不同&#xff0c;该命令可查看已设定的别名&#xff0c;或为命令设置新的别名。对于用户自定义别名&#xff0c;仅当前登录期内有效&#xff1b;也可修改配…

Linux之alias命令

回复【1001】获取 linux常用命令速查手册 Linux alias命令用来设置指令的别名&#xff0c;对一些较长的命令进行简化。使用alias时&#xff0c;必须使用单引号将原来的命令包含&#xff0c;防止特殊字符导致错误。 命令格式 alias [-p] [name[value] ...] 命令功能 简化较长…

别名机制alias详解——一个让你少敲键盘的偷懒方式

别名机制alias——让你少敲键盘的偷懒方式 目录 别名机制alias——让你少敲键盘的偷懒方式样例环境1.从一个例子开始&#xff1a;2.别名机制alias&#xff1a;2.1 什么是alias&#xff1a;2.2 alias怎么用&#xff1a;2.3 alias的注意事项&#xff1a; 参考文献&#xff1a; 样…

Linux基础——别名(alias)

一、啥是别名? 别名&#xff08;alias&#xff09;是某个命令或者某一组命令的代称&#xff0c;和我们的小名或者外号一样&#xff0c;比如一些少数民族或者复姓的同学名字可能比较长&#xff0c;那我们一般不会每次都喊全名&#xff0c;而是用一个能特指他的另外一个名字称呼…

Linux——alias命令(设置命令别名)

Linux——alias命令&#xff08;设置命令别名&#xff09; alias 是shell内建命令&#xff08;即shell中自带的命令&#xff09;&#xff0c;它可以将常用的命令以及它的参数创建一个别名&#xff0c;来减少命令的输入量 我们常用的一些命令就是别名 eg&#xff1a;ls 、ll 1…

GIthub 无法访问使用Watt Toolkit加速

一、使用 Watt Toolkit Watt Toolkit 是一款加速软件&#xff0c;原名是 Steam&#xff0c;后来改名为 Watt Toolkit&#xff0c;其可以让原本无法访问的 Steam 游戏社区、 GitHub 、谷歌验证码等国内难以访问的网页正常访问。 三种下载方式&#xff1a; Watt Toolkit 官网下…

【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制

【JavaEE】Spring事务&#xff08;2&#xff09; 文章目录 【JavaEE】Spring事务&#xff08;2&#xff09;1. Transactional 参数介绍1.1 value 和 transactionManager1.2 timeout1.3 readOnly1.4 后面四个1.5 isolation 与 propagation 2. Spring 事务隔离级别 - isolation2.…

房屋中介费怎么收取才合理?快看看别再花冤枉钱了

[摘要]本文讲述了什么是房屋中介&#xff0c;房屋中介费是如何收取的&#xff0c;房屋中介费的收取标准是什么。希望可以对即将用到房屋中介的网友们有所帮助。 买房的朋友都应该知道有房产中介这回事&#xff0c;甚至有的是通过房产中介的服务来买的房&#xff0c;当然&#x…