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

javascript学习——CSS 操作总结 CSSStyleDeclaration 接口用来操作元素的样式。三个地方部署了这个接口。元素节点的style属性(CSSStyle实例的style属性的返回值CSSStyleDeclaration 接口可以直接读写 CSS 的样式属性,不过,连词号需要变成骆驼拼写法。上面代码中,style属性的值是一个 CSSStyleDeclaration 实例。这个对象所包含的属性与 CSS 规则一一对应,但是名字需要改写,比如写成。 阅读详情

说明

通过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;
例如:

document.body.style.width = '100px';    

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

document.body.style.backgroundColor= 'red';  

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

document.body.style['background-color']= 'red';  

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

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

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

语法:

element.setAttribute(attributename,attributevalue)

例如:

var a = document.body;
a.setAttribute("style","background-color:red;height:100px;");    

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

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

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

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

语法:

element.style.setProperty (propertyName, propertyValue, priority);

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

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属性设置或返回样式声明的内容作为字符串。

语法:

element.style.cssText = string

例如:

document.body.style.cssText = "background-color:red";

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

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

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

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

语法:

element.className = 'className';   

例如:

<!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>,给元素加上样式

例如:

<!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):

.redBg{
	background-color:red;
}

HTML页面:

<!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规则
语法:

stylesheet.insertRule(rule, index)

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

例如:

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方法
语法:

object.addRule (selector, styleDef [, positionIndex]);

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

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属性。
例如:

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

js操作CSS样式简单案例 js操作CSS样式简单案例 案例1.设计网页换肤 js可实现用户对页面中的选择条件改变页面中的样式,页面样式可以通过style修饰,也可以通过css修饰,先来看一下js改变style样式,代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> ... 阅读详情

相关推荐

JavaScript操作CSS样式的方法汇总

在上面的代码中,我们首先通过getElementsByClassName方法获取了所有类名为"myClass"的元素,然后使用classList属性的add方法和remove方法来添加和移除CSS类。在上面的代码中,我们首先通过getElementById方法获取了id为"myElement"的元素,然后使用style属性来修改其样式。在上面的代码中,我们通过querySelector方法获取了类名为"myClass"的第一个元素,然后使用style属性来修改其样式。

CsCufft的博客 373

addRule和insertRule的封装,看完就懂!

记录一下js调用样式的方法addRule和insertRule 在js文件中要包括以下内容:创建DOM,创建CSS和实际开发内容;这样一个JS就把html、css和行为内容都囊括了,不需要引css,只引入这个js就能全部执行完。 使用这种方法还能防止css拷贝,下图可以看到单独引入的css文件是可以直接拷贝的 但是div1和div2的样式通过addRule和insertRule方法添加不会显示在css文件,也不会显示在HTML页面中; 下面了解一下document.styleSheets consol

kl2115911的博客 3230

Tooltip的两种实现方式:纯CSS与JavaScript

本文还有配套的精品资源,点击获取 简介:Tooltip是一种网页交互功能,用于在鼠标悬停时显示提示信息。本文介绍了两种实现Tooltip的方法,包括纯CSS方法和JavaScript方法。纯CSS方法利用伪元素和:hover选择器实现简单且响应迅速的提示框;而JavaScript方法则提供了更高的灵活性和动态内容支持,但可能带来额外的性能开销。文章通过具体的代码示例和解释,...

weixin_35755562的博客 3057

使用js操作css

JavaScript如何操作css

weixin_67235801的博客 3777

格拉姆角场(GAF)实战:用Python实现时间序列图像化处理

本文深入解析了格拉姆角场(GAF)技术,这是一种将一维时间序列转化为二维图像特征的方法,以便利用卷积神经网络(CNN)等图像模型进行深度分析。文章通过Python实战代码,详细演示了GASF和GADF两种核心转换的实现过程,并探讨了其在时序数据分类任务中的应用,为故障预警、金融模式识别等场景提供了强大的图像驱动分析视角。

weixin_29079671的博客 272

SEED-VII 实战指南:如何利用多模态脑电图数据提升情感识别精度

