首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

内联CSS :hover状态在clojurescript中不呈现

在ClojureScript中使用内联CSS的:hover状态时,可能会遇到不呈现的问题。这通常是由于浏览器的渲染机制和JavaScript的执行环境导致的。以下是一些基础概念和相关解决方案:

基础概念

  1. 内联CSS: 直接在HTML元素的style属性中定义CSS样式。
  2. :hover状态: CSS伪类,用于定义鼠标悬停在元素上时的样式。
  3. ClojureScript: 一种将Clojure语言编译成JavaScript的语言,常用于前端开发。

可能的原因

  1. JavaScript执行时机: ClojureScript生成的JavaScript代码可能在DOM完全加载之前执行,导致:hover状态无法正确绑定。
  2. 浏览器渲染机制: 某些浏览器可能对内联样式的:hover状态处理不当,尤其是在动态生成的元素上。

解决方案

方案一:使用外部CSS文件

将CSS样式定义在外部文件中,并通过<link>标签引入。这样可以确保样式在DOM加载完成后正确应用。

代码语言:txt
复制
<!-- 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>
代码语言:txt
复制
/* styles.css */
#my-element:hover {
    background-color: yellow;
}

方案二:使用JavaScript动态添加样式

在ClojureScript中使用JavaScript动态添加:hover状态的样式。

代码语言:txt
复制
(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库

使用CSS-in-JS库(如styled-components)来管理样式,这样可以更好地与JavaScript代码集成。

代码语言:txt
复制
(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)))
代码语言:txt
复制
// 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);
}

应用场景

  • 动态生成的元素: 当元素是通过JavaScript动态生成时,使用外部CSS或JavaScript动态添加样式更为可靠。
  • 复杂交互: 对于需要复杂交互效果的页面,使用CSS-in-JS库可以更好地管理样式和状态。

通过以上方法,可以有效解决ClojureScript中内联CSS :hover状态不呈现的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

二、CSS

6、伪类及伪元素选择器 常用的伪类选择器有hover,表示鼠标悬浮在元素上时的状态,伪元素选择器有before和after,它们可以通过样式在元素中插入内容。... CSS盒子模型 盒子模型解释  元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式。盒子模型示意图如下: ?...盒子占据一行、即使设置了宽度 内联元素 内联元素,也可以称为行内元素,布局中常用的标签如:a、span、em、b、strong、i等等都是内联元素,它们在布局中的行为: 支持部分样式(不支持宽、高、margin...属性值设置子元素垂直对齐方式 这三种元素,可以通过display属性来相互转化,不过实际开发中,块元素用得比较多,所以我们经常把内联元素转化为块元素,少量转化为内联块,而要使用内联元素时,直接使用内联元素...不改变默认行为 forwards 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义) backwards 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值

