使用 JS 将所有样式从一个元素复制到另一个元素
使用 JS 将所有样式从一个元素复制到另一个元素:
-
使用
document.createElement()
方法创建另一个元素。 - 获取包含原始元素样式的字符串。
-
在新创建的元素上将 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
方法,但这可以是任何其他节点。
如果我打开上面示例中的页面,我可以看到第一个元素的样式已成功应用到第二个元素。
这些元素在我的浏览器中看起来完全相同。
相关文章
将 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 格式。
在 Go 中将 JSON 转换为 struct 结构体
发布时间:2023/04/27 浏览次数:65 分类:Go
-
本篇文章介绍如何将 JSON 转换为 GoLang 中的 struct。在 Go 中使用 Unmarshal 方法将 JSON 转换为 Struct
将 Python 类对象序列化为 JSON
发布时间:2023/04/25 浏览次数:154 分类:Python
-
本教程介绍序列化过程。 它还说明了我们如何使用 toJSON() 方法使 JSON 类可序列化,并包装 JSON 以转储到其类中。
Python 使用 JSON Diff 比较多级 JSON 对象
发布时间:2023/04/25 浏览次数:78 分类:Python
-
本文旨在介绍我们如何在Python中比较两个多级 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。