使用 Javascript/D3JS/JQuery 永久更改 CSS 属性

2023-12-09

是否有一种快速、简单的方法可以使用 Javascript、D3JS 或 JQuery“永久”更改 CSS 属性?我找到了this会改变已有几何形状的问题:

$('.myClass').css({ ...Your CSS properties here... });

但是,我想更改 CSS 属性,以便在该会话中创建的几何图形也将具有这些更新的更改。如何使用 Javascript 将下面的 CSS 类从钢蓝色笔画更改为浅灰色笔画?

.P0{ fill:none;  stroke-width:1.25px; stroke:steelblue;}

神奇的 CSS 变色小提琴:

http://fiddle.jshell.net/8xkv3/3/

关键思想是访问 CSS 对象模型中的最后一个样式表,并在该样式表末尾添加 CSS 规则,指定所需选择器的属性。你想要的last的规则last样式表,以便它覆盖级联中的其他任何内容(当然,内联样式除外)。

The 样式表对象该文件有效的列表可在document.styleSheets。每个人都有自己的财产cssRules这是一个规则列表,每个规则代表一个选择器加上一个属性值对列表。

The stylesheet.insertRule()方法从字符串创建新规则,并将其添加到工作表的指定索引处。不幸的是,它只返回索引,而不是规则对象,因此我们必须重新选择它以保存以供将来修改。

您可以重复添加新规则,每个规则都会覆盖之前的规则,但这不是很有效。规则对象有一个“样式”映射,其中的键和值的行为与您的预测非常相似。

Edit

我意识到上述方法有问题。如果当前网页未使用列表中的最后一个样式表,会发生什么情况?如果它是打印样式表怎么办?或者用于小屏幕、语音合成器或任何其他媒体查询受限情况的样式表?您可以向该样式表对象添加规则,但它不会产生任何效果。

显然,您需要做的是创建一个new样式表对象没有任何限制和/或仅具有您选择的限制。然后,您可以将此样式表添加到列表末尾,并向其中添加动态样式规则。

您不能直接创建样式表对象,但可以创建<style>元素并将其添加到 DOM 中的 html head 对象。当。。。的时候<style>对象被添加到文档中将为它创建一个样式表对象,并且可以访问为.sheet元素的属性.

修改后的小提琴在这里:http://fiddle.jshell.net/8xkv3/6/

关键代码:

    if (!rule) {
        //create a new page-wide style element            
        var styleElement = document.createElement("style");
        styleElement.type = "text/css"; 
        //probably not necessary (CSS is default), 
        //but it doesn't hurt to be explicit

        document.head.insertBefore(styleElement, null);  
        //once inserted in the document, a valid
        //CSSStyleSheet object is created and attached
        //to the styleElement object

        var styleSheet = styleElement.sheet;

        var ruleNum = styleSheet.cssRules.length;
        //console.log(styleSheet);
        styleSheet.insertRule(
            ".changeable{color:#"+hex[1]+";}", 
            ruleNum);
        rule = styleSheet.cssRules[ruleNum];
        //console.log(rule);
    }
    else { 
       rule.style["color"] = "#"+hex[1];
    };

顺便说一句,我不知道为什么我之前搜索 MDN 时没有出现这个,但是这里有一篇关于动态操作 CSS OM 的各种方法的好文章:
https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_dynamic_styling_information

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript/D3JS/JQuery 永久更改 CSS 属性 的相关文章

  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • jquery从变量中删除html元素

    我将 html 保存在变量中 var itinerary events today html 我有很多 html 和一个按钮我想删除 它的 ID 为 myButton 如何从变量中保存的 html 中删除它 我建议这种方法 var itin
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 如何阻止破折号自行包裹?

    我有一个标题 标题最后一个单词的末尾是一个破折号 单词和破折号之间没有空格 当浏览器窗口变小时 破折号会中断并换成新行 在自己的行上有一个破折号是不好的排版 如何停止破折号之前的换行 以便最后一个单词运行到新行 这是代码 h1 XYZ co
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • jQuery 获取元素内的鼠标位置

    我希望制作一个控件 用户可以在 div 内单击 然后拖动鼠标 然后松开鼠标以指示他们想要的内容有多长 这是针对日历控件的 因此用户将指示特定事件的时间长度 看起来最好的方法是在父 div 上注册一个 mousedown 事件 而父 div
  • 避免响应式页面的重复内容

    我目前正在做一个涉及响应式设计的项目 整个布局应该使用HTML和CSS来实现 我知道可以使用 java 脚本将内容从一个列布局移动到另一列布局 而无需复制内容 但是使用 HTML 和 CSS 是否可以实现相同的效果 以下面的例子为例 它会在
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 在 ASP.NET Core MVC 中访问从视图到控制器的隐藏值

    我需要帮助使用 jQuery 从 ASP NET Core razor 视图页面传递隐藏控件值 jQuery 用于获取动态控件选定的值 section scripts
  • Javascript/Jquery:确定用户是否使用鼠标滚轮、滚动条或键盘滚动

    我正在尝试让用户界面正常工作 如果他们使用鼠标滚轮 我需要让它以一种方式滚动 如果他们使用滚动条 我需要让它以另一种方式滚动 如果他们使用键盘 我需要让它以另一种方式滚动 我相信滚轮和滚动条都充当鼠标事件 但是当单击滚动条时我无法让 jav
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win
  • jQuery 对象相等

    如何确定两个 jQuery 对象是否相等 我希望能够在数组中搜索特定的 jQuery 对象 inArray jqobj my array 1 alert deviceTypeRoot deviceTypeRoot False alert d
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型
  • FireFox 中的“contenteditable = true”高度问题

    当有空的时候div with contenteditable true CSS contenteditable true border 1px dashed dedede padding 3px HTML div div 在 IE 和 Ch

