javascript - 悬停在按钮上时如何影响不同的类或 HTML 元素?

标签 javascript html css reactjs hover

我在 React 中有一个按钮,当我将鼠标悬停在它上面时,会出现一个时髦的锯齿动画。但是,我真正想要的效果是当我将鼠标悬停在按钮上时,页面上的 H1 标记在背景中出现锯齿动画。然而,每当我添加一个 className 并尝试在 button:hover css 中定位它时,我都没有效果。我试过 .btn:hover h1 和 .btn:hover."classname"以及其他一些组合。但没有工作。

当鼠标悬停在未直接连接到将产生效果的类、div 或 h1 的按钮上时,如何定位类、div 或 h1?

我为此使用的当前 CSS(适用于按钮本身)是:

.btn {
  color: black;
}

.btn:hover {
    animation: sawtooth 0.35s infinite linear;
    background: linear-gradient(45deg, #d3f169 0.5em, transparent 0.5em) 0 0 / 1em 1em
              , linear-gradient(-45deg, #d3f169 0.5em, transparent 0.5em) 0 0 / 1em 1em;
    color: adjust-hue($color,180);
  }


@keyframes sawtooth {
  100% {
    background-position: 1em 0;
  }
}

我的模板是:

  return (
        <div className="App">
            <h1>Question Genie</h1>
            <button className="btn" onClick={this.displayQuestion}>View Unanswered Questions</button>
            {questions}     
        </div>
    );
  }
}

最佳答案

您可以使用下一个兄弟选择器 ( ~ ) 和 flexbox column-reverse 来完成此操作。这里的主要问题是 there is no previous sibling selector in CSS 因此,您可以重新排序 HTML,以便 <h1><button>之后,像这样:

<div class="App">
  <button class="btn" onClick={this.displayQuestion}>View Unanswered Questions</button>  
  <h1>Question Genie</h1>
</div>

然后你可以使用flex-direction: column-reverse; (甚至是按钮上的 order: -1)来制作 <h1>出现在 <button> 上方 CSS:

.App {
  display: flex;
  flex-direction: column-reverse;
  align-items: flex-start;
}

.btn:hover ~ h1 {
    animation: sawtooth 0.35s infinite linear;
   ... rest of the stuff
  }

这是代码笔:https://codepen.io/palash/pen/ZvVNav

请务必在此处检查 flexbox 支持 https://caniuse.com/#feat=flexbox

关于javascript - 悬停在按钮上时如何影响不同的类或 HTML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48256748/

相关文章:

javascript - 条件渲染 react 问题

javascript - 如何相乘并检查新插入行的字段

javascript - SVG 和响应问题

css - 根据子尺寸+边距展开父div

javascript - 显示覆盖 DIV 时不需要的浏览器滚动条更改

javascript - 动态地将 javascript 插入到 <head> 标签中

javascript - 在 react 中动画(获取数据)之后不是组件渲染

javascript - 单击项目时如何自动关闭移动菜单?

javascript - Canvas 上下文 "bezierCurveTo"在 Chrome 16+/Safari 5+ 下存在错误

html - CSS 网格 : Is it possible to change z-index by targeting specific grid-items created dynamically?