在ClojureScript中使用内联CSS的:hover
状态时,可能会遇到不呈现的问题。这通常是由于浏览器的渲染机制和JavaScript的执行环境导致的。以下是一些基础概念和相关解决方案:
style
属性中定义CSS样式。:hover
状态: CSS伪类,用于定义鼠标悬停在元素上时的样式。:hover
状态无法正确绑定。:hover
状态处理不当,尤其是在动态生成的元素上。将CSS样式定义在外部文件中,并通过<link>
标签引入。这样可以确保样式在DOM加载完成后正确应用。
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="my-element">Hover over me</div>
<script src="app.js"></script>
</body>
</html>
/* styles.css */
#my-element:hover {
background-color: yellow;
}
在ClojureScript中使用JavaScript动态添加:hover
状态的样式。
(ns my-app.core
(:require [goog.dom :as dom]
[goog.style :as style]))
(defn add-hover-effect []
(let [element (dom/getElement "my-element")]
(style/setStyle element "backgroundColor" "yellow")
(dom/listen element "mouseout" #(style/setStyle element "backgroundColor" ""))))
(defn ^:export init []
(add-hover-effect))
使用CSS-in-JS库(如styled-components)来管理样式,这样可以更好地与JavaScript代码集成。
(ns my-app.core
(:require [my-app.styles :as styles]))
(defn ^:export init []
(let [element (dom/createDom "div" {"id" "my-element"} "Hover over me")]
(dom/appendChild (dom/getBody) element)
(styles/add-hover-effect element)))
// styles.js
import styled from 'styled-components';
const StyledDiv = styled.div`
&:hover {
background-color: yellow;
}
`;
export function addHoverEffect(element) {
const styledElement = document.createElement('div');
styledElement.innerHTML = element.innerHTML;
element.parentNode.replaceChild(styledElement, element);
}
通过以上方法,可以有效解决ClojureScript中内联CSS :hover
状态不呈现的问题。
领取专属 10元无门槛券
手把手带您无忧上云