vue3【实战】响应式主题(实时获取页面比例,指定尺寸内按比例缩放,超过指定尺寸保持高度不变的图片)

实时获取页面比例

  • 移动端设计稿通常为 750px
  • 当前窗口的宽为 window.innerWidth
  • 通过 useResizeObserver 可实时监听窗口大小的变化

src/stores/theme.ts

export const useThemeStroe = defineStore('theme', () => {const rate = ref(0)function setRate(newRate: number) {rate.value = newRate}return { rate, setRate }
})

src/App.vue

import { useThemeStroe } from '@/stores/theme'const themeStroe = useThemeStroe()useResizeObserver(document.body, () => {const w_width = window.innerWidth// 设计稿的宽度const contentWidth = 750themeStroe.setRate((w_width / contentWidth).toFixed(2))
})

src/pages/index.vue

页面中获取比例

import { useThemeStroe } from '@/stores/theme'const themeStroe = useThemeStroe()
:style="{ height: themeStroe.rate * 24 + 'rem' }"

指定尺寸内按比例缩放,超过指定尺寸保持高度不变的图片

在这里插入图片描述

src/pages/index.vue

页面中的图片高度根据随窗口变化动态更新 rate 计算得到

  <imgclass="w-full"style="object-fit: cover":style="{ height: themeStroe.rate * 24 + 'rem' }"src="https://img0.baidu.com/it/u=998088135,496941855&fm=253&fmt=auto&app=138&f=PNG?w=600&h=300"/>
import { useThemeStroe } from '@/stores/theme'const themeStroe = useThemeStroe()

src/App.vue

import { useThemeStroe } from '@/stores/theme'const themeStroe = useThemeStroe()useResizeObserver(document.body, () => {const w_width = window.innerWidth// 设计稿的宽度const contentWidth = 750themeStroe.setRate(w_width < contentWidth ? +(w_width / contentWidth).toFixed(2) : 1)
})

src/stores/theme.ts

export const useThemeStroe = defineStore('theme', () => {const rate = ref(0)function setRate(newRate: number) {rate.value = newRate}return { rate, setRate }
})

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python数据结构 - 字典

Python字典是另一种可变容器模型,可存储任意类型对象&#xff0c;由于字典是无序的所以不支持索引和切片。 格式为&#xff1a;dict {k1:v1, k2:v2, k3:v3}。 d {"name":"golemon", "age":999}key不可以重复key不能是可变数据类型key一般为字…

【Android】多角度看handler--looper的阻塞

在【Android】app中阻塞的looper为什么可以响应touch事件_消息队列阻塞为什么还能响应点击事件-CSDN博客 里面&#xff0c;我们查看到input事件唤醒应用中的looper阻塞&#xff0c; 作为对比&#xff0c;我们再看看广播中的唤醒&#xff0c;我们知道&#xff0c;在注册的广播…