1.8K70
  • CSS基础知识

    3.外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css ”为扩展名,在内(不是在标签内)使用标签将css样式文件链接到...;} 5-7 伪类选择符 更有趣的是伪类选择符,为什么叫做伪类选择符,它允许给html不存在的标签(标签的某种状态)设置样式,比如说我们给html中一个标签元素的鼠标滑过的状态来设置字体颜色: a:hover...css盒模型 8-1 元素分类 在讲解CSS布局之前,我们需要提前知道一些知识,在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素、内联元素(又叫行内元素)和内联块状元素。...3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。...也就是说网页在默认状态下的 HTML 网页元素都是根据流动模型来分布网页内容的。

    1.3K20

    前端构建:Source Maps详解

    在sample.cljs文件中设置断点,然后调用sample.becomeGeek调试即可! Chrome的devTools: ? FF的devTools: ?...支持的浏览器及启用方式 Chrome,devTools的Settings中开启JS和CSS的Source Maps功能。 ? FF,默认已经开启JS和CSS的Source Maps功能。 3....从左至右每组表示如下:               第1组,表示对应编译后代码的第几列;               第2组,表示源码所属文件在sources数组中的索引值;              ...第3组,表示对应源码的第几行;               第4组,表示对应源码的第几列;               第5组,表示在names数组中的索引值,若没有则可省略。...假如你还是怕用户误操作打开了devTools,那么就在打包发布时不生成.map文件就好了!

    1.6K80

    谈谈CSS中一些比较偏门的小知识 前面我写了:谈谈html中一些比较偏门的知识,现在这篇(主要)想谈谈个人所见的CSS一些小知识点,加深印象;同时也希望有需要的人能有收获!

    */ 顺序规则: a:hover必须在a:link和a:visited后面; a:active必须在a;hover后面 可记为love,hate(link,visited,hover,active)...善用a{color:gold;} 5.CSS优先级: 就近原则,同权重情况下,样式定义最近者为准;(三种方法引入css:内联,内部.........最终效果是红色字体显示“点击这里,鼠标光标焦点转至输入框中”。...10.初始化CSS样式 原因:浏览器兼容问题,有些标签的默认值在不同浏览器下是不同的 缺点:对SEO有一定影响 *{padding: 0;margin:0;}:这是很常见的一种写法,强烈不建议(主流大网站基本都不会采用这种写法...,甚至在它们内部代码规范中禁止这种写法) 下面是淘宝样式初始化代码: 1 body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd, 2 ul,ol,li,

    1.4K60

    使用 ClojureScript 开发浏览器插件的过程与收获

    在 dev 过程中,推荐设置 cljsbuild 的 optimizations 为 none,以便得到最快的编译速度; 在 release 过程中,可以将其设置为 advanced,来压缩、优化 js...为了在两种模式中复用使用的图片、css 等资源,可采用了软链的来实现,resources 目录结构如下: . ├── css │ └── option.css ├── dev │ ├── background...js 工具,更重要的一点是 immutable 在 cljs 中无处不在,re-agent 里面有自己维护状态的机制 atom,不在需要严格区分 React 里面的 props 与 state。...说到 re-agent,就不能不提到 om.next,这两个在 cljs 社区里面应该是最有名的 React wrapper,om.next 理念与使用难度均远高于 re-agent,初学者一般不推荐直接用...ClojureScript + React,用起来不能再开心啦! JS 社区里面层出不穷的框架每次都让跃跃欲试的我望而却步,有了 cljs,算是把 Lisp 延伸到了更宽广的“领土”。

    79230

    CSS小技能:常用样式属性、选择器分类、盒子模型

    border: 1px solid black; } 在 CSS 中,属性和值都是区分大小写的,每对中的属性和值由冒号 (:) 分隔。...--不推荐此方式,因为在一个站点里,在需要更改 CSS 时修需要改每个页面文件。--> 内联样式表存在于 HTML 元素的 style 属性之中,每个 CSS 表只影响一个元素。...鼠标悬浮的元素 1 ::selection 鼠标选中的元素 3 /*在鼠标指针悬浮到一个元素上的时候选择这个元素*/ a:hover { } 2.6 状态选择器 选择器 说明 版本 :target...) 2 [attr|=val] 属性以指定值(完整单词)开头的元素(不推荐使用) 2 2.9 伪元素 选择器 说明 ::before 在元素前插入的内容 ::after 在元素后插入的内容 III...盒子模型 一切皆盒子: 在 CSS 中,所有的元素都被一个个的“盒子(box)”包围着,理解这些“盒子”的基本原理,是我们使用 CSS 实现准确布局、处理元素排列的关键。

    1.8K10

    CSS 基础系列:伪类和伪元素

    例如,当用户悬停在指定的元素时,我们可以通过 :hover 来描述这个元素的状态。...在与用户的交互过程中元素的状态是动态变化的,因此该元素会根据其状态呈现不同的样式。当元素处于某状态时会呈现该样式,而进入另一状态后,该样式就会失去。状态伪类的顺序很重要,顺序错误可能会导致没有效果。...注意,伪类的名称不区分大小写。...匹配元素中第一行的文本 这个伪元素只能用在块元素中,不能用在内联元素中 4.1 仅双冒号 选择器 示例 示例说明 ::selection 匹配被用户选中或者处于高亮状态的部分 在FF浏览器使用时需要添加...然后,在css3中又定义了:first-of-type这个选择器,这个跟:first-child有什么区别呢?

    1.9K10

    CSS 常见面试题速查

    # CSS 优先级 内联 > ID 选择器 > 类选择器 > 标签选择器 具体到计算层面,优先级由 A、B、C、D 的值来决定,计算规则如下: A 存在内联样式 A 值为 1,否则为 0 B 值为 ID...; } table { border-collapse:collapse; border-spacing:0; } # 伪类和伪元素的区别 伪类:以冒号为前缀,被添加到一个选择器末尾的关键字,样式在特定状态下才被呈现到指定的元素...(inline)特性: 和相邻的内联元素在同一行; 宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom...# 关于媒体查询 是什么 媒体查询由一个可选的媒体类型和零个或多个使用媒体功能的限制样式表范围的表达式组成,例如宽度、高度和颜色 媒体查询在 CSS3 中出现,允许内容的呈现针对一个特定范围的输出设备而进行裁剪...被点击访问过的超链接样式不再具有 hover 和 active 了,解决方法是改变 CSS 属性的排列顺序: L-V-H-A(link,visited,hover,active) # rgba()和opacity

    91310

    【CSS】CSS 总结 ① ( CSS 引入方式 | CSS 选择器 | 基础选择器 | 复合选择器 ) ★

    一、CSS 引入方式 1、CSS 的 3 种引入方式 ( 内联 | 内嵌 | 外链 ) CSS ( Cascading Style Sheets ) 层叠样式表 有 3 种引入方式 : 内联样式 :...属性名称2: 属性值2; 属性名称3: 属性值3; } 外链式 : 将 CSS 样式代码 写在一个单独的 .css 文件中 , 然后在 HTML...属性中设置类名 , 标签内容 ; 然后 , 在 CSS 中使用 " .类名 " 作为 类选择器 , 选出设置指定类名的标签 , .name { color: blue...; } ; id 选择器 ( 不推荐使用 ) : 使用 " #id " 选择 指定的 某一个 标签 ; 首先 , 在 HTML 中 设置 标签的 ID , 标签内容 ; 然后 , 在 CSS 样式中使用 ID 选择器 , #name { color: blue; } ; 通配符选择器 ( 不推荐使用 ) : 使用 通配符 * 可以 选择所有标签 , * {

    18110

    技术天地 | CSS-in-JS:一个充满争议的技术方案

    导读 为了解决传统CSS在现代前端应用开发中遇到的痛点,FreeWheel评估了大量新一代的CSS框架/工具/方案。...随着以 React 为首的现代前端开发框架的兴起,在 JS 中维护 CSS 的方案(也就是 CSS-in-JS)成为了当代前端社区的新趋势,以解决在现代 Web 应用开发中使用 CSS 时出现的一些痛点...CIJ 的一大特点是它的方案众多【4】,这种看似混乱的状态很符合前端社区喜欢重复造轮子的特征。发展初期,社区在各个方向上探索着用 JS 开发和维护 CSS 的可能性。...这种状态形成了 CIJ 在 API 接口上的事实标准。...有些新方案选择将 CSS 在构建时输出为静态 CSS 文件,如Linaria【16】。不过这种方案有一些语法上的限制,比如不支持内联CSS样式【17】。

    2.6K40

    CSS

    内容2 id选择器 id选择器的使用方式和类选择器基本一致,id选择器一般配合后期的JS使用较多,效果和类选择器一样,只不过是类选择器可以被多个元素调用,但是id选择器只能被一个元素调用 在同一个页面中吗...访问之后的状态 a:hover 鼠标移动上去之后的状态 a:active 鼠标按下的状态 伪类选择器在实际工作中,不会写这么多,意义不大,推荐简写的方式完成 a {} a...样式表位置 内嵌式样式表 内嵌式样式表是在html里面嵌套一个style标签,将css语句都写在style标签里面 css语句 外链式样式表 单独创建一个后缀名为....css的文件,在html文件里面通过link标签引入css文件 css文件的地址" /> 行内式样式表 将样式直接写在标签本身上,以属性的形式存在...display:inline-block 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。

    56820

    CSS大部分属性汇总

    设置或返回文本是否被重写 vertical-align 设置元素的垂直对齐 white-space 设置元素中空白的处理方式 word-spacing 设置字间距 字体类属性 属性 描述 font 在一个声明中设置所有的字体属性...链接的四种状态(也叫伪类选择器) a:link - 正常,未访问过的链接 a:visited - 用户已访问过的链接 a:hover - 当用户鼠标放在链接上时 a:active - 链接被点击的那一刻...此元素会被显示为内联元素,元素前后没有换行符。 inline-block 行内块元素。(CSS2.1 新增的值) list-item 此元素会作为列表显示。...run-in 此元素会根据上下文作为块级元素或内联元素显示。 compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。...CSS溢出属性 css有一个属性专门控制元素内容溢出的处理:Overflow 值 描述 visible 默认值。内容不会被修剪,会呈现在元素框之外。

    1.3K20

    tailwindcss 从0到1

    (image-87b874-1636387074601)] 类型或状态修饰 tailwind css 为处理响应式,伪类, 伪元素提供类型作用范围限定类 // 添加响应式样式 // 默认字体大小为 text-base...screens 媒体查询断点样式 @tailwind base; @tailwind components; @taiwind utillities; @taiwind screens; @apply 内联功能样式...} @layer base { .title { color: blue; } } // 这里title 颜色为红色, 不同的分组将影响类的优先级顺序 @variants 指定各状态类变体...': { fontSize: '24px' }, 'h3': { fontSize: '18px' }, }) }, // 转义 // 如果类名中存在特殊字符时...如果UI本身就没有统一规范的化,还是内联样式文件来的灵活些。 这一套有点像组件库为了可配置主题而抽离出来的组件样式变量。 参考 官方文档

    1.6K20

    年薪30万的前端面试题,你能答对几道?|附答案

    DOCTYPE声明位于位于HTML文档中的第一行,处于html 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。...在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。 7.html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?...绘画 canvas 用于媒介回放的 video 和 audio 元素 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失; sessionStorage 的数据在浏览器关闭后自动删除...的:after伪元素; 使用邻接元素处理; 4.CSS居中(包括水平居中和垂直居中) 内联元素居中方案 水平居中设置: 1.行内元素 设置 text-align:center; 2.Flex布局 设置...3.http状态码有那些?分别代表是什么意思? 100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。

    5.6K60
    领券