繁体   English   中英

如何更改 CSS 中 hover 上的图像源?

[英]How can I change an image source on hover in CSS?

 <div class="row">
  <div class="column">
    <img src="phone.png" alt="Phone" class="column1" />
    <p>Walnut MagSafe Stand</p>
    <p>$120</p>
  </div>
  <div class="column">
    <img src="laptop.png" alt="Laptop" class="column2" />
    <p>Walnut Laptop Riser</p>
    <p>$150</p>
  </div>
  <div class="column">
    <img src="tablet.png" alt="Tablet" class="column3" />
    <p>Walnut iPad Stand</p>
    <p>$80</p>
  </div>
  <div class="column">
    <img src="pc.png" alt="PC" class="column4" />
    <p>Walnut Monitor Stand</p>
    <p>$100</p>
  </div>
</div>

CSS

    .row {
  width: 100%;
  margin: 50px 0 50px 0;
}
.column {
  float: left;
  width: 25%;
  height: 434px;
}

.column p {
  font-family: "Roboto", sans-serif;
  font-family: "Roboto Condensed", sans-serif;
  font-family: "Source Sans Pro", sans-serif;
  font-weight: 400;
  line-height: 21px;
  font-size: 14px;
  letter-spacing: 0.7px;
  text-align: center;
  color: #a0a0a0;
}

.column1:hover {
  background: url(products/walnut-magsafe-stand-hover.jpg);
}

大家好网上还是上栈溢出 我是 web 开发的新手,我正在克隆互联网上的一些网站。 现在我需要创建一个图像,而不是我在这个图像上的 hover 应该更改。 我试过这样的(

.column1:hover {
  background: url(products/walnut-magsafe-stand-hover.jpg);
}

) 但它不起作用。 那么,伙计们,我现在需要做什么? 你能解决这个问题吗???

一个简单的 static 实现。

 a { background: url("https://i.stack.imgur.com/gROnM.jpg"); background-repeat: no-repeat; background-size: contain; width: 200px; display: flex; height: 200px;; } a:hover { background: url("https://i.stack.imgur.com/hMQdU.jpg"); background-repeat: no-repeat; background-size: contain; }
 <,DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width. initial-scale=1,0. maximum-scale=1,0, user-scalable=no, shrink-to-fit=no" /> </head> <body> <a href=""></a> </body> </html>

Authentic Science 提供的img srcbackground是不一样的。 当你试图做

.column1:hover { background: url(products/walnut-magsafe-stand-hover.jpg); }

您只是在更改 img 的背景,而不是img src tag

如果您不想将列的背景设置为您希望使用的第一个图像,然后使用 hover 效果,则需要使用 JavaScript。 这可以通过将每个“列#”的类更改为 id 并通过在源文件夹中创建script.js插入此 JavaScript 代码来完成

如果您希望使用此解决方案,您需要复制每一列的代码并相应地重命名它们。 这一切都可以在一个文件中完成。

// Define your variables for column1 img
let col1 = document.getElementById('column1');
let col1OriginalSource = 'phone.png';
let col1NewSource = 'phone2.png';

// Event fires when mouse enters
// Changes the value to your stored change src reference above
col1.addEventListener('mouseenter', function (event) {
  event.target.src = col1NewSource;
});

// Event fires when mouse leaves
// Resets the value back to the stored src reference above
col1.addEventListener('mouseleave', function (event) {
  event.target.src = col1OriginalSource;
});

将源引用存储为变量的原因是为了便于将来修改。 这会将您的每个 src 引用放在一个位置,您只需更改该字符串即可更新您的 src。 您还可以使用 JavaScript 初始设置img src的值,并完全删除内联 HTML 标记以使其成为完整的动态参考。

您的 HTML5 / index.html 文件应如下所示

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="main.css" />

    <title>Document</title>
  </head>
  <body>
    <div class="row">
      <div class="column">
        <img src="phone.png" alt="Phone" id="column1" />
        <p>Walnut MagSafe Stand</p>
        <p>$120</p>
      </div>
      <div class="column">
        <img src="laptop.png" alt="Laptop" id="column2" />
        <p>Walnut Laptop Riser</p>
        <p>$150</p>
      </div>
      <div class="column">
        <img src="tablet.png" alt="Tablet" id="column3" />
        <p>Walnut iPad Stand</p>
        <p>$80</p>
      </div>
      <div class="column">
        <img src="pc.png" alt="PC" id="column4" />
        <p>Walnut Monitor Stand</p>
        <p>$100</p>
      </div>
    </div>

    <!-- Insert the script tag here after the DOM elements -->
    <script src="script.js"></script>
  </body>
</html>

您可以在此处阅读两个事件侦听器的文档:

对于鼠标进入点击这里

鼠标离开点击这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM