【Vue3+Ts project】认识 @vueuse/core 库

news2024/11/26 21:34:12

目标:

根据屏幕宽度改变 实现动态获取盒子的宽度
 

目录

目标:

一、javascript实现

二、@vueuse/core 库实现


一、javascript实现

1.首先 window.innerWidth 获取当前屏幕宽度,然后将 盒子宽度 除 375 乘 当前屏幕宽度

150 / 375 * window.innerWidth

2.将获取的动态盒子宽度赋值给 一个变量

import { ref } from 'vue';

const width = ref(0)
width.value = 150 / 375 * window.innerWidth

3.将获取盒子逻辑代码封装函数 并在进入页面后组件加载结束后执行,然后将宽赋值给swipe标签 :width="width"

import { onMounted, ref } from 'vue';

const width = ref(0)

const SwipeWidth = () => width.value = 150 / 375 * window.innerWidth
onMounted(() => {
    SwipeWidth()
})

<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

这里在进入页面 或 刷新页面 后是实现了。但是在开发过程中 拉动屏幕宽度是没有改变的

4.使用 resize事件 当屏幕改变时就执行 封装逻辑代码函数,最后在组件销毁 也就是组件被DOM 移除时清除

<script setup lang="ts">
import { onMounted, ref } from 'vue';

const width = ref(0)

const SwipeWidth = () => width.value = 150 / 375 * window.innerWidth
onMounted(() => {
    SwipeWidth()

    window.addEventListener('resize', () => {
        console.log(window.innerWidth);
    })
})

onUnmounted(()=>{
      window.addEventListener('resize', SwipeWidth)
})

</script>


<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

代码

<script setup lang="ts">
import { onMounted, ref } from 'vue';

const width = ref(0)

const SwipeWidth = () => width.value = 150 / 375 * window.innerWidth
onMounted(() => {
    SwipeWidth()

    window.addEventListener('resize', () => {
        console.log(window.innerWidth);
    })
})

onUnmounted(()=>{
      window.addEventListener('resize', SwipeWidth)
})

</script>


<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

二、@vueuse/core 库实现

1.下载 @vueuse/core库到开发者依赖

npm install -D @vueuse/core

yarn add @vueuse/core

pnpm add @vueuse/core

2.引入 useWidthSize 引从他对象内拿到 width,然后swipe标签使用

<script setup lang="ts">
import { useWindowSize } from '@vueuse/core'

const { width } = useWindowSize()
</script>

<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

3.最后也是非常重要的 ,拿到当前屏幕宽度,这里当前屏幕宽度就是 useWidthSize 解构出来的 width ,然后 盒子宽度 除 375 乘 当前屏幕宽度,完成

<script setup lang="ts">
import { useWindowSize } from '@vueuse/core'

const { width } = useWindowSize()
</script>

<template>
<van-swipe :loop="false" :show-indicators="false" 
:width=" 150 / 375 * width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>


 

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

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

相关文章

千万不要跟随这 4 种领导!

​ 见字如面&#xff0c;我是军哥&#xff01; 最近有程序员读者问我&#xff0c;什么样的领导不能跟随&#xff1f;都有哪些坑&#xff01;这个我擅长哈&#xff0c;毕竟职场混迹 15 年&#xff5e; 第一种&#xff0c;技术能力不行还喜欢指手画脚的领导。 第二种&#xff0c;…

鹏云网络分布式块存储社区版问世,首发开源存储解决方案

2023年1月&#xff0c;南京鹏云网络科技有限公司&#xff08;简称&#xff1a;鹏云网络&#xff09;正式宣布开源ZettaStor DBS分布式块存储系统&#xff0c;开放了自研10余年的分布式块存储技术&#xff0c;自此踏上了“自研”与“开源”一体并行的生态闭环之路。 研发十年&am…

python程序获取最新的行政区划名称代码

一、实现目标 最近由于项目需要,需要获取最新的过去全国县以上行政区划的名称和代码。网上虽然有一些资料,但是不是需要积分就是需要会员,而且担心这些资料不是最新的。因此,想着使用程序从官方网站上获取最新的全国行政区划数据。 二、实现思路 1、找到官方最新发布的全国…

c++11 标准模板(STL)(std::basic_ios)(五)

定义于头文件 <ios> template< class CharT, class Traits std::char_traits<CharT> > class basic_ios : public std::ios_base 类 std::basic_ios 提供设施&#xff0c;以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios…

【夜深人静学数据结构与算法 | 第七篇】时间复杂度与空间复杂度

目录 前言&#xff1a; 引入&#xff1a; 时间复杂度&#xff1a; 案例&#xff1a; 空间复杂度&#xff1a; 案例&#xff1a; TIPS&#xff1a; 总结&#xff1a; 前言&#xff1a; 今天我们将来介绍时间复杂度和空间复杂度&#xff0c;我们代码的优劣就是依…

力扣算法刷题Day38|动态规划:斐波那契数 爬楼梯 使用最小花费爬楼梯

力扣题目&#xff1a;#509. 斐波那契数 刷题时长&#xff1a;参考答案后5min 解题方法&#xff1a;动态规划 复杂度分析 时间O(n)空间O(n) 问题总结 无 本题收获 动规五部曲思路 确定dp数组以及下标的含义&#xff1a;dp[i]的定义为&#xff0c;第i个数的斐波那契数值…

