‘元素.style.样式名‘获取不到样式,应该使用Window.getComputedStyle()获取正真的样式
一、问题描述
有一次,想通过js获取一个元素的样式的某个属性状态而去执行不同的逻辑代码,结果发现获取的样式总是不对,基本为空。(通过元素.style.样式名的方式去获取。)
通过打印发现,所有的属性均存在,但是值都没有,一开始以为是页面还没有渲染,样式值没有计算才导致获取不到值,后面经过实验,发现也不是(在Vue3中通过nextTick()函数试过)或者说还没有到这一步。而通过JavaScript设置的样式值没有问题,可以获取。
二、发现问题
经过查阅资料发现:使用元素.style.样式名只能获取到元素的内联样式,也就是行内样式,而无法获取到正真计算后的样式。也就是说通过类名设置和外联样式均无法被获取到。
语法:元素.style.样式名
注意:通过style属性设置和读取的都是内联样式,无法读取样式表中的样式。
我们通过JavaScript获取元素然后设置的样式也属于行内样式。
通过打印整个元素我们发现,'style'只是元素上的一个属性,他和其他的样式共同作用才能最终决定元素的样子,这当然需要浏览器计算所有的样式后才能决定。
所以当我们通过
元素.style.样式名去获取样式时,只是获取到元素身上style属性的所拥有的样式,这或许不会符合我们的期望。
三、解决(Window.getComputedStyle())
使用:
Window.getComputedStyle()
它允许你获取到一个元素的最终计算样式,即该元素在页面上实际呈现的样式。这些样式不仅包括内联样式,还包括外部样式、继承的样式、动态计算的样式(如 display, color 等)以及伪元素的样式
Window.getComputedStyle()方法返回一个对象,该对象在应用活动样式表并解析这些值可能包含的任何基本计算后报告元素的所有 CSS 属性的值。私有的 CSS 属性值可以通过对象提供的 API 或通过简单地使用 CSS 属性名称进行索引来访问。
MND-Window.getComputedStyle()
-
该方法第一个参数必须是一个
element元素,返回的对象与从元素的 style 属性返回的对象具有相同的类型,并且从getComputedStyle返回的对象是只读的。 -
第二个参数可选,为
要匹配的伪元素的字符串,主要用于获取伪元素的样式。注意如果你只需要获取普通元素的样式,这个参数应该不填或者填null。如:获取某个元素的::aftergetComputedStyle(element, "::after")。
使用Window.getComputedStyle()就可以通过JavaScript去获取当前元素的所有样式了,如果你的样式是变化的,而没有获取到正确的样式,那么此时才应该考虑获取时机是否正确。
还有一点需要注意的是:window.getComputedStyle 会返回计算后的所有样式,这会迫使浏览器更早的进行样式计算,这可能会让浏览器做不少多余的的工作,尤其是当你在大规模的 DOM 操作或动画过程中频繁调用时。所以为了避免不必要的性能问题,最好避免在频繁的动画或循环中多次调用 getComputedStyle。
相关文章:
‘元素.style.样式名‘获取不到样式,应该使用Window.getComputedStyle()获取正真的样式
一、问题描述 有一次,想通过js获取一个元素的样式的某个属性状态而去执行不同的逻辑代码,结果发现获取的样式总是不对,基本为空。(通过元素.style.样式名的方式去获取。) 通过打印发现,所有的属性均存在&…...
双目视觉:reprojectImageTo3D函数
前言 reprojectImageTo3D 是 OpenCV 中用于从视差图生成三维点云的函数。它的原理是利用视差图和相机的校准参数,通过三角测量法,计算每个像素对应的三维坐标。以下内容根据源码分析所写,觉得可以的话,点赞收藏哈!&am…...
Arduino Uno简介与使用方法
目录 一、Arduino Uno概述 1. 硬件特性 2. 开发环境 二、Arduino Uno的基本使用方法 1. 硬件连接 2. 软件编程 三、Arduino Uno编程基础 1. 基本语法 2. 常用函数 四、Arduino Uno应用举例 1. LED闪烁 2. 温度检测 3. 超声波测距 五、Arduino Uno的扩展与应用 1…...
深入了解 StarRocks 表类型:解锁高效数据分析的密码
在当今数字化浪潮下,大数据分析成为企业决策、优化业务流程的关键利器。StarRocks 作为一款备受瞩目的高性能分析型数据库,其多样化的表类型为复杂的数据处理需求提供了精准解决方案。今天,就让我们一同深入探索 StarRocks 中的主键表、明细表…...
L27.【LeetCode笔记】2 的幂(五种解法)
目录 1.题目 2.自解 方法1:调用log函数 代码 提交结果 方法2:循环 提交结果 3.优解 方法3:位运算n & (n-1) 0 代码 提交结果 方法4:位运算lowbit 代码 提交结果 4.投机取巧的方法 代码 提交结果 1.题目 https://leetcode.cn/problems/power-of-two/?env…...
Pentaho Kettle迁移至Oracle的空字符串和NULL的问题处理,大坑!
一、问题说明 在使用 Kettle 将 DB2 数据迁移到 Oracle 的过程中,出现了 DB2 中为空字符串的字段,在插入到 Oracle 过程中实际插入的为 NULL ,导致触发了非空校验而迁移失败 空字符串 ‘’ ,即长度为0的字符串 搜索该问题后得知…...
「Mac畅玩鸿蒙与硬件50」UI互动应用篇27 - 水果掉落小游戏
本篇教程将带你实现一个水果掉落小游戏,掌握基本的动态交互逻辑和鸿蒙组件的使用,进一步了解事件处理与状态管理。 关键词 UI互动应用水果掉落状态管理动态交互游戏开发 一、功能说明 水果掉落小游戏包含以下交互功能: 随机生成水果&#…...
2.C语言基础:语句、表达式、注释与标准库简介
目录 1.语句2.表达式3.语句块4.空格5.注释6.printf()7.标准库 本篇原文为:C语言基础:语句、表达式、注释与标准库简介 更多C进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网 1.语句 C 语言的代码由一行行语句&#…...
Python 基于 opencv 的人脸识别监控打卡系统(源码+部署)
1. 引言 今天,我们将基于 Python 的 OpenCV 库和 wxPython 框架,构建一个实用的 人脸识别考勤系统。这是一个适合大学生学习的实战项目,功能经过充分调试,确保运行稳定。该系统不仅能帮助你了解人脸识别技术的基本原理࿰…...
Maven的依赖管理
1. 依赖管理 依赖管理,可以将有关依赖项的所有信息放在共同的POM中,并对子POM中的工件进行更简单的引用。举个例子: 父POM <project>......<dependencyManagement><dependencies><dependency><groupId>gro…...
数据结构考前一天
线性表:矩阵,链表(单链表必考) 栈和队列:出入判断,括号匹配,中缀转后缀 字符串数组:模式匹配next,nextval数组,数组寻址,三角矩阵对应一维数组k…...
获取 Astro Bot AI 语音来增强您的游戏体验!
有很多用户尝试过Astro Bot,却被Astro Bot可爱的声音所吸引。您是否想知道如何使用 Astro Bot 语音来拨打恶作剧电话或用他的声音说话?如果您有,那么这篇文章适合您。我们将向您展示如何为 Astro Bot 提供逼真的 AI 声音并在在线对话中使用它…...
html5开发,js 在元素div id=img1的最前面插入一个图片
在 JavaScript 中,你可以使用 document.createElement 来创建一个新的图片元素,然后使用 document.getElementById 来获取目标 div 元素,并使用 appendChild 方法将新创建的图片元素插入到 div 的最前面。不过,appendChild 方法会…...
Elasticsearch Serverless中的数据流自动分片深度解析
Elasticsearch Serverless中的数据流自动分片深度解析 一、Elasticsearch Serverless概述 1. 什么是Elasticsearch Serverless Elasticsearch Serverless是一种云端全托管的Elasticsearch服务,它基于云原生Serverless技术架构,提供自动弹性和完全免运…...
2025考研江南大学复试科目控制综合(初试807自动控制原理)
2025年全国硕士研究生招生考试江南大学考点 一年年的考研如期而至,我也变成了研二了,作为2次考研经历的学长,总是情不自禁地回想起自己的考研经历,我也会经常从那段经历中汲取力量。我能理解大多数考生考完后的的迷茫无助&…...
Elasticsearch分片数量是什么意思?
Elasticsearch中的分片(Shard)数量是一个重要概念,以下为你详细介绍它的含义及相关要点: ### 定义 分片是Elasticsearch将索引数据进行拆分的基本单元。简单来说,Elasticsearch会把一个索引的数据分割成多个较小的部分…...
PWN的知识之栈溢出
栈溢出 什么是栈溢出? 栈溢出(Stack Overflow)是指在程序运行过程中,向栈中存放的数据量超过了栈的最大容量,从而导致程序出现异常行为的情况。可以比作一个箱子原本只能容纳一定数量的物品,如果强行往里…...
java.lang.Error: FFmpegKit failed to start on brand:
如果你使用FFmpegKit的时候遇到了这个问题: java.lang.Error: FFmpegKit failed to start on brand: Xiaomi, model: MI 8, device: dipper, api level: 29, abis: arm64-v8a armeabi-v7a armeabi, 32bit abis: armeabi-v7a armeabi, 64bit abis: arm64-v8a.at c…...
TCPDump参数详解及示例
TCPDump参数详解及示例 TCPDump参数详解TCPDump -G的示例TCPDump -i any -s 2048 -G 600 -p udp -Z root -n -X -tt -w %Y_%m%d_%H%M_%S.pcap &的含义TCPDump是一款强大的网络数据包截获分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议…...
Spring如何实现管理事务
目录 简介: 分类: 1.编程式事务管理: 2. 声明式事务管理: 3.事务传播和隔离级别: 配置 Spring 事务管理: 总结: 简介: Spring 通过事务管理器(Transaction Manager…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
