`
mutongwu
  • 浏览: 439014 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

如何读写伪类元素的样式?

阅读更多
示例:
<p class="example" data-pseudo="(i'm content.)">Hi, this is a plain-old, sad-looking paragraph tag.</p>
<div id="log"></div>

<style>
.example::before {
    content: 'pseudoElement ';
    color: red;
}
</style>


一、读取,使用 window.getComputedStyle 方法:

<script>
var str = window.getComputedStyle(document.querySelector('.example'), '::before').getPropertyValue('color');

document.querySelector('#log').innerHTML = str;

</script>


二、写(修改)


没有办法。至少没有直接的方法,退而次之,只能通过覆盖样式的途径来达到我们的目的。
譬如:添加一个style元素,并写入新的样式;又或者是给目标元素添加不同的class,以达到控制的效果。

示例:

<style id="pseudoStyle">
</style>


<script>
	document.querySelector('#pseudoStyle').sheet.insertRule(".example::before { color: green;}",0);
	//或者是
	document.querySelector('#pseudoStyle').sheet.addRule('.example::before','color: green');

	//setProperty在这时候,会抛异常:
	try{
		window.getComputedStyle(document.querySelector('.example'), '::before').setProperty('color',"green");
	}catch(e){
		document.querySelector('#log').innerHTML =  e;
	}
</script>


伪类元素,有个属性比较特殊:content。由于它的值可以定义为从元素的dom属性获取,从而可以实现js的直接读写。
例如:

<style>
.example::before {
    content: attr(data-pseudo);
    color: red;
}
</style>


<script>
	document.querySelector('.example').setAttribute("data-pseudo","new content!");
</script>


附录:
1. styleSheet对象的方法、属性和浏览器兼容,参考:http://help.dottoro.com/ljpatulu.php
2. getComputedStyle方法,参考:http://help.dottoro.com/ljscsoax.php , https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle
0
1
分享到:
评论

相关推荐

    伪类、伪元素实例

    https://mp.csdn.net/postedit/88689169 伪类选择元素基于的是当前元素处于的状态,或者说是元素当前所具有的...伪元素是对元素中特定内容进行操作的,它所操作的层次比伪类更深一层,也因此它的动态性比伪类要低很多。

    浅谈CSS伪类与伪元素

    由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。 伪类选择...

    [CSS] 用伪元素:after实现分割线和气泡

    用伪元素:after实现分割线和气泡

    用js实现before和after伪类的样式修改的示例代码

    最近遇到一个需要改变:before,:after 伪类的样式,发现css中并不能直接选择某一个元素的:before和:after伪类元素,所以特总结了使用javascript和jQuery改变元素的:before和:after伪类样式的方法。 类如如下的html及...

    CSS伪类和伪元素的区别详解

    这里用伪类 :first-child 和伪元素 :first-letter 来进行比较。 复制代码代码如下: p&gt;i:first-child {color: red}&lt;p&gt; &lt;i&gt;first&lt;/i&gt; &lt;i&gt;second&lt;/i&gt;&lt;/p&gt;  //伪类 :first-child 添加样式到第一个子元素如果

    HTML5&CSS3网页制作:链接伪类.pptx

    CSS3选择器--链接伪类 链接伪类 01 链接伪类 定义超链接时,为了提高用户体验,经常需要为超链接指定不同的状态,使得超链接在点击前、点击后和鼠标悬停时的样式不同。 a:link a:visited a:hover a:active 链接伪类 ...

    css通过伪类来设置超链接样式附示例

    css设置超链接样式是通过伪类来实现的 (1) :link:设置a对象在未被访问前的样式表属性。 (2) :visited:设置a对象在其链接地址已被访问过时的样式表属性。 (3) :hover:设置对象在其鼠标悬停时的样式表属性。 (4...

    CSS :active 伪类 元素被激活时的样式

    :active — CSS :active 伪类,适用于一个元素被激活时的样式 语法: :active CSS版本:CSS1 说明: 适用于一个元素被激活时的样式,例如鼠标在此元素的区域内按下但还没有释放时 客户端(浏览器)可以根据用户与其...

    JavaScript实现修改伪类样式

    项目中时常会需要用到使用JavaScript来动态控制为元素(:before,:after)的样式,但是我们都知道JavaScript或jQuery并没有伪类选择器。这里总结一下几种常见的方法。 HTML ”red”&gt;Hi, this is a plain-old, sad-...

    【CSS基础学习】伪类选择器,伪元素选择器,交集选择器

    伪类选择器和伪元素选择器可以为文档中非具体存在的结果指定样式,或者为某些元素(包括文档本身)的状态指定样式,它会根据某种条件而非文档结构应用样式。 伪类选择器的使用方法如下: HTML标记 伪类名{伪类名:...

    纯CSS3伪类实现icon标签效果

    以前我还是比较忽视这两个家伙的,今天第一次见到原来伪类的好处这么多,以后会多多推荐CSS3伪类实现的效果 使用方法: 1、将head中的CSS样式引入到你的网页中 2、在你需要变成标签的html处增加class = ...

    css3 伪元素和伪类选择器详解

    伪类选择器:CSS中已经定义好的选择器,不能随便取名 常用的伪类选择器是使用在a元素上的几种,`如a:link|a:...CSS中有如下四种伪元素选择器:· first-line:为某个元素的第一行文字使用样式;· first-letter:为某个元

    CSS中的伪元素简介

     提示:如果不用伪元素创建这个首字符放大效果,必须手工给该字母加上标签, 然后再为该标签应用样式。而伪元素实际上是替我们添加了无形的标签。 ::first-line伪元素 格式: CSS Code复制内容到剪贴板 e::first-...

    css伪类伪元素域高级选择器的介绍

    给链接定义样式 ...a:visited 表示已经访问的链接 a:hover 表示鼠标划入的链接 ...注意上面这四个链接的伪类在使用的时候要有一定的顺序,即上面列举的顺序,...更多伪类和伪元素 :before 可以在指定元素的前面添加内容。比

    css伪类(超链接)

    css伪类 超链接 连接的用法 描述 link的样式说明

    CSS 伪类(Pseudo-classes)

    CSS 伪类(Pseudo-classes) CSS伪类是用来添加一些选择器的特殊效果。 语法 伪类的语法: selector:pseudo-class {property:value;} CSS类也可以使用伪类: selector.class:pseudo-class {property:value;} ...

    JS改变元素样式

    JS改变元素样式

    CSS :befor :after 伪元素的巧妙用法

    :befor、:after创建的伪元素默认样式为内联样式。 1.2 语法 /* CSS3 */ selector::before /* CSS2 */ selector:before CSS3引入了 ::(两个冒号)是用来区分伪类(:一个冒号)和伪元素(::两个冒号)。

    CSS 伪元素

    CSS类也可以使用伪元素: selector.class:pseudo-element {property:value;} :first-line 伪元素 “first-line” 伪元素用于向文本的首行设置特殊样式。 在下面的例子中,浏览器会根据 “first-line” 伪元素中的...

Global site tag (gtag.js) - Google Analytics