本文提供了SEED-VII多模态脑电图数据集的实战指南,详细介绍了如何利用该数据集提升情感识别精度。内容涵盖数据获取、预处理、特征提取,以及构建多模态融合神经网络模型的关键步骤,并强调了被试者独立评估的重要性,为情感计算研究者提供了从数据到模型的全流程解决方案。

weixin_29196891的博客 316

javascript中控制css样式的方法

javascript中控制css样式的方法? 1.通过修改元素的style属性 2.通过classList属性 3.通过classList属性和CSS样式表 4.通过className属性

qq_68805187的博客 1808

基于OpenMV与双舵机云台的激光追踪系统实战解析

本文详细解析了基于OpenMV摄像头与双舵机云台的激光追踪系统设计与实现。从硬件选型、图像识别算法到PID控制逻辑,全面介绍了如何构建一个高效稳定的激光追踪系统,并分享了电子设计竞赛中的实战经验与调试技巧。该系统在智能玩具、安防监控及教学演示等领域具有广泛应用前景。

prometheus9mon的博客 261

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

说明上次我们说了8种通过JS控制CSS的方式,但这么多方式,应该用哪一种哪?哪一种又更适合我们呢?今天我们来说说这个。 解释我们用过的各种类库或者框架中,经常会使用到JS控制CSS的函数,比如JQuery中的css() 方法。 想明白JQuery中的css() 方法的实现原理,看这里 http://www.111cn.net/wy/jquery/97254.htm 今天我们也简单的实现一

FEWY的博客 675

GPlates——【将化石点标记在古地理图上时,改变标记点的大小和形状】

GPlates在还原古地理图和计算古坐标点上功能十分卓越,最近在使用它标注某个类群的化石坐标点时,这些点在地图上显示得非常小,让人不易察觉。作为一款优秀的GUI应用,应该具备更改标记点外观的功能,然而在查阅了官方手册,pygplates API后,表明不管是桌面应用还是python接口,都无法简便地修改标记点的外观。在之前GPlates学习和最近的pygplates学习中,印象里有可以改变标记点外观的东西,叫做。当然,这又诱使我翻了一遍资料,然而又没有直接关于symbol的资料。

whitedrogen的博客 2539

VC Spyglass实战指南:从零开始掌握CDC约束配置与调试

本文详细介绍了如何使用VC Spyglass进行CDC约束配置与调试,从基础环境搭建到典型CDC问题调试实战,帮助开发者快速掌握跨时钟域验证技术。通过TCL脚本和SDC约束的深度解析,提升CDC验证效率,避免常见设计风险。

weixin_26757925的博客 294

CSS与JavaScript的简单认识

提示:在html文档中,可以在任何地方,放置任意数量的script标签。1、string:按照字符串的字母值,转换为数字,如果字面值不是数字,例如var str=‘abc’,则转换为NaN。boolean:布尔。window:弹框方法:alert()弹出警告框和comfirm()弹出有确认和取消按钮的对话框。let关键字来定义变量,用法与var类似,但是声明的变量,只能在let关键字所在的代码块内有效,且不允许重复声明变量名相同的变量。Element对象中的俩个常用属性: style:设置元素css样式。

hguhbh的博客 1606

CARLA仿真:自定义地图与AI车辆行为编程

CARLA仿真:自定义地图与AI车辆行为编程 ,人工智能,计算机视觉,大模型,AI,本文围绕CARLA仿真平台,介绍了其基础功能与安装方法,详解地图系统,包括预设地图的加载切换及自定义地图的创建、导入与优化。还阐述了AI车辆的创建、属性设置、销毁,以及行为控制,如交通规则遵守、路径规划、复杂行为编程和行为树应用。同时涉及传感器与车辆感知、交通场景构建、自定义地图与AI行为结合应用、高级应用,以及常见问题解决方案和学习资源,为CARLA仿真应用提供全面指导。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 11万+

HTML、CSS、JavaScript(JS)入门

HTML是网页的基础结构,负责内容的组织和呈现。CSS提供样式,使网页美观、布局清晰。JavaScript为网页添加动态交互功能,响应用户的操作。三者相互协作,共同构成了一个完整的现代网页。HTML 构建结构,CSS 提供样式,JavaScript 赋予网页交互性,合力打造用户体验良好的网页。

cyt涛的博客 7571