随机推荐

  • Python - CSV:具有不同长度行的大文件

    简而言之 我有一个 20 000 000 行的 csv 文件 它具有不同的行长度 这是由于陈旧的数据记录器和专有格式造成的 我们得到以下格式的最终 结果作为 csv 文件 我的目标是将此文件插入到 postgres 数据库中 我怎样才能做到
  • HomeAsUp 按钮在 Android 4.2.2 和 Appcompat 21.0.0 中无效

    我使用 Appcompat 21 中的工具栏而不是标准操作栏 一切都很顺利 除了HomeAsUp额外活动中的按钮不起作用 当我打开PrefsActivity 下面的代码片段 HomeAsUp按钮正常显示 一个向左的小箭头 当我单击按钮时 从
  • 如何调整 html canvas 元素的大小?

    我在 html 中静态定义了一个带有宽度和高度的画布元素 如果我尝试使用 JavaScript 动态调整其大小 设置新的宽度和高度 在画布的属性上或通过样式属性 我在 Firefox 中收到以下错误 未捕获的异常 异常 对WrappedNa
  • WINAPI - 设置组合框下拉列表的背景和文本颜色

    所以我尝试使用 Common Controls 和 WINAPI 设置 ComboBox 的背景和文本颜色 我确实设法设置了组合框本身的背景和文本颜色 但其下拉列表的颜色保持不变 这几乎就是我所做的 创建组合框时 我使用了CBS DROPD
  • 我需要一个 php 正则表达式来用另一个标签替换一个标签

    这是我需要能够做到的 我需要匹配以下标签 span text sample span 我需要用 html3 兼容标签替换 span 但保留中间的文本 替换后的最终标签应如下所示 u text sample u 我只是不擅长正则表达式 似乎无
  • ILMerge 替代方案,如何将应用程序的依赖 DLL 嵌入 EXE 文件中?

    如此处所述我试图将 dll 嵌入到 exe 应用程序中 以便只分发一个 exe 但是当我尝试在安装了完整 NET 4 的 xp 计算机上运行我的应用程序时 它只是崩溃而没有错误 我将以下代码放在主要方法 STAThread static v
  • 发布编译时 WCF .SVC Debug="true" 被忽略?

    默认情况下 SVC 文件包含 Debug true 我想知道如果您编译发布版本是否会忽略它 或者仍然使用调试符号进行编译 Ex Debug true属性在 ServiceHost仅当您将服务编写为inline svc 文件中的代码 或在 中
  • 如何在不同条件下选择同一字段两次并将结果显示为单独的字段

    我想用 C 创建一个表适配器 如下所示 我希望在不同的条件下在表中使用相同的字段两次 并且它必须显示为两个不同的字段 这是我的源表 来自AttendanceReg我需要的表Count每个学生的记录基于AttendStatus找出他们在的天数
  • 如何判断 Pandas 中的值是否随维度变化

    假设我有一些特定日期的客户数据 我想看看他们的地址是否已更改 超过那些日期 理想情况下 我想将发生更改的两列复制到新表中 或者只是获取总更改量的指标 所以 如果我有一张像这样的桌子 Date Customer Address 12 31 1
  • 如何获得倒排索引?

    我新使用 Spark 如何使用 Spark 获取 csv 文件的倒排索引 我有 csv 文件 df show id title tags closeddate 48702270 null null null 48702455 null
  • 使用 jQuery jsonp 跨域调用 ASP.NET Web 服务

    我的问题是已知问题并已讨论here and here 但即使在阅读并实施了建议的解决方案之后 我也无法完成这项工作 问题 Web 服务返回 xml 而不是 json
  • 阐明 Java 对 Unicode 的进化支持 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我发现 Java 对 char 和 codepoint 的区分很奇怪而且不合适 例如 字符串是字符数组或 字母表中出现的字母 与代码点相反 代码点可以是单个字母 也可能是复合或代理对 然而
  • 在 Mac OS 上使用 gdb 进行 Fortran 调试?

    我在使用 gdb 在 Mac OS Mountain Lion 上调试 Fortran 程序时遇到问题 当我调用 gdb fortran executable name 从终端 我收到以下消息 This GDB was configured
  • 处理/转置 Pandas Dataframe

    我得到了以下熊猫数据框 Id Category 1 type 2 1 type 3 1 type 2 2 type 1 2 type 2 我需要处理上述数据帧并将其转置为 Id Category type 1 Category type 2
  • 如何使用方法引用/java 8 泛化实用函数

    我遇到过一种常见情况 我有一个对象列表 需要生成一个带有单个属性的逗号分隔字符串 然后每个属性都用单引号引起来 2 示例 public String partIDsToString List
  • 64 位机器上 QWORD 的大小是多少?

    我目前正在寻找上述问题的答案 到目前为止 我发现人们说 字大小是指处理器寄存器的大小 这表明在 64 位机器上 字大小为 64 位 因此 QWORD 4 字 的大小为 256 位 但另一方面 我发现了类似的来源this有人说大小为 128
  • PHP:为什么这个强制 mime 下载会添加 2 个额外的空行?

    我编写了一个 PHP 脚本来创建 txt 制表符分隔文件 我需要将其强制下载到网络浏览器 它完成了这一切 但是当我将文件与源进行比较时 强制下载的文件包含两个额外的空行 这是代码 Force download of the tab del
  • UISearchBar范围栏背景图片可设置,但颜色不可设置?

    for subView in searchBar subviews if let scopeBar subView as UISegmentedControl scopeBar backgroundColor UIColor blueCol
  • 让 setter 返回“this”是一种不好的做法吗?

    让java中的setter返回 this 是好还是坏主意 public Employee setName String name this name name return this 这种模式很有用 因为你可以像这样链接设置器 list a
  • 使用 Javascript/D3JS/JQuery 永久更改 CSS 属性

    是否有一种快速 简单的方法可以使用 Javascript D3JS 或 JQuery 永久 更改 CSS 属性 我找到了this会改变已有几何形状的问题 myClass css Your CSS properties here 但是 我想更