当前位置: 首页 > news >正文

DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕

共同探索软件研发!敬请关注【宝码香车】
关注描述

csdngif标识

目录

  • DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)
    • 📚前言
    • 📚进入安装好的DeepSeek
    • 📚页面效果
    • 📚指令输入
    • 📚think
      • 📘组件代码
      • 📘调用示例(views/InfiniteScrollView.vue):
      • 📘额外添加的功能和优化:
      • 📘组件特点:
    • 📚代码测试
    • 📚页面效果
    • 📚自己部署 DeepSeek 安装地址
    • 📚相关文章


📚📗📕📘📖🕮💡📝🗂️✍️🛠️💻🚀🎉🏗️🌐🖼️🔗📊👉🔖⚠️🌟🔐⬇️·正文开始⬇️·🎥😊🎓📩😺🌈🤝🤖📜📋🔍✅🧰❓📄📢📈 🙋0️⃣1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣8️⃣9️⃣🔟🆗*️⃣#️⃣

DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)

📚前言

机器学习是 DeepSeek 实现智能化的重要手段。它通过让模型对大量数据进行学习,从而自动发现数据中的模式和规律,并据此进行预测和决策。在图像识别领域,DeepSeek 可以通过对大量图像数据的学习,识别出不同的物体、场景和特征。当输入一张动物图片时,它能够快速准确地判断出动物的种类、年龄、健康状况等信息,其准确性甚至超越了人类的视觉判断能力。

深度学习则是机器学习的一个分支,它通过构建具有多个层次的神经网络模型,对数据进行更深入、更复杂的特征提取和模式识别。以语音识别为例,DeepSeek 利用深度学习技术,能够对语音信号进行精确分析,将语音内容准确转换为文字,并且能够适应不同的口音、语速和语言环境,为语音交互设备的发展提供了有力支持。

📚进入安装好的DeepSeek

0基础3步部署自己的DeepSeek安装步骤

打开搭建好的DeepSeek应用。

DeepSeek应用

进入应用。

进入DeepSeek应用

📚页面效果

页面效果

📚指令输入

已经创建好了一个基于Vue3的组合式API的项目(Composition API),并能正常运行起来,请帮我用 Vue3的组合式API(Composition API) 生成一个 无限滚动(Infinite Scroll)的功能组件,所有代码都保存在components/InfiniteScroll 下的文件夹中。功能组件的script标签中只有setup属性,使用普通 JavaScript 实现,不使用TypeScript。
功能要有,如下属性:
名称 | 说明 | 类型 |默认值
-------- | ----- |-------------------------------------------------------| -----
scrollDisabled | 是否禁用 | boolean | false
scrollDelay | 节流时延,单位为ms | number | 200
scrollDistance | 触发加载的距离阈值,单位为px | number | 0
scrollImmediate | 是否立即执行加载方法,以防初始状态下内容无法撑满容器。 | boolean | true
你有更好的建议也可以添加,要注明。组件定义好后给出完整的调用示例。
下面是现有目录
vueAndDeepseek/
├── src/ # 源代码目录
│ ├── assets/ # 静态资源
│ │ ├── base.css
│ │ ├── main.css
│ │ └── logo.svg
│ ├── components/ # 组件目录
│ │ ├── HelloWorld.vue
│ │ ├── TheWelcome.vue
│ │ ├── WelcomeItem.vue
│ │ ├── Progress/
│ │ │ └── Progress.vue
│ │ ├── Accordion/
│ │ ├── BackToTop/
│ │ ├── Card/
│ │ ├── InfiniteScroll/
│ │ ├── Notification/
│ │ ├── Timeline/
│ │ ├── Tabs/
│ │ └── icons/
│ ├── router/ # 路由配置
│ │ └── index.js
│ ├── stores/ # Pinia 状态管理
│ │ └── counter.js
│ ├── views/ # 页面组件
│ │ ├── ProgressView.vue
│ │ ├── TabsView.vue
│ │ ├── TimelineView.vue
│ │ ├── NotificationView.vue
│ │ ├── CardView.vue
│ │ ├── InfiniteScrollView.vue
│ │ ├── BackToTopView.vue
│ │ ├── AccordionView.vue
│ │ └── AboutView.vue
│ ├── App.vue # 根组件
│ └── main.js # 应用入口
├── public/ # 公共资源目录
├── index.html # HTML 模板
├── package.json # 项目配置
├── vite.config.js # Vite 配置
└── node_modules/ # 依赖包目录

