首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在悬停时显示背景颜色变化(与扭转)?

如何在悬停时显示背景颜色变化(与扭转)?
EN

Stack Overflow用户
提问于 2022-02-18 15:35:25
回答 2查看 43关注 0票数 -1

我会直截了当地说出来。

我有4个元素(背景-1,背景-2,背景-3,背景-4).

当我第一次到达页面时,我希望背景-1具有“背景颜色:#D8D7D8;”和其他三个“背景色:#FBFBFB;”。然后,每当我悬停另一个背景-x,我希望所有它们都是#FBFBFB,除了一个被悬停,将在#D8D7D8。

我知道这对你来说可能很容易,但对我来说却不是。

我的css看起来如下:

代码语言:javascript
复制
.background-1 :hover{
    background: #D8D7D8;
    transition: .3s ease-in-out;
}
.background-2 :hover{
    background: #D8D7D8;
    transition: .3s ease-in-out;
}
.background-3 :hover{
    background: #D8D7D8;
    transition: .3s ease-in-out;
}
.background-4 :hover{
    background: #D8D7D8;
    transition: .3s ease-in-out;
}

下面是它的样子:印古尔

提前谢谢你!

米拉克

EN

回答 2

Stack Overflow用户

发布于 2022-02-18 16:10:00

假设所有四个元素都是兄弟姐妹,您可以这样做。

对于默认的bg1值,我建议使用一个JavaScript事件处理程序。

代码语言:javascript
复制
const divs = document.querySelectorAll('.bg');

function clearBgExcept(target) {
  divs.forEach(div => div.style.backgroundColor = div !== target ? "#FBFBFB" : "#D8D7D8");
}

function clearAllBg() {
  divs.forEach(div => div.style.backgroundColor = div.dataset.default ? "#D8D7D8" : "#F8F8F8" );
}
divs.forEach(el => el.addEventListener('mouseover', e => {
    clearBgExcept(e.target);
  }));
  
divs.forEach(el => el.addEventListener('mouseout', () => {
    clearAllBg();
  }));
代码语言:javascript
复制
.wrapper {
  min-width: 300px;
  min-height: 300px;
  margin: 0 auto;
  display: grid;
  grid-gap: 10px;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}

.bg {
  background-color: #FBFBFB;
  border: 1px solid #CCC;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: .3s ease-in-out;
}

.bg[data-default="true"], .bg:hover {
  background-color: #D8D7D8;
}
代码语言:javascript
复制
<div class="wrapper">
  <div class="bg" data-default="true">BG1</div>
  <div class="bg">BG2</div>
  <div class="bg">BG3</div>
  <div class="bg">BG4</div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2022-02-18 16:20:46

假设您的元素是兄弟姐妹,那么就不需要Javascript:

代码语言:javascript
复制
.background-1,
.background-2,
.background-3,
.background-4 {
  background-color: #FBFBFB;
  padding: 2em;
}

.background-1 {
  background-color: #D8D7D8;
}

.background-1:hover {
  background: #D8D7D8;
  transition: .3s ease-in-out;
}

.background-2:hover {
  background: #D8D7D8;
  transition: .3s ease-in-out;
}

.background-3:hover {
  background: #D8D7D8;
  transition: .3s ease-in-out;
}

.background-4:hover {
  background: #D8D7D8;
  transition: .3s ease-in-out;
}

.column:hover .background-1:not(:hover) {
  background-color: #FBFBFB;
}
代码语言:javascript
复制
<div class="column">
  <div class="background-1">
    B1
  </div>
  <div class="background-2">
    B2
  </div>
  <div class="background-3">
    B3
  </div>
  <div class="background-4">
    B4
  </div>
</div>

唯一“聪明”的部分是重置background-1颜色时,父元素是悬浮,但background-1没有徘徊。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71176050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档