如何分离两段代码的悬停效果以提供不同的属性

How to separate hover effect on two chunks of code to give different properties

我的第一个 post 不幸的是在这里找不到任何符合我需要知道的内容!

我不是一个经验丰富的编码员,但我一直在学习它,但本质上我的目标是对网站上的 2 个部分使用相同的 html & CSS 代码片段。当我在打开和关闭悬停时更改不透明度时,困难就来了。我想留在 }

`}
.fade:hover
{
        opacity:1;
}
.fade
{
        opacity:0.8;`

还有我需要的

`}
.fade:hover
{
        opacity:1;
}
.fade
{
        opacity:0.2;`

后者负责并更改原件的不透明度。是否有标签将两者分开?

非常感谢!任何帮助表示赞赏!

CSS 代表 Cascading Style Sheet,这意味着它读取文件,最后读取的内容将适用。因此,如果您对同一个 class 有 2 个定义,则后者将覆盖前者。这就是您只看到第二个操作的原因。

为了解决这个问题,不要对两个按钮都使用 1 class,而是使用 2 classes。

.fade1 {
    opacity: .2;
}
.fade2 {
    opacity: .8;
}
.fade1:hover {
    opacity: 1;
}
.fade2:hover {
    opacity: 1;
}

但更好的是,您可以通过以下操作将其简化为 3 个:

<!-- HTML code -->
<p class="fade fade1">some text</p>

/* CSS style */
.fade1 {
    opacity: .2;
}
.fade2 {
    opacity: .8;
}
.fade:hover {
    opacity: 1;
}

您遇到的问题是由 CSS 级联(CSS = 级联样式表)引起的。这意味着因为您定义了相同的 class 样式 (.fade) 两次,所以文件中最后定义的实例将优先并覆盖另一个。

解决此问题的方法是使用额外的 class 名称或增加 css 样式的特异性(这意味着您在 CSS 选择器中的特异性)。

示例 1,使用额外的 class:

.fade {
    opacity: .8;
}

.fade2 {
    opacity: .2;
}

.fade:hover, .fade2:hover {
    opacity: 1;
}

示例 2,增加特异性:

.section1 .fade {
    opacity: .8;
}

.section2 .fade {
    opacity: .2;
}

.fade:hover {
    opacity: 1;
}

Html 看起来像这样:

<div class="section1">
    <div class="fade">some content</div>
</div>

<div class="section2">
    <div class="fade">some other content</div>
</div>