动态修改 dom 元素的伪类样式

最近写代码,需要修改伪类的 content 属性,不想定义两个样式进行切换,而是直接通过 js 进行修改。

html 中的伪类(如 a:hover / a:link / class::before / clss::after 等),因为不是 dom 元素,所以

不能直接通过 js 修改其属性,虽然可以通过 切换 dom 元素的 css 样式名进行修改,但是这样就比较复杂了。

参考了一个 帖子 然后进行了一些修改,大概思路如下:

这里使用  windows 8 的工程,js 代码直接写在 default.js 文件中。

1、在 html 页面中,添加一个 span 和一个 button:

<span id="span_test"></span>

<br />

<input type="button" value="改变" onclick="changeContent()" />

2、在样式表中,定义这个 span 的显示样式:

#span_test::before{
    content: attr(data-content);
}

3、在页面 UI 加载完成的事件中,给元素添加 data-content 属性(幸亏 html5 提供了 data- ):

 args.setPromise(WinJS.UI.processAll().then(function () {

     // 可以把 data-content=‘流畅‘ 直接放在 html 文件中的 span 标签上
     document.getElementById("span_test").setAttribute("data-content", "高清");

 }));

4、当单击按钮时,修改 span 元素的 data-content 属性:

function changeContent() {

    document.getElementById("span_test").setAttribute("data-content", "流畅");

}

显示效果:

默认:

单击按钮:

demo 下载:dom_content(js修改元素的伪类)

时间: 2024-08-14 22:08:41

动态修改 dom 元素的伪类样式的相关文章

【CSS3】详解伪元素与伪类

1.伪类 伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id.class.属性等静态的标志.由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式:当状态改变时,它又会失去这个样式.由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类. 伪类的定义: (1)伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息. (2)伪类由一个冒号:开头,冒号后面是伪类的名称和包

伪元素与伪类

伪元素与伪类 为什么要写这篇文章? 伪元素和伪类一直都是很容易混淆的,没有大量的实践和用心去体会是不容易记住的.我相信对于绝大部分新手来说是这样的,我自己也是经常记不住,像这样不算难的问题,一直查阅别人的博文,没有点自己的思想,好像是很low的一件事,因此写下这篇文章. 什么是伪类? 伪类的实质是把某种幻像类关联到与伪类相关的元素上,举个例子: <div> <p>These are the necessary steps:</p> </div> 使用规则  

伪元素和伪类区别

伪类用于向某些选择器添加特殊的效果. 伪元素用于将特殊的效果添加到某些选择器. 伪类有::first-child ,:link:,vistited,:hover,:active,:focus,:lang 伪元素有::first-line,:first-letter,:before,:after 使用伪类: 1 2 3 4 5 6 7 <style> p>i:first-child {color: red} </style> <p>     <i>fir

css 选择器 &amp; UI元素的伪类选择器 &amp; 伪元素选择器

UI元素的伪类选择器 1. :focus  用来选取获取焦点事件 2. :enabled 用来指定当元素处于可用状态时的样式 3. :disable  用来指定元素处于不可用时的状态    表单里应用较多 4. read-only 用来获取元素属于只读状态时 5. read-write 用来匹配可读和可写的元素  input search 6. :checked  用来获取单选框处于选取状态时的样式 7. :default 选取用来选取,打开时默认选取状态时单选框 8.     :indeter

伪元素、伪类基础理解

前几天同事问我css中单冒号和双冒号是什么意思,我也模糊得很,只有个笼统的概念就是:伪元素和伪类.一直以为,页面布局中很少使用到伪类,结果细细研究发现我们经常使用的hover就是一个最简单的伪类,顿时觉得自己太OUT了,紧跟着这两天都在看这些东西,其实伪类最简单的理解就是用于向某些选择器添加特殊的效果. 具体伪类.伪元素有哪些我就不一一列举,在w3c中列举的很清楚.我主要写写应用的实例. 1.来个简单的,咱们最常用到的向超链接添加不同的颜色: <html> <head> <m

CSS基础知识之背景图片样式属性、雪碧图、列表导航栏、超链接的伪类样式、盒子模型、overflow、圆角弧度

目录: 背景图片样式属性 雪碧图 列表导航栏 超链接的伪类样式 盒子模型. overflow. 圆角弧度 背景图片样式属性: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> #imgContainer { border: 20px dotted yellow; padding: 50px; height: 400p

CSS中的背景、雪碧图、超链接的伪类样式

一.背景 1.背景颜色 background-color: red; 2.背景图片 background-image: url("../../img/l1.png"); 3.图片填充 background-repeat: no-repeat;(有这三个常用的属性值: no-repeat.repeat-x.repeat-y) 4.背景图片大小 background-size:100% 100%: cover(覆盖):(先让图片水平填满容器)图片等比例缩放,直到最小部分填满容器有可能会出现

动态生成DOM元素绑定click事件无效问题

在页面里,jq动态生成dom节点,该节点的click事件无效. 如,html里动态添加class名为.del的<a>, js文件中: $('.del').bind('click',fuction(){ alert('sda'); }) 不响应, 网上说可以用live代替bind事件,但在jq1.7版本开始,就取消了live事件, 解决方法: on()事件 代码改为: $(document).on('click','.del',fuction(){ alert('sda'); }) 这样就搞定了

使用JavaScript修改伪类样式的方法

前言 项目中时常会需要用到使用JavaScript来动态控制为元素(:before,:after)的样式,但是我们都知道JavaScript或jQuery并没有伪类选择器.这里总结一下几种常见的方法. HTML <p class="red">Hi, this is a plain-old, sad-looking paragraph tag.</p> CSS .red::before { content: 'red'; color: red; } 方法 方法一: