迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 >

使用 JS 将所有样式从一个元素复制到另一个元素

作者:迹忆客 最近更新:2022/12/23 浏览次数:

使用 JS 将所有样式从一个元素复制到另一个元素:

  1. 使用 document.createElement() 方法创建另一个元素。
  2. 获取包含原始元素样式的字符串。
  3. 在新创建的元素上将 CSS 字符串指定为 cssText

以下是本文示例的 HTML。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />

    <style>
      #box {
        font-size: 2rem;
        color: white;
        margin-top: 10px;
      }
    </style>
  </head>

  <body>
    <div id="box" style="background-color: salmon; width: 150px; height: 150px">
      Box content
    </div>

    <script src="index.js"></script>
  </body>
</html>

这是相关的 JavaScript 代码。

const box = document.getElementById('box');

// 👇️ Create another element
const another = document.createElement('div');
another.innerHTML = 'Another content';

// 👇️ Get computed styles of original element
const styles = window.getComputedStyle(box);

let cssText = styles.cssText;

if (!cssText) {
  cssText = Array.from(styles).reduce((str, property) => {
    return `${str}${property}:${styles.getPropertyValue(property)};`;
  }, '');
}

// 👇️ Assign css styles to element
another.style.cssText = cssText;

// 👇️ (optionally) add the element to the DOM
document.body.appendChild(another);

我们使用 createElement 方法创建了一个 div 元素。

window.getComputedStyle 方法返回一个包含元素所有 CSS 属性值的对象。

我们使用了 getComputedStyle 方法而不是 style 属性,因为 getComputedStyle 方法考虑了外部样式表并解析了值中包含的计算。

cssText 属性返回元素样式的文本,但并非所有浏览器都支持,有时会返回空字符串。

如果不支持该属性,我们将遍历计算出的样式以手动创建包含元素样式的字符串。

我们传递给 Array.reduce 方法的函数被数组中的每个元素(CSS 样式属性名称)调用。

我们传递了一个空字符串作为 str 变量的初始值。

在每次迭代中,我们将当前 CSS 属性名称及其值附加到累积的字符串中并返回结果。

我们从回调函数返回的值在下一次迭代中作为 str 变量传递。

在最后一次迭代之后,cssText 变量包含一个包含原始元素所有样式的字符串。

最后一步是将字符串分配给元素的 style.cssText 属性。

我们可以选择使用 appendChild 方法将节点添加到调用该方法的元素的子元素列表的末尾。

在示例中,我们在 body 元素上调用了 appendChild 方法,但这可以是任何其他节点。

如果我打开上面示例中的页面,我可以看到第一个元素的样式已成功应用到第二个元素。

JavaScript 应用于其他元素的样式

这些元素在我的浏览器中看起来完全相同。

JavaScript 元素看起来相同

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

将 HTML 转换为 JSON

发布时间:2023/05/05 浏览次数:135 分类:HTML

本篇文章介绍如何将 HTML 转换为 JSON。使用 JavaScript JSON.stringify() 方法将 HTML 转换为 JSON JSON 类似于 JavaScript 对象,不同的是 key 在 JSON 中被写成一个字符串。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

将 Python 类对象序列化为 JSON

发布时间:2023/04/25 浏览次数:154 分类:Python

本教程介绍序列化过程。 它还说明了我们如何使用 toJSON() 方法使 JSON 类可序列化,并包装 JSON 以转储到其类中。

在 Python 中展平 JSON

发布时间:2023/04/25 浏览次数:98 分类:Python

本教程将讨论使用 Python 中的条件语句、循环和 type() 函数来展平 JSON。

使用 Python 将数据附加到 JSON 文件

发布时间:2023/04/25 浏览次数:85 分类:Python

大多数 Web 应用程序和 Rest API 向用户提供 JSON 格式的数据,因为它在 Web 应用程序中被广泛使用且易于理解。 本教程介绍了使用 Python 将数据附加到 JSON 文件的可能方法。

如何在 Python 中将 JSON 转换为字典

发布时间:2023/04/22 浏览次数:186 分类:Python

在 Python 中,JSON(JavaScript Object Notation)是一种轻量级数据交换格式,常用于将数据从服务器发送到客户端。当我们需要将 JSON 数据解析为 Python 字典时,可以使用内置的 json 模块。本文

使用 NodeJS 检查 MongoDB 中是否存在集合

发布时间:2023/04/21 浏览次数:194 分类:MongoDB

在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便