javascript - 悬停时更改主体背景颜色

标签 javascript html css

<分区>

         <div class="projects-list home-1">
                <article class="whispers">
                    <h1>Whispers</h1>
                    <figure>
                        <a href="/projects/whispers.html">
                           <img src="assets/media/images/whispers.jpg"alt=""
                        </a>
                    </figure>
                </article>
                <article>
                    <h1>Victoria</h1>
                    <figure>
                        <a href="projects/after-august.html">
                           <img src="assets/media/images/victoria.jpg"alt=""
                        </a>
                    </figure>
                </article>

                <article>
                    <h1>for sasha</h1>
                    <figure>
                        <a href="projects/for-sasha.html">
                            <img src="assets/media/images/fosasha.jpg"alt=""
                        </a>
                    </figure>
                </article>

                <article>
                    <h1>old and blue</h1>
                    <figure>
                        <a href="projects/old-and-blue.html">
                         <imgsrc="assets/media/images/oldandblue.jpg"alt="">
                        </a>
                    </figure>
                </article>

                <article>
                    <h1>offf barcelona</h1>
                    <figure>
                        <a href="projects/offf-barcelona.html">
                            <img src="/assets/media/images/offf-barcelona.jpg" alt="">
                        </a>
                    </figure>
                </article>

         </div>

现在我想在悬停在任何这些图像上时将 body 标签背景更改为不同的颜色,例如,第一张图像使背景变黑,第二张使背景变红等。

所以我的问题是:是否有任何方法可以在悬停时选择 CSS 上的另一个元素?

例如:

article:hover { here i want to say like body: background = 'whatever' } 

就像我们在 JS 中改变东西一样。我是用 JS 做的,但我觉得必须有更简单的 CSS 方式

最佳答案

不幸的是,CSS 中没有父/祖先选择器。因此,您将需要一个 JS 解决方案来设置主体或祖先元素的样式。

您可以在没有 jQuery 的情况下轻松地做到这一点。

const elements = document.querySelectorAll('article');

elements.forEach(elem => {
  elem.addEventListener("mouseenter", function(event) {
    const bg = document.querySelector('.projects-list')

    const color = event.target.getAttribute("data-color");

    bg.style.backgroundColor = color;
  }, false)
})
.projects-list {
  padding: 20px;
}

img {
  width: 100%;
}
<div class="projects-list home-1">
  <article data-color="orange" class="whispers">
    <h1>Whispers</h1>
    <figure>
      <a href="">
        <img src="https://placeimg.com/640/480/any" alt="" </a>
    </figure>
  </article>

  <article data-color="purple">
    <h1>Victoria</h1>
    <figure>
      <a href="#">
        <img src="https://placeimg.com/640/480/any" alt="" </a>
    </figure>
  </article>

  <article data-color="blue">
    <h1>for sasha</h1>
    <figure>
      <a href="#">
        <img src="https://placeimg.com/640/480/any" alt="" </a>
    </figure>
  </article>

  <article data-color="red">
    <h1>old and blue</h1>
    <figure>
      <a href="#">
        <img src="https://placeimg.com/640/480/any" alt="">
      </a>
    </figure>
  </article>

  <article data-color="green">
    <h1>offf barcelona</h1>
    <figure>
      <a href="#">
        <img src="https://placeimg.com/640/480/any" alt="">
      </a>
    </figure>
  </article>

</div>

关于javascript - 悬停时更改主体背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52982780/

相关文章:

javascript - Mongoose - Model.deleteOne() 正在删除整个集合而不是单个文档

jquery 移动滑动页面,用于类似于 Facebook 的设置

javascript - 是否有一种普通的 JavaScript 技术可以将通用代码动态插入 HTML 页面,类似于 PHP 的包含功能?

javascript - jquery 滚动插件错误

javascript - 使用 jQuery 数据检测事件幻灯片并运行函数

javascript - hover 后隐藏的 div 和 stay 出现

用于 Markdown、Textile 等的 JavaScript 库; anchor 引用

javascript - Intl.Collat​​or 对日语进行排序 - 为什么 collat​​or 不首先优先考虑日语字符?

php - 使用 xpath 通配符获取 "icon"和 "shortcut icon"

html - 使 float div 填充整个父级宽度