📚think

嗯,我现在要为一个基于Vue3的项目创建一个无限滚动(Infinite Scroll)的组合式API组件。用户已经提供了项目结构,所以我需要确保该组件被正确放置在src/components/InfiniteScroll下,并且不使用TypeScript,只用普通JavaScript。

首先,我得明确组件的功能属性:scrollDisabled、scrollDelay、scrollDistance和scrollImmediate。这些属性都有默认值,需要在setup函数中定义。我应该使用ref来处理这些状态,比如是否禁用滚动,节流时延,以及触发加载的距离。

接下来,我要考虑无限滚动的实现逻辑。这通常涉及到绑定滚动事件和手动触发加载。对于组合式API来说,可以通过传递一个ref来控制可滚动元素的位置。当用户滚动时,计算滚动距离,如果超过了scrollDistance,就触发加载更多内容。但需要考虑节流,这可以通过debounce函数来实现,以避免频繁的触发。

我还要处理禁用滚动的情况。这可能意味着当scrollDisabled为true时,无论用户如何滚动,都不会触发加载。同时,如果scrollImmediate为true,可能在初始状态下就需要加载,比如内容不够撑满时立即触发。

关于组件的结构,我会用一个div作为可滚动容器,绑定其滚动事件。然后,当滚动到达或超过一定距离时,调用loadMore函数。这个函数应该根据scrollImmediate来决定是否立即加载,并且处理节流,以避免多次调用同一个函数。

在组件外部,我需要传递一个loadMore方法给子组件,这样当内容被加载后,可以通过触发事件通知父组件进行更多的数据请求。这样设计允许父组件控制何时和如何加载更多内容。

我还需要确保组件的自适应性,比如在不同设备上的表现。此外,性能优化也是关键,特别是对于移动设备来说,节流至关重要。

最后,我会给出一个完整的调用示例,说明如何在父组件中使用InfiniteScroll组件,并传递必要的属性和方法。同时,可以提供一些更好的建议,比如自定义样式或者结合其他API如Pinia进行状态管理,但这些可能需要额外的配置。

总结一下,我会按照以下步骤来实现这个组件:

在components/InfiniteScroll下创建一个.vue文件。
在script标签中使用setup属性,定义ref变量。
绑定滚动事件,计算滚动距离,并根据阈值触发加载。
处理节流和禁用情况。
提供loadMore方法供子组件调用。
编写样例使用说明。
现在,我需要确保所有代码都在setup函数内,只有普通JS,避免TypeScript。同时,组件的结构要清晰,便于其他开发者理解和扩展。

我会按照以下步骤创建一个无限滚动(Infinite Scroll)的功能组件,并将其保存到 components/InfiniteScroll 文件夹中。

📘组件代码

