我非常喜欢React中的内联CSS模式,并决定使用它。
但是,不能使用:hover
和类似的选择器。那么,在使用内联CSS样式时,实现悬停高亮显示的最佳方法是什么?
#reactjs的一个建议是使用一个可点击的组件,并像这样使用它:
<Clickable>
<Link />
</Clickable>
可点击
有一个悬停
状态,并将其作为道具传递给链接。但是,可点击的
(我实现它的方式)将链接
包装在div
中,这样它就可以设置onMouseEnter
和onMouseLeave
。这使得事情有点复杂(例如,包装在div
中的span
的行为与span
不同)。
有没有更简单的方法?
我也处于同样的情况。非常喜欢在组件中保持样式的模式,但悬停状态似乎是最后一个障碍。
我所做的是编写一个mixin,您可以将它添加到需要悬停状态的组件中。此mixin将向组件的状态添加一个新的悬停的
属性。如果用户将鼠标悬停在组件的主DOM节点上,它将被设置为
true
,如果用户离开元素,它将被设置回false
。
现在,在组件渲染函数中,可以执行以下操作:
<button style={m(
this.styles.container,
this.state.hovered && this.styles.hover,
)}>{this.props.children}</button>
现在,每次
悬停的
状态更改时,组件都会重新渲染。
我还为此创建了一个沙箱回购协议,我自己用它来测试其中一些模式。如果您想查看我的实现示例,请查看它。
https://github.com/Sitebase/cssinjs/tree/feature-interaction-mixin
聚会迟到了,但有了解决办法。你可以使用“
day: {
display: "flex",
flex: "1",
justifyContent: "center",
alignItems: "center",
width: "50px",
height: "50px",
transition: "all 0.2s",
borderLeft: "solid 1px #cccccc",
"&:hover": {
background: "#efefef"
},
"&:last-child": {
borderRight: "solid 1px #cccccc"
}
},
我认为onMouseEnter和onMouseLe是可行的方法,但我认为不需要额外的包装器组件。以下是我如何实现它:
var Link = React.createClass({
getInitialState: function(){
return {hover: false}
},
toggleHover: function(){
this.setState({hover: !this.state.hover})
},
render: function() {
var linkStyle;
if (this.state.hover) {
linkStyle = {backgroundColor: 'red'}
} else {
linkStyle = {backgroundColor: 'blue'}
}
return(
<div>
<a style={linkStyle} onMouseEnter={this.toggleHover} onMouseLeave={this.toggleHover}>Link</a>
</div>
)
}
然后,您可以使用悬停状态(true/false)来更改链接的样式。
问题内容: 我非常喜欢React中的内联CSS模式,并决定使用它。 但是,您不能使用和类似的选择器。那么,在使用内联CSS样式时实现悬停时高亮显示的最佳方法是什么? 该有一个状态,并将其作为道具的链接。但是,(我的方式来实现它)包裹的,以便它可以设置并给它。不过,这会使事情有些复杂(例如,包裹在行为上与有所不同)。 有没有更简单的方法? 问题答案: 我处于同样的情况。确实像在组件中保留样式的模式,
本文向大家介绍如何在HTML元素中使用内联CSS样式?,包括了如何在HTML元素中使用内联CSS样式?的使用技巧和注意事项,需要的朋友参考一下 使用style 属性设置内联CSS样式。以下是语法- 语法 在这里,mystyles 是一个或多个CSS属性。用分号分隔它们。 示例 您可以尝试运行以下代码以为HTML中的元素实现内联CSS样式-
问题内容: 我知道将CSS样式直接嵌入到它们会影响的HTML标记中会破坏CSS的许多目的,但有时对于调试目的很有用,例如: 嵌入规则的语法是什么: 放入A标签的样式属性中?显然不是这个… …因为这将一直适用,而不是仅在悬停期间适用。 问题答案: 恐怕无法完成,伪类选择器无法内联设置,您必须在页面或样式表上进行设置。 我应该提到,从 技术上讲, 您 应该 能够按照CSS规范进行操作,但是大多数浏览器
问题内容: 我有使用内联样式的标记,但是我无权更改此标记。如何仅使用CSS覆盖文档中的内联样式?我不想使用jQuery或JavaScript。 HTML: CSS: 问题答案: 覆盖内联样式的唯一方法是使用CSS规则旁边的关键字。以下是一个示例。 重要笔记: 使用不是一个好的做法。因此,您应避免同时使用内联样式。 将关键字添加到任何CSS规则后,该规则就可以 强行优先 于该元素的 所有其他CSS规
问题内容: 这是_renderRow函数的一部分。我有一些按钮的基本样式,还有从行上的变量读取的样式。在此示例中,它是“#f00”,但它可以是变量,例如thisColor。如何将外部样式与嵌入式样式相结合? 像这样的东西,但这不起作用: 还是我必须将它与一个容器嵌套在TouchableHightlight内,然后将内联样式放在该元素上? 问题答案: 你的括号是错误的。如果打算继续使用数组语法,请改
问题内容: 我有这样的事情: 我正在使用beautifulsoup解析html。有没有办法拉出“背景” css属性中的“ URL”? 问题答案: 您有两种选择-快速,肮脏或正确的方法。快速而肮脏的方式(如果更改标记,则很容易中断)看起来像 显然,您必须使用它才能使其与多个标签一起使用。 正确的方法是,建议有人在CSS字符串上使用正则表达式:)会很糟糕,因此使用CSS解析器。cssutils是我刚刚