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

news2024/11/6 3:00:56

实时获取页面比例

  • 移动端设计稿通常为 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 = 750
  themeStroe.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 计算得到

  <img
    class="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 = 750
  themeStroe.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.coloradmin.cn/o/2166470.html

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

相关文章

系统分析师13:软件工程

文章目录 1 内容概要2 信息系统的生命周期2.1 单个系统开发周期 3 软件开发方法4 软件开发模型4.1 概述4.2 其他经典模型4.3 瀑布模型4.4 V模型4.5 喷泉模型4.6 W模型4.7 迭代与增量4.8 增量模型与螺旋模型4.9 构建组装模型4.10 快速应用开发模型&#xff08;RAD&#xff09;4.…

SQL Server的关系代数(选择投影连接除)

目录 1.博客素材来源 2.传统的关系运算 3.专门的关系运算 3.1选择&#xff1a; 3.2投影&#xff1a; 3.3自然连接&#xff1a; 3.4等值链接&#xff1a; 3.5自然连接&#xff1a; 3.6除法&#xff1a; 1.博客素材来源 这个是某个大学老师在新冠时候的这个线上课程&am…

Redisson分布式锁的概念和使用

Redisson分布式锁的概念和使用 一 简介1.1 什么是分布式锁&#xff1f;1.2 Redisson分布式锁的原理1.3 Redisson分布式锁的优势1.4 Redisson分布式锁的应用场景 二 案例2.1 锁竞争案例2.2 看门狗案例2.3 参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff…

maven报错:Unresolved plugin ‘org.apache.maven.pluginsmaven-resources-plugin‘

maven报错&#xff1a;Unresolved plugin: ‘org.apache.maven.plugins:maven-resources-plugin‘ 最近初学java&#xff0c;这里记录一下报错出现的原因以及解决办法 问题示例 如图所示&#xff0c;就是在创建一个项目之后对应插件的部分有爆红 问题出现的原因 简单来说就…

Pygame中Sprite实现逃亡游戏3

在《Pygame中Sprite实现逃亡游戏2》中实现了飞龙和飞火的显示。接下来实现玩家跳跃效果&#xff0c;如图1所示。 图1 玩家跳跃效果 1 按键响应 当玩家按下键盘中空格按键后&#xff0c;游戏中的玩家就会跳跃&#xff0c;用于躲避飞火。在while True循环判断按键的代码中&…

开放原子开源基金会网站上的开源项目EasyBaaS存在内存泄露缺陷

今天我仍然发布一个开放原子开源基金会网站上的开源项目EasyBaaS&#xff0c;这个开源项目的捐赠主体是招商银行股份有限公司。该项目的是一个基于Linux环境的区块链节点管理工具&#xff0c;提供一键部署节点、实时监控及管理运维等功能&#xff0c;从搭建节点、启停节点、节点…

Python | Leetcode Python题解之第436题寻找右区间

题目&#xff1a; 题解&#xff1a; class Solution:def findRightInterval(self, intervals: List[List[int]]) -> List[int]:n len(intervals)starts, ends list(zip(*intervals))starts sorted(zip(starts, range(n)))ends sorted(zip(ends, range(n)))ans, j [-1]…

Qt网络编程——QTcpServer和QTcpSocket

文章目录 核心APITCP回显服务器TCP回显客户端 核心API QTcpServer用于监听端口和获取客户端连接 名称类型说明对标原生APIlisten(const QHostAddress&, quint16 port)方法绑定指定的地址和端口号&#xff0c;并开始监听bind和listennextPendingConnection()方法从系统中获…

【2024/9/25更新】最新版植物大战僵尸V2.5.1发布啦

下载链接⬇️⬇️ 最新版V2.5.1下载 点击下载 历史版本下载 点击下载 更新公告 2.5.1版本更新公告: 关卡阅整 两面夹击关卡系列关卡降低出怪倍率 两面夹击关卡出怪种类调整 两面夹击部分关卡初始阳光调整 两面夹击关卡中可使用投手类植物- 两面夹击关卡中的脑子血量…