VMware虚拟机彻底卸载详细教程

VMware虚拟机彻底卸载 一、彻底卸载过程1.1 停止VMware服务1.2 结束vmware任务1.3 开始卸载VMware1.4 删除注册表信息1.5 删除安装目录 二、vmware 安装教程三、vmware 使用教程 回到目录   回到末尾 一、彻底卸载过程 卸载之前&#xff0c;需要先关闭VMware相关的后台服务…

软件技巧:7款冷门且十分良心的软件

1、Okular 阅读器 Okular是一款来自KDE的通用文档阅读器&#xff0c;支持众多文档格式&#xff0c;如PDF、Postscript、DjVu、CHM、XPS、ePub、图片格式、漫画格式等&#xff0c;支持Windows、macOS与Linux&#xff0c;是科研学术人士阅读文献的好工具&#xff0c;也是电子书爱…

OWASP 之认证崩溃基础技能

文章目录 一、burp爆破用法1.Attack type爆破方式设置2.payload处理3.请求引擎设置4.攻击结果设置5.grap匹配设置 二、常见端口与利用1、文件共享2、远程连接3、Web应用4、数据库 三、爆破案例经验1、暴力破解攻击产生的5个原因或漏洞2、猜测用户名方法3、猜测密码方法 四、实验…

亚马逊云科技中国峰会:Amazon DeepRacer——载着 AI 梦想向前奔跑

目录 一、Amazon DeepRacer 是什么&#xff1f; 二、Amazon DeepRacer 的前世今生 三、Amazon DeepRacer 深度体验 四、2023亚马逊云科技中国峰会 1.中国峰会总决赛 2.自动驾驶赛车名校邀请赛 3.Girls in Tech Show 4.全球联赛 5.报名链接&#xff1a; 一、Amazon Dee…

C++个人通信录管理系统

背景&#xff1a; 使用C编写一个个人通信录管理系统&#xff0c;来完成作业上的一些需求。 1-提供录入个人信息、修改个人信息&#xff08;姓名和出生日期除外&#xff09;、删除个人信息等编辑功能 2-提供按姓名查询个人信息的功能 3-提供查找在5天之内过生日的人员的信息…

【C++初阶】C++STL详解(二)—— string类的模拟实现

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

Internet Relay Chat:mIRC 7.73 Crack

mIRC是一个流行的互联网中继聊天客户端&#xff0c;个人和组织使用它在世界各地的IRC网络上相互交流、共享、玩耍和工作。为互联网社区服务了20多年&#xff0c;mIRC已经发展成为一种强大、可靠和有趣的技术。 Latest News mIRC 7.73 has been released! (June 18th 2023) This…

Linux常用命令——fuser命令

在线Linux命令查询工具 fuser 使用文件或文件结构识别进程 补充说明 fuser命令用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号&#xff0c;那些本地进程使用file&#xff0c;参数指定的本地或远程文件。对于阻塞特别设备&#xff0c;此命令列出了使…

【C语言复习】第六篇、关于C语言操作符的知识

目录 第一部分、常见操作符 第二部分、每个操作符的具体使用 1、算术操作符 1.1、除法运算符 / 1.2、取模运算符 % 2、移位操作符 2.1、左移 << 2.2、右移 >> 3、位操作符 3.1、按位异或的妙用 3.2、按位与的妙用 4、单目操作符 4.1、逻辑反操…

18-1降维与特征选择——偏最小二乘方法(附matlab程序)

1.简述 降维&#xff1a; 比如现在有100维的变量来表征一个东西&#xff0c;我们觉得太冗余复杂了&#xff0c;想降低到10维。但是我们没有确定的筛选依据&#xff0c;直接使用数学工具来实现降维&#xff0c;就好像丢进了一个黑箱&#xff0c;经过抽象、提炼&#xff0c;得到了…

【深度学习】3-3 神经网络的学习- 导数梯度

导数 导数就是表示某个瞬间的变化量&#xff0c;式子如下&#xff1a; 式子的左边&#xff0c;表示f(x)关于x的导数&#xff0c;即f(x)相对于x的变化程度。式子表示的导数的含义是&#xff0c;x的“微小变化”将导致函数f(x)的值在多大程度上发生变化。其中&#xff0c;表示…

AI绘画是什么?怎样提高AI绘画技巧

大家好&#xff0c;我是权知星球&#xff0c;今天跟大家探讨一下AI绘画是什么&#xff1f;怎样才能提高AI绘画技巧的问题。 随着人工智能技术的迅速发展&#xff0c;AI绘画已成为一项具有前瞻性的技术。在过去几年中&#xff0c;涌现出了许多功能强大的人工智能绘画工具&#x…

荣耀加冕!数据猿斩获三项大奖,彰显技术媒体硬实力!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 6月15日及6月16日&#xff0c;由数央网、数央公益联合国内众多媒体共同举办的2023国际绿色零碳节暨ESG领袖峰会、2023国际智造节暨硬科技峰会在北京举行。 该峰会旨在倡导全社会关注气候变化问题&#xff0c;积极采取行动&a…