<template><div ref="scrollContainer" class="infinite-scroll-container"><slot /><div v-if="loading" class="loading-indicator">Loading...</div></div>
</template><script setup>
import { ref, onMounted, onUnmounted, watch, nextTick } from 'vue'const props = defineProps({scrollDisabled: {type: Boolean,default: false},scrollDelay: {type: Number,default: 200},scrollDistance: {type: Number,default: 0},scrollImmediate: {type: Boolean,default: true}
})const emit = defineEmits(['load'])const scrollContainer = ref(null)
const loading = ref(false)
let throttleTimeout = null
let isDestroyed = falseconst checkScrollPosition = () => {if (!scrollContainer.value || props.scrollDisabled) returnconst { scrollTop, scrollHeight, clientHeight } = scrollContainer.valueconst triggerAt = scrollHeight - props.scrollDistanceif (scrollTop + clientHeight >= triggerAt) {loadMore()}
}const loadMore = async () => {if (loading.value || props.scrollDisabled) returnloading.value = truetry {await emit('load')// 加载完成后再次检查是否需要继续加载nextTick(() => {if (!isDestroyed) checkScrollPosition()})} finally {loading.value = false}
}const handleScroll = () => {if (props.scrollDisabled || loading.value) returnif (throttleTimeout) {clearTimeout(throttleTimeout)}throttleTimeout = setTimeout(() => {checkScrollPosition()}, props.scrollDelay)
}onMounted(() => {if (props.scrollImmediate) {nextTick(checkScrollPosition)}window.addEventListener('scroll', handleScroll, true)
})onUnmounted(() => {isDestroyed = truewindow.removeEventListener('scroll', handleScroll, true)if (throttleTimeout) {clearTimeout(throttleTimeout)}
})watch(() => props.scrollDisabled, (newVal) => {if (!newVal) {nextTick(checkScrollPosition)}
})
</script><style scoped>
.infinite-scroll-container {overflow-y: auto;
}.loading-indicator {padding: 1rem;text-align: center;color: #666;
}
</style>

📘调用示例(views/InfiniteScrollView.vue):

<template><InfiniteScroll@load="loadMoreData":scroll-delay="250":scroll-distance="100":scroll-immediate="true":scroll-disabled="isLoading || noMoreData"class="scroll-container"><div v-for="item in items" :key="item.id" class="list-item">{{ item.content }}</div><div v-if="noMoreData" class="end-message">No more data</div></InfiniteScroll>
</template><script setup>
import { ref, onMounted } from 'vue'
import InfiniteScroll from '@/components/InfiniteScroll/InfiniteScroll.vue'const items = ref([])
const page = ref(1)
const isLoading = ref(false)
const noMoreData = ref(false)const loadMoreData = async () => {if (isLoading.value || noMoreData.value) returnisLoading.value = truetry {// 模拟 API 调用const newItems = await mockFetchData(page.value)if (newItems.length === 0) {noMoreData.value = truereturn}items.value = [...items.value, ...newItems]page.value++} finally {isLoading.value = false}
}const mockFetchData = (page) => {return new Promise(resolve => {setTimeout(() => {const hasMore = page < 5resolve(hasMore ? Array.from({ length: 10 }, (_, i) => ({id: page * 10 + i,content: `Item ${page * 10 + i + 1}`})): [])}, 1000)})
}// 初始加载
onMounted(() => {loadMoreData()
})
</script><style scoped>
.scroll-container {height: 80vh;max-width: 600px;margin: 0 auto;border: 1px solid #eee;
}.list-item {padding: 1.5rem;border-bottom: 1px solid #eee;transition: background 0.2s;
}.list-item:hover {background: #f8f8f8;
}.end-message {padding: 1rem;text-align: center;color: #999;
}
</style>

📘额外添加的功能和优化:

  1. 自动销毁监听器(防止内存泄漏)
  2. 加载完成后自动再次检查(确保容器填满)
  3. 支持完全禁用滚动(scrollDisabled)
  4. 加载状态提示
  5. 没有更多数据时的处理
  6. 更好的滚动节流处理
  7. 容器高度自适应

📘组件特点:

  • 自动检测父容器/窗口滚动
  • 支持自定义触发距离
  • 智能节流控制
  • 首次加载自动检测
  • 完善的加载状态管理
  • 自适应内容高度

注意:使用时请确保滚动容器有明确的高度(通过父容器约束或自身样式),否则无法正确触发滚动事件。

📚代码测试

正常

📚页面效果

页面效果

📚自己部署 DeepSeek 安装地址

蓝耘元生代智算云平台地址:https://cloud.lanyun.net/#/registerPage?promoterCode=07100c37a0

📚相关文章

 

———— 相 关 文 章 ————

 

  1. 0基础3步部署自己的DeepSeek安装步骤

  2. DeepSeek 助力 Vue 开发:打造丝滑的步骤条

  3. DeepSeek 助力 Vue 开发:打造丝滑的进度条(Progress Bar)

  4. 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)

  5. 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的折叠面板(Accordion)

  6. 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )

  7. DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)

  8. DeepSeek 助力 Vue 开发:打造丝滑的通知栏(Notification Bar)

  9. DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)

