css content 与 HTML, JavaScript 的联动

HTML, CSS, JavaScript 三方相互分离, 各司其职
这是前端开发的初学者都知道基本原则


尤其是 CSS, 虽然和 JavaScript, 都是围着 HTML 转, 但两者间是鲜有来往
而 CSS 和 HTML 的关系是 CSS 修饰 HTML, 几乎都是 CSS 单方面指挥 HTML
整体来讲, CSS 是个"独立的孩子"


但凡事都有例外, 在很个别的情况下, CSS 还是要受到 HTML 的控制
比如伪类的 content 属性


很多初学者只知道伪类的 content 可以设成字符串, 却不知道还可以设成 attr() 表达式, 从而获取动态数据
content 还可以拼接文本内容, 多 attr() 连用

css 中 content: attr(属性名);
对应
HTML 中 属性名=“content 获取到的值”
详见demo

demo

<!DOCTYPE html>
<html>

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta charset="utf-8">
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
	<title>css content 与 HTML, JavaScript 的联动</title>
	<style>
		.div::before {
     
     
			outline: 1px green solid;
			content: attr(data-before);
		}

		.div::after {
     
     
			outline: 1px green solid;
			content: attr(data-after);
		}

		#div3::after {
     
     
			content: "还可以拼接文本内容, 多 attr() 连用 "attr(data-after)" , "attr(data-before);
		}
	</style>
</head>

<body>

	<div class="div" id="div0" data-before="初始 before" data-after="初始 after"> div </div>
	<div class="div" id="div1" data-before="初始 before" data-after="初始 after"> div </div>
	<div class="div" id="div2" data-before="初始 before" data-after="初始 after"> div </div>
	<div class="div" id="div3" data-before="初始 before" data-after="初始 after"> div </div>

	<script type="text/javascript">
		"use strict"

		window.onload = function () {
     
     
			document.getElementById("div1").setAttribute("data-after", "setAttribute 修改了 after")
			document.getElementById("div2").dataset.before = "dataset 修改了 before"

		}
	</script>
</body>

</html>

一旦 CSS 的值与 HTML 元素的属性值挂钩, 那么用 JavaScript 获取修改该值就是轻轻松松的事了

end

猜你喜欢

转载自blog.csdn.net/u013970232/article/details/110533414