远程升级频频失败?原因竟然是…

最近有客户反馈在乡村里频繁出现掉线的情况。 赶紧排查原因&#xff01; 通过换货、换SIM卡对比排查测试&#xff0c;发现只有去年采购的那批模块在客户环境附近会出现掉线的情况&#xff0c;而今年采购的模块批次就不会掉线。。。 继续追究原因&#xff0c;联系对应的销售工…

基于springboot vue 大学生竞赛管理系统设计与实现

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

路径报错问题

项目场景&#xff1a; 假设这是我的项目结构&#xff0c;我现在需要在aa.js文件中引入并使用aa.geojson文件&#xff0c; 问题&#xff1a; 当我引入路径是const filePath ../geo/aa.geojson&#xff1b;的时候&#xff0c;系统报错 "aa.geojson is not Found",找不…

【WRF数据介绍第二期】气象驱动场数据介绍及下载

WRF数据介绍第二期&#xff1a;气象驱动场数据介绍及下载 WRF官网-Free Data数据下载 EAR5数据数据下载 参考 WRF运行流程如下&#xff0c;所需的外部数据源包括静态地理数据&#xff08;Static Geography Data&#xff09;和网格气象数据&#xff08;Gridded Meteorological D…

基于AI网关的智慧煤矿安全监测应用

煤矿安全一直是矿业管理的重中之重。由于煤矿环境的恶劣与复杂性&#xff0c;例如工作中间环节多、设施设备多样且集中、空间狭小、环境闭塞、有害气体隐患、粉尘聚集等&#xff0c;针对煤矿的安全监测和防范时常面临着极大的挑战。 随着AI技术的发展与普及&#xff0c;依托AI实…

关于前端框架的对比和选择

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于【前端框架的对比和选择】相关内容&…

力扣 中等 275.H指数

文章目录 题目介绍题解 题目介绍 题解 h指数不一定都满足citations[mid] n - mid&#xff0c;例如[0,1,4,5,6]的h指数是3。 题目说了用对数时间复杂度来实现&#xff0c;说明一定是用二分法&#xff0c;草纸上推导一下即可得出以下代码。 class Solution {public int hInde…

MySQL自动测试框架Test Framework工具实践

导读 之前的文章&#xff08;《MySQL自动测试框架Test Framework浅析》&#xff09;从源码级别对MySQL自动测试框架Test Framework进行了简要分析&#xff0c;本文接下来从实践的角度介绍Test Framework工具的使用方法。 1 简介 Test Framework主要应用于MySQL等相关数据库项…

Docker 容器技术:颠覆传统,重塑软件世界的新势力

一、Docker简介 什么是docker Docker 是一种开源的容器化平台&#xff0c;它可以让开发者将应用程序及其所有的依赖项打包成一个标准化的容器&#xff0c;从而实现快速部署、可移植性和一致性。 从功能角度来看&#xff0c;Docker 主要有以下几个重要特点&#xff1a; 轻量…

用Python实现运筹学——Day 3: 线性规划模型构建

一、学习内容 线性规划模型构建的步骤与技巧 线性规划&#xff08;Linear Programming, LP&#xff09;模型构建是运筹学中的核心内容&#xff0c;通常用于求解资源的最优分配问题。要从实际问题中提取出一个线性规划模型&#xff0c;需要按照以下步骤进行&#xff1a; 问题描…

JavaWeb——Vue组件库Element(1/6):快速入门(什么是Element,安装,引入ElementUI组件库,复制组件代码,启动项目 )

目录 什么是Element 快速入门 安装 引入ElementUI组件库 访问官网&#xff0c;复制组件代码 启动项目 小结 了解完前端的工程化之后&#xff0c;接下来了解一门新的前端技术&#xff1a;Vue 的组件库 Element。 学习完 Element 之后&#xff0c;即使作为一名 Java 后…