Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >简单说 通过JS控制CSS的各种方式(上)

简单说 通过JS控制CSS的各种方式(上)

作者头像
FEWY
发布于 2019-05-26 03:59:02
发布于 2019-05-26 03:59:02
4.9K10
代码可运行
举报
文章被收录于专栏:FEWYFEWY
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/FE_dev/article/details/77888446

说明

通过JS控制CSS,我们能做出更多漂亮的页面特效,做出更炫的交互效果。今天我们来说说JS控制CSS的各种方式。

解释

JavaScript、CSS、HTML是前端三剑客,我们说正事之前,先来说说CSS与HTML的事。

在HTML中使用CSS有三种方式 1、内联方式 CSS定义在单个的HTML元素中的style属性中 2、内部样式表 CSS通过<style></style>标签定义在HTML页面的<head></head>标签中 3、外部样式表 将CSS定义在一个外部的CSS文件中,在HTML页面通过<link></link>标签引用CSS文件

而JavaScript 中的DOM操作,又可以控制HTML页面中的元素。

说到这,我们最少已经知道,三种方式,通过JS控制CSS了。 好了,我们开始说正事了。

1、通过“ . ”直接设置元素的style属性

语法: element.style.attributename= attributevalue; 例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.body.style.width = '100px';    

注意:这里的style属性的值是一个对象。 这个对象所包含的属性与CSS规则一 一对应,但是名字需要用驼峰命名的方式进行改变,比如background-color写成backgroundColor。改写的规则是将横杠从CSS属性名中去除,然后将横杠后的第一个字母大写。如果CSS属性名是JavaScript保留字,则规则名之前需要加上字符串css,比如float写成cssFloat。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.body.style.backgroundColor= 'red';  

温馨提示: 如果你不愿意换成驼峰命名法的话,也有办法,用“[ ]”代替 “.” , “[ ]” 中直接写字符串类型的CSS属性。 例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.body.style['background-color']= 'red';  

如果你好奇为什么可以这样做,请看这里 简单说 background-color 与 backgroundColor的区别

2、通过 setAttribute 方法 设置元素的style属性

setAttribute 方法添加指定的属性,并为其赋指定的值。 如果这个指定的属性已存在,则仅设置/更改值。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.setAttribute(attributename,attributevalue)

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = document.body;
a.setAttribute("style","background-color:red;height:100px;");    

这个方法很好用,第一个参数写“style”,第二个参数就是CSS,把需要的CSS直接粘贴进去就可以了。

注意: 两个参数都是字符串类型的哦!

3、通过style对象的 setProperty 方法 设置CSS属性

setProperty 方法直接设置某个CSS属性

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.style.setProperty (propertyName, propertyValue, priority);

setProperty 方法的第三个参数(priority),字符串类型,指定样式属性的优先级。样式属性的优先级可以通过getPropertyPriority方法获取。 如果要设置!important,建议设置第三个参数 ,但是传参的时候不用写前面的 “!” 。 例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = document.body;
a.style.setProperty ("background-color", "green", 'important');

注意: setProperty 方法 与 setAttribute 方法 是不一样的,setProperty 方法是元素style属性的一个方法,setAttribute 方法是元素的一个方法,虽然他们都能控制CSS,但还是有区别的。

更多关于setProperty 方法的知识请看 http://help.dottoro.com/ljdpsdnb.php

4、通过style对象的cssText属性,控制CSS

style对象 的 cssText属性设置或返回样式声明的内容作为字符串。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.style.cssText = string

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.body.style.cssText = "background-color:red";

注意: 直接用 “=” 会覆盖原来的值,需要追加新的值就用 “+=”

5、通过元素的 class 属性 控制CSS

我们可以通过先定义好class,然后改变元素的class属性,来控制CSS

元素的 className 属性设置或返回元素的 class 属性值。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
element.className = 'className';   

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html lang="zh">
 <head>
     <meta charset="utf-8">
     <style>
        .redBorder{
            border:1px solid red;
        }
        .greenBg{
            background-color:green;
        }
     </style>
 </head>

 <body class="redBorder">
 </body>

 <script>
    var a = document.body;
    a.className = 'greenBg';
    //元素的redBorder class会被替换 为 greenBg
    //如果两个class 都需要,可以把+ 变成 += ,值的最前面加上一个空格,像下面这样
    //a.className += ' greenBg';
 </script>
</html>

温馨提示: 是className 不是class,class在JavaScript中是保留字所以不能用,要用 className 哦!

6、通过创建 <style><style> 标签,引入新的样式

我们可以先在元素上定义好class属性,然后通过JS创建<style></style>,给元素加上样式

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html lang="zh">
 <head>
     <meta charset="utf-8">
 </head>

 <body class="redBg">
 </body>

 <script>
    var head = document.head;
    // 创建 style 元素
    var styleElement = document.createElement('style');

    //在创建好的style元素中,写上CSS
    styleElement.innerHTML = '.redBg{background-color:red;}';
    //在head 中加上 style 元素
    head.append(styleElement);
 </script>
</html>
7、通过创建 <link><link> 标签,引入新的样式

