代码之家  ›  专栏  ›  技术社区  ›  Xeedy

基于悬停按钮的背景更改

  •  -1
  • Xeedy  · 技术社区  · 1 年前

    我想根据悬停的按钮更改容器背景。 我想为容器中的另外两个或多个按钮做这个。然而,我找不到解决这个问题的办法。谢谢你的帮助

    我试过了:

    .mkdf-eh-item {
        background-image: url("base_img.jpg");
        background-size: cover;
        width: 100%;
        height: 300px;
    }
    .mkdf-eh-item { 
        pointer-events: none; 
    } 
    .mkdf-eh-item:hover { 
        background-image: url("hovered_img.jpg");
    } 
    .mkdf-eh-item .Button { 
        pointer-events: auto; 
    } 
     .mkdf-eh-item .Button:hover { 
        background-color: transparent;
    }
    .mkdf-eh-item .Button1 { 
        pointer-events: auto; 
    } 
    .mkdf-eh-item .Button1:hover { 
        background-color: transparent;
    }
    

    但这只适用于一个按钮。我想在每个按钮上悬停不同的图像

    1 回复  |  直到 1 年前
        1
  •  -1
  •   mahdi rahani    1 年前

    要根据悬停的按钮更改容器背景,可以同时使用CSS和JavaScript。这里有一个简单的方法:

    document.querySelectorAll('.button').forEach(button => {
        button.addEventListener('mouseenter', function() {
            const newBg = this.getAttribute('data-bg');
            this.closest('.mkdf-eh-item').style.backgroundImage = `url(${newBg})`;
        });
    
        button.addEventListener('mouseleave', function() {
            this.closest('.mkdf-eh-item').style.backgroundImage = 'url(base_img.jpg)';
        });
    });
    .mkdf-eh-item {
        background-image: url("base_img.jpg");
        background-size: cover;
        width: 100%;
        height: 300px;
        transition: background-image 0.3s ease;
    }
    
    .button {
        pointer-events: auto;
        background-color: transparent;
        border: none;
        cursor: pointer;
    }
    <div class="mkdf-eh-item">
        <button class="button" data-bg="hovered_img1.jpg">Button 1</button>
        <button class="button" data-bg="hovered_img2.jpg">Button 2</button>
        <button class="button" data-bg="hovered_img3.jpg">Button 3</button>
    </div>