到此这篇文章就介绍到这了,更多精彩内容请关注本人以前的文章或继续浏览下面的文章,创作不易,如果能帮助到大家,希望大家多多支持宝码香车~💕,若转载本文,一定注明本文链接。


整理不易,点赞关注宝码香车

更多专栏订阅推荐:
👍 html+css+js 绚丽效果
💕 vue
✈️ Electron
⭐️ js
📝 字符串
✍️ 时间对象(Date())操作

相关文章:

DeepSeek 助力 Vue 开发:打造丝滑的无限滚动(Infinite Scroll)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

JavaScript 内置对象-Math对象

在JavaScript中&#xff0c;Math 对象提供了一系列与数学相关的静态方法和属性&#xff0c;帮助开发者执行复杂的计算任务。无论是简单的算术运算还是高级的几何、统计计算&#xff0c;Math 对象都能提供强大的支持。本文将详细介绍 Math 对象的主要功能及其使用方法。 一、简…...

硕成C语言22【一些算法和数组的概念】

1.求水仙花数 #include <stdio.h>int main() {//求水仙花数&#xff1a;1.三位数 2.个位的立方十位的立方百位的立方该数int unit, tens, hundreds;for (int i 100; i < 1000; i)//i表示该水仙花数{unit i / 1 % 10;tens i / 10 % 10;hundreds i / 100 % 10;if (…...

Halcon相机标定

1&#xff0c;前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”&#xff0c;然后再将其投影到成像平面&#xff08;图像物理坐标系&#xff09;&#xff0c;最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…...

部门管理(体验,最原始方法来做,Django+mysql)

本人初学&#xff0c;写完代码在此记录和复盘 在创建和注册完APP之后&#xff08;我的命名是employees&#xff09;&#xff0c;编写models.py文件创建表 手动插入了几条数据 1.部门查询 urls.py和views.py在编写之前&#xff0c;都要注意导入对应的库 urls.py&#xff1a;…...

clickhouse集群搭建

Clickhouse集群搭建 文章目录 Clickhouse集群搭建安装包下载clickhouse单机安装默认安装默认数据库目录更改默认数据目录 2分片-1副本-3节点集群搭建1. 配置hosts2. 修改每个主机的主机名3. 配置文件上传配置文件分布chnode1配置文件chnode2配置文件chnode3配置文件 4. 重启cli…...

250214-java类集框架

单列集合是list和set&#xff0c;list的实现类有ArrayList和LinkedList&#xff0c;前者是数组实现&#xff0c;后者是链表实现。list和set&#xff0c;前者有序、可重复&#xff0c;后者无序不可重复。 1.单列集合 1.1. list java.util.List接口继承自Collection接口&#…...

二叉树(C语言版)

文章目录 二叉树完全二叉树和满二叉树二叉搜索树基本操作实现代码运行结果 分析红黑树2-3-4树(理论模型)红黑树(实际实现) 二叉树 树是一种层次结构&#xff0c;它在现实生活中是广泛存在的&#xff0c;比如&#xff1a;族谱(family tree)&#xff0c;组织机构&#xff0c;目录…...

ASP.NET Core 面试宝典【刷题系列】

文章目录 引言1、什么是 dot net core 的 startup class?2、什么是中间件?3、application builder 的 use 和 run 方法有什么区别?4、dot net core 管道里面的map拓展有什么作用?5、dot net core 里面的路径是如何处理的?6、如何在 dot net core 中激活 session 功能?7、…...

案例-02.部门管理-查询

一.查询部门-需求 二.查询部门-思路 API接口文档 三.代码实现 1.controller层&#xff1a;负责与前端进行交互&#xff0c;接收前端所发来的请求 注&#xff1a;Slf4j用于记录日志使用&#xff0c;可以省略private static Logger log LoggerFactory.getLogger(DeptControlle…...

src和href区别

src和href区别 (1)请求资源类型不同(2)作用结果不同(3)解析方式不同 (1)请求资源类型不同 href 用来建立文档和元素之间的链接(是引用),常用的有a、linksrc 在请求src资源时候会将指向的资源下载并且应用到文档中(引入),常用的有script、iframe、image。 (2)作用结果不同 hr…...

Java每日精进·45天挑战·Day19

第一部分&#xff1a;移除数字以形成最小数的贪心算法实现 在编程的世界里&#xff0c;我们经常遇到需要对字符串表示的数字进行操作的问题。今天&#xff0c;我们要深入探讨一个具体的挑战&#xff1a;给定一个以字符串形式表示的非负整数 num 和一个整数 k&#xff0c;我们的…...

区块链的交易管理和共识机制

区块链的交易管理和共识机制是其核心功能&#xff0c;以下为你详细介绍它们的实现方式&#xff1a; 交易管理的实现 交易发起 • 用户使用钱包软件创建一笔交易&#xff0c;该交易包含发送方地址、接收方地址、转账金额等关键信息。同时&#xff0c;发送方会使用自己的私钥对…...

最新国内 ChatGPT Plus/Pro 获取教程

最后更新版本&#xff1a;20250202 教程介绍&#xff1a; 本文将详细介绍如何快速获取一张虚拟信用卡&#xff0c;并通过该卡来获取ChatGPT Plus和ChatGPT Pro。 # 教程全程约15分钟开通ChatGPT Plus会员帐号前准备工作 一个尚未升级的ChatGPT帐号&#xff01;一张虚拟信用卡…...

Apollo 9.0 速度动态规划决策算法 – path time heuristic optimizer

文章目录 1. 动态规划2. 采样3. 代价函数3.1 障碍物代价3.2 距离终点代价3.3 速度代价3.4 加速度代价3.5 jerk代价 4. 回溯 这一章将来讲解速度决策算法&#xff0c;也就是SPEED_HEURISTIC_OPTIMIZER task里面的内容。Apollo 9.0使用动态规划算法进行速度决策&#xff0c;从类名…...

Apache Iceberg 与 Apache Hudi:数据湖领域的双雄对决

在数据存储和处理不断发展的领域中&#xff0c;数据湖仓的概念已经崭露头角&#xff0c;成为了一种变革性的力量。数据湖仓结合了数据仓库和数据湖的最佳元素&#xff0c;提供了一个统一的平台&#xff0c;支持数据科学、商业智能、人工智能/机器学习以及临时报告等多种关键功能…...

【LeetCode Hot100 普通数组】最大子数组和、合并区间、旋转数组、除自身以外数组的乘积、缺失的第一个正整数

普通数组 1. 最大子数组和&#xff08;Maximum Subarray&#xff09;解题思路动态规划的优化解法&#xff08;Kadane 算法&#xff09;核心思想 代码解析 2. 合并区间&#xff08;Merge Intervals&#xff09;解题思路代码实现 3. 旋转数组&#xff08;Rotate Array&#xff09…...

共享存储-一步一步部署ceph分布式文件系统

一、Ceph 简介 Ceph 是一个开源的分布式文件系统。因为它还支持块存储、对象存储&#xff0c;所以很自 然的被用做云计算框架 openstack 或 cloudstack 整个存储后端。当然也可以单独作 为存储&#xff0c;例如部署一套集群作为对象存储、SAN 存储、NAS 存储等。 二、ceph 支…...

19.Python实战:实现对博客文章的点赞系统

Flask博客点赞系统 一个基于Flask的简单博客系统&#xff0c;具有文章展示和点赞功能。系统使用MySQL存储数据&#xff0c;支持文章展示、点赞/取消点赞等功能。 功能特点 文章列表展示文章详情查看&#xff08;模态框展示&#xff09;点赞/取消点赞功能&#xff08;每个IP只…...

【stm32】定时器输出PWM波形(hal库)

一. PWM基本原理 PWM是一种通过调节信号的占空比&#xff08;Duty Cycle&#xff09;来控制输出平均电压的技术。占空比是指高电平时间与整个周期时间的比值。例如&#xff1a; - 占空比为50%时&#xff0c;输出平均电压为电源电压的一半。 - 占空比为100%时&#xff0c;输出始…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...