美文网首页
使用JS操作CSS

使用JS操作CSS

作者: 释梦石 | 来源:发表于2020-09-01 21:20 被阅读0次

HTML 元素的 style 属性

操作 CSS 样式最简单的方法,就是使用网页元素节点的getAttribute()方法、setAttribute()方法和removeAttribute()方法,直接读写或删除网页元素的style属性。但style不仅可以使用字符串读写,它本身还是一个对象,部署了 CSSStyleDeclaration 接口,可以直接读写个别属性。

e.style.fontSize = '18px';
e.style.color = 'black';

CSSStyleDeclaration 接口

Style接口简介

CSSStyleDeclaration 接口用来操作元素的样式。三个地方部署了这个接口。

  1. 元素节点的style属性(Element.style)
  2. CSSStyle实例的style属性
  3. window.getComputedStyle()的返回值
    CSSStyleDeclaration 接口可以直接读写 CSS 的样式属性,不过,连词号需要变成骆驼拼写法。
var divStyle = document.querySelector('div').style;

divStyle.backgroundColor = 'red';
divStyle.border = '1px solid black';
divStyle.width = '100px';
divStyle.height = '100px';
divStyle.fontSize = '10em';

divStyle.backgroundColor // red
divStyle.border // 1px solid black
divStyle.height // 100px
divStyle.width // 100px

该对象的属性值都是字符串,设置时必须包括单位,但是不含规则结尾的分号。比如,divStyle.width不能写为100,而要写为100px。另外,Element.style返回的只是行内样式,并不是该元素的全部样式。通过样式表设置的样式,或者从父元素继承的样式,无法通过这个属性得到。元素的全部样式要通过window.getComputedStyle()得到。

CSSStyleDeclaration 实例属性

**CSSStyleDeclaration.cssText

var divStyle = document.querySelector('div').style;

divStyle.cssText = 'background-color: red;'
  + 'border: 1px solid black;'
  + 'height: 100px;'
  + 'width: 100px;';

ssText的属性值不用改写 CSS 属性名。
CSSStyleDeclaration.length
返回一个整数值,表示当前规则包含多少条样式声明。

// HTML 代码如下
// <div id="myDiv"
//   style="height: 1px;width: 100%;background-color: #CA1;"
// ></div>
var myDiv = document.getElementById('myDiv');
var divStyle = myDiv.style;
divStyle.length // 3

CSSStyleDeclaration 实例方法

CSSStyleDeclaration.getPropertyPriority
方法接受 CSS 样式的属性名作为参数,返回一个字符串,表示有没有设置important优先级。如果有就返回important,否则返回空字符串。

margin属性有important优先级,color属性没有。
CSSStyleDeclaration.getPropertyValue()

接受 CSS 样式属性名作为参数,返回一个字符串,表示该属性的属性值。

// HTML 代码为
// <div id="myDiv" style="margin: 10px!important; color: red;"/>
var style = document.getElementById('myDiv').style;
style.margin // "10px"
style.getPropertyValue("margin") // "10px"

CSSStyleDeclaration.item()
方法接受一个整数值作为参数,返回该位置的 CSS 属性名。

// HTML 代码为
// <div id="myDiv" style="color: red; background-color: white;"/>
var style = document.getElementById('myDiv').style;
style.item(0) // "color"
style.item(1) // "background-color"

CSSStyleDeclaration.removeProperty()

CSSStyleDeclaration.removeProperty方法接受一个属性名作为参数,在 CSS 规则里面移除这个属性,返回这个属性原来的值。

// HTML 代码为
// <div id="myDiv" style="color: red; background-color: white;">
//   111
// </div>
var style = document.getElementById('myDiv').style;
style.removeProperty('color') // 'red'
// HTML 代码变为
// <div id="myDiv" style="background-color: white;">

CSSStyleDeclaration.setProperty()
CSSStyleDeclaration.setProperty方法用来设置新的 CSS 属性。该方法没有返回值。

该方法可以接受三个参数。
第一个参数:属性名,该参数是必需的。
第二个参数:属性值,该参数可选。如果省略,则参数值默认为空字符串。
第三个参数:优先级,该参数可选。如果设置,唯一的合法值是important,表示 CSS 规则里面的!important。

// HTML 代码为
// <div id="myDiv" style="color: red; background-color: white;">
//   111
// </div>
var style = document.getElementById('myDiv').style;
style.setProperty('border', '1px solid blue');

window.getComputedStyle()