基于Simulink的加速度计振动分析:单自由度质量-弹簧-阻尼系统

摘要:基于Simulink的加速度计单自由度振动分析 本文研究了加速度计的单自由度(SDOF)质量-弹簧-阻尼系统模型,通过MATLAB/Simulink平台建立了完整的振动分析仿真系统。文章详细阐述了理论建模过程,推导了系统运动微分方程和传递函数,并提供了Simulink模型搭建的具体步骤和MATLAB实现代码。研究通过正弦扫频、随机振动和冲击响应三种典型输入信号,分析了系统的幅频特性、相频特性及时域响应,验证了加速度计的工作机理。仿真结果表明,该方法能有效模拟加速度计在不同激励条件下的动态特性,为传感器

AI的内部世界的博客 162

华为OD机试双机位C卷:字符串计数匹配 (C/C++/Py/Java/Js/Go)

华为OD机试双机位C卷 字符串计数匹配,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为OD机试 字符串计数匹配, 华为OD上机考试 - 字符串计数匹配。

qq_45776114的博客 1647

【前端灵魂脚本语言JavaScript①】——JS引入方式

Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言

Python全栈系列 3万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【JavaScript、CSS】css动画、js动画

动画css动画js动画 css动画 js动画

南栀的博客 1114

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用js控制css样式

使用js控制css样式 js拥有很多强大的功能,这里就说一下它的一个控制css最基础的功能,代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js控制css样式</title> <script&g...

gghhm的博客 8553

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

js动画和css动画的区别?

js动画和css动画的区别

BANaanaa的博客 1538

JavaScript控制css的样式

JavaScript控制css的样式 属性使用id,在script中使用方法getElementById 这是通过js控制css样式: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> ...

paul0926的博客 1015

孤陋寡闻了,才知道已经可以用 JS 来控制 CSS 动画了

主要包含两个APIanimate来执行动画,来获取当前元素的动画。并且不止可以获取到animate创建的动画,css中的动画同样可以获取到。通过系列API可以方便的控制已有的CSS动画、添加动画等,而不需要像以前一样使用JS来模拟动画,在某些特定场景下可以提高动画性能、简化动画代码。最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。有需要的小伙伴,可以点击下方卡片领取,无偿分享。

梅花寺 3414

冷门API,JS控制css动画——前端动画的一种方式

实验性API ,Animation,使用js来控制CSS动画

qq_42780885的博客 1634

CSS和JavaScript的引用方式

可读性差,在html中编写JS大量代码时,不方便阅读;可以将单行或少量JS代码写在HTML标签的事件属性中(以on开头的属性),如onclick。利于HTML页面代码结构化,把大段JS代码独立到HTML页面之外,既美观,也方便文件级别的复用。注意单双引号的使用在HTML中我们推荐使用双引号,JS中我们推荐使用单引号。样式单独写到CSS文件中,再将CSS文件引入到HTML页面中。实际开发中都是外部样式表,适用于样式比较多的情况。属性中设定CSS样式,适合修改简单样式。............

一指流沙的博客 2645

html用js做按钮控制动画,【转载】如何使用JavaScript控制CSS Animations和Transitions

Zach邮件跟我说,上Stack Overflow这类的论坛,他经常碰到一些关于JavaScript控制CSS 动画的问题,又提供给我几个例子。我很早就打算写一些关于这方面的文章,所以很高兴让Zach提出来并促使我写了这个教程。有时候Web开发人员认为CSS的动画比JavaScript的动画更难理解。虽然CSS动画有其局限性,但它的性能比大多数JavaScript库更加高效,因为它可以借助硬件加速...

weixin_30014783的博客 908

响应式布局 css控制和js控制

响应式也称自适应,这样就不用开发PC和wap多个网站版本了,同时可以兼容PC,PAD,Phone版本。CSS控制(宽度要通过百分比进行控制)/*默认尺寸 width:1920*/ .page-event .content { overflow:hidden; }.page-event .content .nav { overflow:hidden; margin-top:33px; padding:

jason_czm的博客 2089
上一篇: 简单说 background-color 与 backgroundColor的区别
下一篇: JavaScript数组去重—ES6的两种方式
FEWY
FEWY 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 504粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值