首页 > 解决方案 > 如何修复“使用 CSS Clip-Path 悬停时 div 的背景问题”

问题描述

我正在使用 CSS 动画clip-path,当我将鼠标悬停在 span 元素上时,另一个 div 在 . 中展开circular manner。悬停工作正常,但我面临问题,因为背景没有完全覆盖元素。

下面是显示我面临的问题的 gif 图像。 GIF 图像

*{
    margin:0;
    padding: 0;
    outline: none;
}
body{
    background: #DCF5FF;
    margin: 0;
    height: 100vh;
    display: grid;
    justify-items: center;
    align-items: center;
    font-family: 'Times New Roman', Times, serif;
}
.container{
    width: 30%;
    border-radius: 10px;
}

.inner{
    background: rgba(7,218,165,1);
    padding: 1em;
    border-radius: 10px;
    width: 250px;
    /* height: 300px; */
    clip-path: circle(10% at 90% 52%);
    transition: all .5s ease-in-out;
    cursor: pointer;
    position: relative;
    z-index: 4;
}

.inner > h1{
    color:white;
    margin: 0;
}

.inner > p{
    color:white;
    font-size: 0.8rem;
}

.inner:hover{
    clip-path: circle(100%);
    background: #00B6FF;
}

.wrapper{
    position: absolute;
    top: 0;
    left: 0;
}
.inner:hover > .wrapper{
    
}

.inner > span{
    float:right;
    color:white;
    font-weight: bold;
    transition: color .5s;
    margin-right: 4%; 
    text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS Clip-Path</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <div class="inner">
            <span>i</span>
            <div class="wrapper">
                <h1>Hey</h1>
                <p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Fuga molestiae adipisci qui temporibus optio eius voluptas consectetur cumque quis quasi fugit nobis dolor tenetur, harum nisi, molestias quisquam! Necessitatibus, ipsum.</p>
            </div>
        </div>
        <div class="card">
            <h1>Hello</h1>
        </div>
    </div>
</body>
</html>

标签: htmlcss

解决方案


position:absolute所以它与你放在class 上的事实有关.wrapper,它覆盖了你放在 class 中的属性.inner。请参阅下面的另一种尝试,我认为它更接近您的意图。

*{
    margin:0;
    padding: 0;
    outline: none;
}
body{
    background: #DCF5FF;
    margin: 0;
    display: grid;
    font-family: 'Times New Roman', Times, serif;
}
.container{
  margin: auto;
  width: 40%;
}

.inner{
    position: absolute;
    top: 150px;
    background: rgba(7,218,165,1);
    padding: 1em;
    border-radius: 10px;
    width: 250px;
    clip-path: circle(8% at 90% 15%);
    transition: all .5s ease-in-out;
    cursor: pointer;
    position: relative;
    z-index: 4;
}

.inner h1{
    color:white;
    margin: 0;
}

.inner p{
    font-size: 0.8rem;
}

.inner:hover{
    clip-path: circle(100%);
    background: #00B6FF;
}

.wrapper{
}
.inner:hover > .wrapper{
    
}

.inner span{
    float:right;
    color:white;
    font-weight: bold;
    transition: color .5s;
    margin-right: 4%; 
    text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS Clip-Path</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container">
        <div class="inner">
            <span>i</span>
            <div class="wrapper">
                <h1>Hey</h1>
                <p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Fuga molestiae adipisci qui temporibus optio eius voluptas consectetur cumque quis quasi fugit nobis dolor tenetur, harum nisi, molestias quisquam! Necessitatibus, ipsum.</p>
            </div>
        </div>
        <div class="card">
            <h1>Hello</h1>
            <p>Pater noster, qui es in caelis, sanctificetur nomen tuum, adveniat regnum tuum, fiat voluntas tua, sicut in caelo et in terra.</p>
        </div>
    </div>
</body>
</html>


推荐阅读