行内样式(inline style)具有最高的优先级,改变行内样式,通常会立即反映出来。但是,网页元素最终的样式是综合各种规则计算出来的。因此,如果想得到元素实际的样式,只读取行内样式是不够的,需要得到浏览器最终计算出来的样式规则。

window.getComputedStyle方法,就用来返回浏览器计算后得到的最终规则。它接受一个节点对象作为参数,返回一个 CSSStyleDeclaration 实例,包含了指定节点的最终样式信息。所谓“最终样式信息”,指的是各种 CSS 规则叠加后的结果。

var div = document.querySelector('div');
var styleObj = window.getComputedStyle(div);
styleObj.backgroundColor

getComputedStyle方法还可以接受第二个参数,表示当前元素的伪元素(比如:before、:after、:first-line、:first-letter等)。

var result = window.getComputedStyle(div, ':before');

CSS伪元素

CSS 伪元素是通过 CSS 向 DOM 添加的元素,主要是通过:before和:after选择器生成,然后用content属性指定伪元素的内容。节点元素的style对象无法读写伪元素的样式,这时就要用到window.getComputedStyle()。JavaScript 获取伪元素,可以使用下面的方法。

var test = document.querySelector('#test');

var result = window.getComputedStyle(test, ':before').content;
var color = window.getComputedStyle(test, ':before').color;

此外,也可以使用 CSSStyleDeclaration 实例的getPropertyValue方法,获取伪元素的属性

var result = window.getComputedStyle(test, ':before')
  .getPropertyValue('content');
var color = window.getComputedStyle(test, ':before')
  .getPropertyValue('color');

StyleSheet 接口

StyleSheet接口代表网页的一张样式表,包括<link>元素加载的样式表和<style>元素内嵌的样式表。
document对象的styleSheets属性,可以返回当前页面的所有StyleSheet实例(即所有样式表)。它是一个类似数组的对象。

var sheets = document.styleSheets;
var sheet = document.styleSheets[0];
sheet instanceof StyleSheet // true

如果是<style>元素嵌入的样式表,还有另一种获取StyleSheet实例的方法,就是这个节点元素的sheet属性。

StyleSheet.disabled
StyleSheet.disabled返回一个布尔值,表示该样式表是否处于禁用状态。手动设置disabled属性为true,等同于在<link>元素里面,将这张样式表设为alternate stylesheet,即该样式表将不会生效。
注意,disabled属性只能在 JavaScript 脚本中设置,不能在 HTML 语句中设置。
Stylesheet.href
Stylesheet.href返回样式表的网址。对于内嵌样式表,该属性返回null。该属性只读。

document.styleSheets[0].href

StyleSheet.title
StyleSheet.title属性返回样式表的title属性。

StyleSheet.type
StyleSheet.type属性返回样式表的type属性,通常是text/css。

相关文章

  • 使用JS操作CSS

    HTML 元素的 style 属性 操作 CSS 样式最简单的方法,就是使用网页元素节点的getAttribute...

  • 2020-04-09

    JavaScript篇 各司其职例:直接使用CSS类的切换(避免直接使用js改变css样式) 使用CSS代替JS例...

  • HTML5小记十五

    1.使用js将css中的控件属性进行获取和修改的操作: 仿照即达个人中心的css界面 document.getEl...

  • 04-第四章 操作元素属性 CSS样式[ ]的使用

    一 、cssStyle 操作 1、css样式赋值 (1)如果想通过js来设置样式的话,可以使用cssTextcss...

  • 教你在Vue项目中使用React超火的CSS-in-JS库: s

    什么是CSS-in-JS? 顾名思义,CSS-in-JS就是可以使用JS来编写CSS样式,那么为什么要用JS来编写...

  • [ie]判断ie浏览器版本

    js中的使用 ↓ css中的使用 ↓

  • wow.js的使用方法

    wow.js简介 功能: 滚动页面, 显示css动画 和animate.css配合使用 wow.js基本使用 基本...

  • js基础

    1.网页 网页=html+css+js html:网页元素内容 css:控制网页样式 js:操作网页内容,实现功能...

  • CSS学习

    今日目标 使用CSS完成网站首页的优化 使用CSS完成网站注册页面的优化 使用JS完成简单的数据校验 使用JS完成...

  • jquery分页js和css代码

    css文件 js文件 前端使用

网友评论

      本文标题:使用JS操作CSS

      本文链接:https://www.haomeiwen.com/subject/snaijktx.html