原生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日

相关文章

  • AngularJS学习笔记之表单验证功能实例详解

    这篇文章将详细讲解如何使用AngularJS实现表单验证功能。下面将分步说明该过程: 1. 引入AngularJS 首先,我们需要在我们的HTML文件中引入AngularJS的库文件。可以使用CDN或下载到本地并放在项目中。 通过CDN引入AngularJS库文件: <script src="https://cdn.bootcdn.net/a…

    css 2023年6月10日
    00
  • jQuery 选择器(61种)整理总结

    jQuery 选择器(61种)整理总结 什么是jQuery选择器 在jQuery中,选择器是用来选择HTML元素的一种方法。jQuery允许你使用CSS选择器,DOM元素和自定义的选择器来选择DOM元素。 基本选择器 基本选择器用于选择指定的HTML元素。jQuery提供了以下基本选择器: 1. 元素选择器 元素选择器选取特定类型的元素。语法为: $(ele…

    css 2023年6月10日
    00
  • 详解关于使用媒体查询@meda失效原因的总结

    下面是关于使用媒体查询@meda失效的原因总结以及解决方法的攻略。 1. 原因总结 在使用媒体查询@media的过程中,可能会遇到查询语句没有生效的情况。这种情况的原因可能存在以下几个方面: 1.1 屏幕宽度不符合媒体查询规则 如果媒体查询的条件语句不符合当前屏幕的宽度或高度,那么这个媒体查询语句就会失效。比如说,如果你写了一个针对移动端屏幕的媒体查询,但是…

    css 2023年6月10日
    00
  • vue.js整合mint-ui里的轮播图实例代码

    下面是详细讲解“vue.js整合mint-ui里的轮播图实例代码”的完整攻略: 一、前置知识 在学习本文前,需要对以下内容有一定的基础了解: Vue.js Mint UI Vue CLI 二、创建vue项目 首先需要使用Vue CLI创建一个新的Vue项目,执行下面的命令: vue create my-project 其中,my-project是项目名称。 …

    css 2023年6月9日
    00
  • Vue中jsx不完全应用指南小结

    Vue中jsx不完全应用指南小结 什么是JSX? JSX是JavaScript的一种语法扩展,允许我们在JavaScript中编写类似HTML的代码,使得开发者可以使用一种更直观的方式去创建UI。类似于下面的代码: const element = <h1>Hello, world!</h1>; 在Vue的官方文档中提到,Vue可以使用…

    css 2023年6月9日
    00
  • html转换为pdf案例的一些总结(多图推荐)

    关于“html转换为pdf案例的一些总结”,我可以给你提供以下完整攻略: 1. 背景 在实际开发中,我们经常需要将网页截图或者某些页面内容直接导出为PDF文件。而html转pdf正是这种需求的一种较成熟的解决方案。 2. 实现原理 利用现有第三方库(比如 wkhtmltopdf)将html内容转换为PDF格式,并提供PDF文件的下载或者在浏览器直接展示。 3…

    css 2023年6月9日
    00
  • Python&Matlab实现炫酷的3D旋转图

    下面是“Python&Matlab实现炫酷的3D旋转图”的完整攻略: 一、前置知识 在学习“Python&Matlab实现炫酷的3D旋转图”之前,需要掌握以下基础知识: Python或Matlab语言基础; NumPy、Matplotlib等数据和图形绘制库的使用; 3D坐标系的概念和表示方法; 常用的3D向量操作,如向量叉乘、点乘等。 同时…

    css 2023年6月10日
    00
  • CSS缩写优化CSS文件的体积

    CSS缩写优化可以减少CSS文件的体积以加快网站的加载速度。下面是优化CSS文件的体积过程中的攻略: 第一步:减少重复的代码 当有重复的代码时,可以通过缩写属性来减少体积。比如可以把下面的代码: h1 { font-style: normal; font-variant: normal; font-weight: normal; font-size: 2em…

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