[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作

​​​​​​Generation of Complex 3D Human Motion by Temporal and Spatial Composition of Diffusion Models L Mandelli, S Berretti - arXiv preprint arXiv:2409.11920, 2024 通过时间和空间组合扩散模型生成复杂的3D人物动作 摘要 本文提出了一种新的方法&#xff0…

青动CRM V3.2.1

全面解决企业销售团队的全流程客户服务难题旨在助力企业销售全流程精细化、数字化管理&#xff0c;全面解决企业销售团队的全流程客户服务难题&#xff0c;帮助企业有效盘活客户资源、量化销售行为&#xff0c;合理配置资源、建立科学销售体系&#xff0c;提升销售业绩。标准授…

k8s上安装prometheus

一、下载对应的kube-prometheus源码 github地址&#xff1a;https://github.com/prometheus-operator/kube-prometheus 根据自己的Kubernetes版本下载对应的Kube-prometheus源码。 kubectl version 我的kubernetes的版本为v1.30.3固下载master分支的源码 1&#xff09;进入…

地区环境保护支出数据(2007-2023年)

政府环境保护支出是指ZF在环境保护方面投入的CZ资金&#xff0c;用于自然生态保护、污染防治、环境监测与监管等多个领域&#xff0c;旨在改善环境质量、防范环境风险以及促进可持续发展 一、数据介绍 数据名称&#xff1a;地区环境保护支出数据 数据范围&#xff1a;中国31…

【MATLAB代码】三维空间上的RSS(信号强度)定位,n个锚点自适应(锚点数>3即可)(源代码下载链接)

文章目录 代码概况源代码运行结果RSS定位原理讲解1.基本概念2.信号强度与距离关系3. 定位原理 其他情况 代码概况 基于MATLAB的定位程序&#xff0c;使用RSS&#xff08;接收信号强度&#xff09;来估计距离&#xff0c;再由距离计算位置&#xff0c;用于三维空间上的定位。调…

生活中重大决定,除了你自己,谁也帮不了你!

随着年龄增长&#xff0c;越来越发现&#xff1a;生活是非常现实&#xff0c;更现实的社会&#xff0c;自己除了自己&#xff0c;谁也帮不了你。 因此&#xff0c;一个人的生活是好是坏&#xff0c;往往取决于我们自己的努力程度&#xff0c;越努力才会越幸运。没有伞的孩子&am…

【相机】标准 GenICam 通用相机标准

绝大多数相机或者视频卡的应用编程接口&#xff08;API&#xff09;是支持基于GenICam的。 GenICam的目标是提供一个标准化、统一的编程接口&#xff0c;用于基于不同物理接口&#xff08;CoaXPress, GigE Vision等&#xff09;或来自不同供应商的相机和帧捕获器。 GenICam 是…

RSpec简析及应用案例

文章目录 RSpec简析RSpec 的特点如何开始使用 RSpec示例 应用案例控制器测试创建 PostsController 的测试 请求测试创建请求测试 集成测试创建集成测试 RSpec简析 RSpec 是一个流行的 Ruby 测试工具&#xff0c;它支持行为驱动开发&#xff08;BDD&#xff09;。RSpec 提供了一…

消息中间件 Kafka 快速入门与实战

1、概述 最近感觉上班实在是太无聊&#xff0c;打算给大家分享一下Kafka的使用&#xff0c;本篇文章首先给大家分享三种方式搭建Kafka环境&#xff0c;接着给大家介绍kafka核心的基础概念以及Java API的使用&#xff0c;最后分享一个SpringBoot的集成案例&#xff0c;希望对大…

Xcdoe快速更新安装的小Tips

1. 下载Xcdoe 从AppStore更新估计有些慢的话&#xff1b; 可用下载工具从苹果开发者网站直接下载&#xff1a;https://developer.apple.com/download/all/下载完成后解压出来的 Xcode App文件 可以直接拖入 应用程序 文件夹&#xff0c;选择 替换 即可&#xff1b; 2. 下载模…

Ubuntu的基本用法与指令(为后面学习ROS打基础)

目录 0.声明&#xff1a;此博客的部分内容来自B站up主 机器人工匠阿杰&#xff0c;欢迎大家前往up主视频区学习&#xff08;本人正在跟随此up主的视频学习无人机的部分相关知识&#xff09; 1.win空格&#xff08;切换中英文&#xff09; 2.终端指令 1.ls&#xff1a;显示主…

HTTP 和 HTTPS 协议的区别?

在当今的互联网世界中&#xff0c;我们每天都在使用 HTTP 和 HTTPS 协议&#xff0c;但你是否认真了解它们之间的区别&#xff1f;在这篇博客中&#xff0c;我们将深入分析这两种协议的特点、优势及其适用场景&#xff0c;并提供一些示例代码来帮助大家更好地理解。 什么是 HT…

mysql学习教程,从入门到精通,SQL LIKE 运算符(28)

1、SQL LIKE 运算符 在SQL中&#xff0c;LIKE运算符主要用于在WHERE子句中搜索列中的指定模式。它通常与通配符一起使用&#xff0c;如%&#xff08;代表零个、一个或多个字符&#xff09;和_&#xff08;代表单个字符&#xff09;&#xff0c;以执行模糊匹配。下面是一个使用…

算法分类自动驾驶主要算法介绍

算法的基本分布结构 自动驾驶主要算法介绍 算法的基本分布结构 行业算法&#xff1a; 行业算法是根据特定行业和专业领域的特定问题&#xff0c;将计算逻辑模块调取组合&#xff0c;并应用此行业数据训练形成的计算模式。常见的行业算法如无人驾驶&#xff0c;AI医疗诊断&am…

Android13高通平台拨打/接听只有免提模式,无听筒模式

背景&#xff1a;由于没有听筒&#xff0c;所以直接在电话状态下只有免提模式&#xff1b; 修改记录&#xff1a; qssi/packages/services/Telecomm/src/com/android/server/telecom/CallAudioRouteStateMachine.javaprivate void createStates(int earpieceControl) {switch…

数据结构-3.4.队列的基本概念

一.队列的定义&#xff1a; 1.图解&#xff1a; 2.重要术语&#xff1a; 空队列&#xff1a;队列中不含任何元素。 二.队列的基本操作&#xff1a; 三.总结&#xff1a;

【Kubernetes】常见面试题汇总(三十五)

目录 87.简述 pod 中 readiness 和 liveness 的区别和各自应用场景。 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-113 属于【Kubernetes】的生产应…

神经网络(一):神经网络入门

文章目录 一、神经网络1.1神经元结构1.2单层神经网络&#xff1a;单层感知机1.3两层神经网络&#xff1a;多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…