您正在更改p元素的变量,而不是整个主体(或:root)的变量,这样div就不会受到影响。
但是,由于div位于p元素之后,并且是它的直接同级,因此可以使用+组合子来影响该div的CSS变量的设置。
:root {
--show-state: none;
--p-color: black;
}
body {
padding: 2rem;
}
body>div {
color: var(--p-color);
display: var(--show-state);
}
body>p {
border: 2px solid var(--p-color);
cursor: pointer;
padding: 1rem;
color: var(--p-color);
}
body>p:hover+div {
--p-color: blue;
--show-state: block;
}
<html>
<head>
<title>Parcel Sandbox</title>
<meta charset="UTF-8" />
<link rel="stylesheet" href="./style.css" />
</head>
<body>
<p>Hover here to see magic</div>
<div>Hello World</div>
</body>
</html>