我们可以先在外部创建一个CSS文件,然后通过JS创建<link><link> 标签,在页面里引入新的样式,这个方法和 上面的创建 <style><style> 标签 的方法很类似。 外部CSS文件(style.css):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.redBg{
    background-color:red;
}

HTML页面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html lang="zh">
 <head>
     <meta charset="utf-8">
 </head>

 <body class="redBg">
 </body>

 <script>
    // 创建 link 元素
    var linkElement = document.createElement('link');

    //设置 linkElement 的src 为外部CSS文件的路径
     linkElement.href = './style.css';

    //在head 中加上 linkElement 元素
    document.head.append(linkElement);
 </script>
</html>
8、通过 insertRule 或者 addRule 插入新的样式

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

insertRule方法用于在当前样式表的cssRules对象插入CSS规则 语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
stylesheet.insertRule(rule, index)

insertRule 方法的第一个参数是表示CSS规则的字符串,第二个参数是该规则在cssRules对象的插入位置。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var styleTag = document.createElement ("style");
var head = document.getElementsByTagName ("head")[0];
head.appendChild (styleTag);

styleTag.sheet.insertRule ("body {background:red;}", 0);

更多关于insertRule 方法的知识请看 https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/insertRule

addRule方法 语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object.addRule (selector, styleDef [, positionIndex]);

参数说明: selector : 必须,指定新规则对象的选择器的字符串。 styleDef : 必须,指定新规则对象的样式定义的字符串。 positionIndex :可选,整数,指定规则集合中新规则的位置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var styleTag = document.createElement ("style");
var head = document.getElementsByTagName ("head")[0];
head.appendChild (styleTag);

styleTag.sheet.addRule ("body", "background:red", 0);

更多关于addRule 方法的知识请看 http://help.dottoro.com/ljuucnct.php

温馨提示: 方式8,插入的新的样式,在页面中看不见,如果需要看见的话,可以通过样式表的cssRules属性。 例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
styleTag.sheet.cssRules

总结

说了这么多方法,要注意各种方式控制CSS后,样式的优先级问题

方法

优先级

通过“ . ”直接设置元素的style属性

内联样式

通过 setAttribute 方法 设置元素的style属性

内联样式

通过style对象的 setProperty 方法 设置CSS属性

内联样式

通过style对象的 cssText属性,控制CSS

内联样式

通过元素的 class 属性 控制CSS

内部样式

通过创建 <style><style> 标签,引入新的样式

内部样式

通过创建 <link><link> 标签,引入新的样式

外部样式

通过 insertRule 或者 addRule 插入新的样式

内部样式 或 外部样式

这次我们就先说到这,下次我们说说如何把他们封装起来,方便我们以后使用。

