原生javascript实现读写CSS样式的方法详解

原生JavaScript实现读写CSS样式的方法详解

CSS样式可以通过JavaScript动态地进行修改和设置,而这些操作也被称作DOM样式操作。在本文中,我将详细讲解原生JavaScript实现读写CSS样式的方法。

1. 通过style属性读写CSS属性

通过元素的style属性可以获取或修改该元素的行内样式。行内样式是直接写在HTML标签中的样式,优先级最高。

读取行内样式

使用element.style.property即可获取对应属性的值。例如,获取一个div元素的宽度和高度:

const divElement = document.querySelector('div');
const width = divElement.style.width;
const height = divElement.style.height;

修改行内样式

通过element.style.property可以修改行内样式的值。例如,修改上面div元素的宽度和高度:

divElement.style.width = '100px';
divElement.style.height = '50px';

同时,也可以使用style.cssText来一次性修改多个属性:

divElement.style.cssText = 'width: 100px; height: 50px; background-color: #f00;';

2. 通过getComputedStyle方法读取计算后的样式

通过window.getComputedStyle()方法可以获取到计算后的样式,计算后的样式是从浏览器解析样式表后计算出来的,具有最高的优先级。

读取计算后的样式

使用window.getComputedStyle(element, [pseudo])即可获取计算后的属性值。其中,element是要获取属性值的元素节点,pseudo是可选参数,表示要获取的伪元素的属性值。

例如,获取一个div元素的背景颜色和字体大小:

const divElement = document.querySelector('div');
const bgColor = window.getComputedStyle(divElement).backgroundColor;
const fontSize = window.getComputedStyle(divElement).fontSize;

修改计算后的样式

通过getComputedStyle方法只能获取计算后的样式值,无法直接修改计算后的样式。如果需要修改计算后的样式,需要通过其他方式改变元素的样式属性,才能改变计算后的样式。

示例说明

示例1

<!DOCTYPE html>
<html>
<head>
  <title>示例1</title>
</head>
<body>
  <div id="box" style="width: 100px; height: 100px; background-color: #f00;"></div>
  <button onclick="changeColor()">改变颜色</button>
  <script>
    const boxElement = document.querySelector('#box');
    const colorList = ['#f00', '#0f0', '#00f'];
    function changeColor() {
      const currentColor = window.getComputedStyle(boxElement).backgroundColor;
      let index = colorList.indexOf(currentColor);
      index++;
      if (index >= colorList.length) {
        index = 0;
      }
      boxElement.style.backgroundColor = colorList[index];
    }
  </script>
</body>
</html>

在这个例子中,我们在页面中添加了一个div元素和一个按钮。点击按钮时,该元素的背景颜色可以循环变为红色、绿色、蓝色。该例子中同时使用了行内样式和计算后的样式获取和修改元素的样式。

示例2

<!DOCTYPE html>
<html>
<head>
  <title>示例2</title>
  <style>
    #box{
      width: 100px;
      height: 100px;
      background-color: #f00;
    }
    #box:hover {
      background-color: #0f0;
      border-radius: 50%;
    }
  </style>
</head>
<body>
  <div id="box"></div>
  <button onclick="changeColor()">改变颜色</button>
  <script>
    const boxElement = document.querySelector('#box');
    function changeColor() {
      boxElement.style.backgroundColor = '#00f';
    }
  </script>
</body>
</html>

在这个例子中,我们使用了CSS样式表中的:hover伪类为元素添加了一个圆形的边框。当鼠标悬停时,元素的背景颜色将变为绿色,并带有圆形边框。当点击按钮时,元素的背景颜色将直接变为蓝色,而圆形边框则不再出现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生javascript实现读写CSS样式的方法详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • vue实现用户动态权限登录的代码示例

    一、前言 动态权限登录是提高系统安全性的一种关键技术。因此,在设计web系统时,考虑实现用户的动态权限登录是十分必要的。vue是一款广泛使用的前端框架,拥有便捷的数据绑定和组件化等特点,可以很好地满足我们的需求。本文主要以vue实现用户动态权限登录为例,提供具体的代码示例和实现方法。在本文中,我将介绍两条实现动态权限登录的提示。 二、实例1 首先,我们来看一…

    css 2023年6月10日
    00
  • 浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势

    下面是详细的攻略: 什么是 Yii2 AssetBundle? Yii2 为我们提供了一个非常实用的 AssetBundle 类,用于管理资源文件,包括 CSS、JS、图片等文件,使得我们能够更好地组织资源文件,减少重复代码,提高代码可读性与可维护性。 为什么要使用 $publishOptions? 在 Yii2 中,我们可以通过以下方式来注册资源文件: $…

    css 2023年6月10日
    00
  • Vue 中驼峰命名与短横线分割命名的用法及区别

    接下来我来详细讲解 Vue 中使用驼峰命名和短横线分割命名的用法及区别。 Vue 中支持使用驼峰命名和短横线分割命名,两种命名方式的主要区别是:驼峰命名方式将每个单词的首字母大写,而短横线分割命名方式每个单词之间用横线分割。 在 Vue 模板中,驼峰命名方式和短横线分割命名方式都是可以使用的,但是在写组件时应该选择一种风格,并保持一致性,以便于代码的阅读和维…

    css 2023年6月9日
    00
  • webpack 静态资源集中输出的方法示例

    下面是详细讲解“webpack 静态资源集中输出的方法示例”的完整攻略。 什么是静态资源集中输出? 静态资源指的是网页中不需要经过服务器处理直接能被使用的文件,包括但不限于 CSS、JS 文件、图片文件。静态资源集中输出是指在打包构建时将这些文件从各自的模块中提取出来,集中输出到指定的目录中,以单独文件的形式发挥作用。 webpack 静态资源集中输出的方法…

    css 2023年6月9日
    00
  • jquery模拟实现鼠标指针停止运动事件

    实现鼠标指针停止运动事件可以通过以下步骤实现: 获取鼠标位置并设置定时器 我们可以利用mousemove事件,获取鼠标位置,并将其保存在一个变量中。然后,设置一个定时器,每隔一段时间检查鼠标位置是否发生变化。 let lastMouseX, lastMouseY; $(document).on(‘mousemove’, function(e) { lastM…

    css 2023年6月9日
    00
  • js实现添加删除表格操作

    针对“js实现添加删除表格操作”的问题,我将提供一份完整攻略,包含以下步骤: HTML结构 首先需要构建一个表格的HTML结构,具体代码如下: <table id="myTable"> <thead> <tr> <th>Name</th> <th>Age</th…

    css 2023年6月10日
    00
  • Vue使用Less与Scss实现主题切换方法详细讲解

    下面是“Vue使用Less与Scss实现主题切换方法详细讲解”的完整攻略。 1. 使用Less实现主题切换 1.1 安装Less 在Vue项目中使用Less,首先需要安装Less的依赖,可以使用npm进行安装: npm install less less-loader –save-dev 1.2 配置webpack 在Vue项目的webpack配置文件中,…

    css 2023年6月9日
    00
  • CSS如何对齐文本框和其旁边的图像按钮比如搜索框等等

    在 CSS 中,我们可以使用多种方法来对齐文本框和其旁边的图像按钮,例如搜索框等。下面是完整攻略,包含了如何使用 CSS 实现对齐的过程和两个示例说明。 CSS 实现对齐文本框和其旁边的图像按钮 步骤一:使用 display:inline-block 属性 我们可以使用 display:inline-block 属性来对齐文本框和其旁边的图像按钮。例如: &…

    css 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部