本文参考 http://www.cnblogs.com/LiuWeiLong/p/6058059.html http://javascript.ruanyifeng.com/dom/css.html#toc10 http://www.cnblogs.com/susufufu/p/5749922.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年09月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
yyds
yyds
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
JavaScript -2- 设置属性的几种方法
如果属性有’-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style[‘text-align’] = ‘100px’;
为为为什么
2022/08/06
9090
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
写在 style 标签中. 嵌入到 html 内部。理论上style放在哪里都可以,但一般放在head标签中。正如上面这个例子所示。这样做可以使页面结构和样式分离,但是分离地不够彻底,尤其是当style内部内容过多时。
用户10923276
2024/03/30
1350
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
CSS从基础到熟练学习笔记(一)引入CSS样式的三种方式以及多种样式的优先级
CSS是一种样式表语言,描述了一个HTML(或XML)文档演示。CSS描述了元素是怎样渲染到屏幕、纸上或其他媒体的。内部样式和外部样式的定义顺序(引入顺序)决定了优先级高低,后指定的优先级高;内联样式优先级最高。
青山师
2023/05/04
3610
CSS从基础到熟练学习笔记(一)引入CSS样式的三种方式以及多种样式的优先级
cssText的基本使用
HTML5学堂:利用JavaScript给标签设置动态的样式,用到了大家比较熟悉的style来给标签设置样式,今天要给大家介绍另外一个cssText,它不仅用起来方便而且性能上比style更好,我们来赶紧来学习一下吧~ 利用style给标签设置CSS属性 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>HTML5Course - 梦幻雪冰</title> <link rel="stylesheet" href="
HTML5学堂
2018/03/12
1.1K0
cssText的基本使用
JavaScript DOM操作表格及样式
一.操作表格 <table>标签是HTML中结构最为复杂的一个,可以通过DOM来创建生成它(比较麻烦),或者HTML DOM来操作它。 //需要操作的table <table border="1" width="300"> <caption>人员表</caption> <thead> <tr> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> </thead> <tbody> <tr> <td>汤高</td> <td>男</td> <td>20</td> </tr> <tr
汤高
2018/01/11
3.7K0
day02_css学习笔记
day02_css学习笔记 ============================================================================= ========
黑泽君
2018/10/11
1.4K0
CSS:页面美化和布局控制
如:<div style="color:red;">hello css</div>
共饮一杯无
2022/11/28
1.4K0
CSS:页面美化和布局控制
《前端技术基础》第02章 CSS基础【合集】
层叠样式表(Cascading Style Sheets,简称CSS)是一种用于描述网页视觉表现的语言。该语言与HTML协同工作,其中HTML负责构建网页的结构,而CSS则负责定义网页的外观和格式。CSS通过一系列规则来实现样式的应用,这些规则由选择器(Selectors)和声明块(Declaration Blocks)构成。选择器的作用是明确指出哪些HTML元素将受到特定样式规则的影响,而声明块则包含了具体的样式声明,这些声明定义了元素的视觉属性和相应的值。
Rossy Yan
2025/01/13
1180
《前端技术基础》第02章 CSS基础【合集】
HTML之文本格式化、链接、头部、CSS(笔记小结)
②内部样式表 -在HTML文档头部 <head> 区域使用<style> 元素 来包含CSS;
虫无涯
2023/02/07
1.2K0
CSS简单入门
最近视频看的差不多了,就是一直没总结,这几天在上班之余,偷偷地总结吧,毕竟一些大牛已经快起飞了。
全栈程序员站长
2021/12/23
6310
CSS简单入门
使用 JS 来动态操作 css ,你知道几种方法?
JavaScript 可以说是交互之王,它作为脚本语言加上许多 Web Api 进一步扩展了它的特性集,更加丰富界面交互的可操作性。这类 API 的例子包括WebGL API、Canvas API、DOM API,还有一组不太为人所知的 CSS API。
前端小智@大迁世界
2022/06/15
2K0
使用 JS 来动态操作 css ,你知道几种方法?
JavaScript学习10:动态载入脚本和样式
我们在写Web页面的时候,须要引入非常多的JavaScript脚本文件和CSS样式文件,尤其是在站点需求量非常大的时候,脚本的需求量也随之变大,这样一来,站点的性能就会大打折扣。因此就出现了动态载入的概念。即在须要的时候才去载入相应的脚本和样式。以下我们就来看看怎样实现动态载入。
全栈程序员站长
2022/07/10
4070
js如何动态选择和操作 CSS 伪元素,例如 ::before 和 ::after
已存在元素是指DOM中存在的,伪元素则是虚拟的一种,样式也是给这个虚拟的元素使用的。
前端老道
2022/03/29
6.8K0
h5新功能data-*,好好利用,还能做数据双向绑定
标题是data-,但是这里主要讲伪元素,看明白就知道了 1、jQuery Selectors 获取伪元素的属性值 虽然JS里没有可以直接操作伪元素的选择符,然而获取其CSS属性的方法还是有的。 window.getComputedStyle 利用window.getComputedStyle方法选择到伪元素,然后利用getPropertyValue方法获取对应的属性的值。 根据MDN的文档, window.getComputedStyle(element[, pseudoElt]); 此方法包含两个参数,一
前朝楚水
2018/04/02
1.8K0
两种最简单的方式教会你如何实现前端一键换肤!( ̄_, ̄ )
今天我就教大家用两种方式实现前端一键换肤的功能,都是给予原生 css 和 js 的方法属性,不用安装任何的第三方库
用户6297767
2024/03/27
6200
两种最简单的方式教会你如何实现前端一键换肤!( ̄_, ̄ )
JS它DOM
DOM:document object model。文档对象模型。它主要由许多节点。而基于JS对象的一切视角,DOM核心是节点对象和操作方法的属性。从下面三方面来介绍DOM。
全栈程序员站长
2022/07/06
3.3K0
JS它DOM
JavaScript 高级程序设计(第 4 版)- DOM
scrollIntoView()方法存在于所有HTML元素上,可以滚动浏览器窗口或容器元素以便包含元素进入视口。参数如下:
Cellinlab
2023/05/17
1.2K0
JavaScript 高级程序设计(第 4 版)- DOM
【CSS3】css开篇基础(1)
作用: 标签选择器可以把某一类标签全部选择出来,比如所有的<div>标签和所有的<span>标签
E绵绵
2024/10/03
1480
【CSS3】css开篇基础(1)
dom-to-image库是如何将html转换成图片的
dom-to-image库可以帮你把dom节点转换为图片,它的核心原理很简单,就是利用svg的foreignObject标签能嵌入html的特性,然后通过img标签加载svg,最后再通过canvas绘制img实现导出,好了,本文到此结束。
街角小林
2024/02/12
1.5K0
dom-to-image库是如何将html转换成图片的
JavaScript 动态加载脚本和样式
3大点: 1.元素位置 2.动态脚本 3.动态样式 一.元素位置 getBoundingClientRect()。这个方法返回一个矩形对象,包含四个属性:left、top、right和bottom。分别表示元素各边与页面上边和左边的距离。 var box = document.getElementById('box');//获取元素 alert(box.getBoundingClientRect().top);//元素上边距离页面上边的距离 alert(box.getBoundingClientRect()
汤高
2018/01/11
1.4K0
推荐阅读
相关推荐
JavaScript -2- 设置属性的几种方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验