You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML/CSS中卡片hover效果与图片opacity调整失效问题排查

问题排查与解决方案

问题根源

图片opacity不生效的核心原因是:图片的父容器(带有opacity-40类的div)设置了透明度,opacity属性会被子元素继承,且子元素无法通过设置opacity:1覆盖父元素的透明度(子元素实际透明度为父元素透明度 × 自身透明度)。同时你当前的CSS仅针对img设置hover时的opacity,没有作用到真正控制透明度的父容器。

另外,当前hover效果中卡片和图片的位移过渡未统一,会导致动画不同步。

修复方案

  1. 将父容器的透明度设置转移到img标签上,让img自身控制初始透明度
  2. 修改CSS选择器,确保hover时能正确修改img的opacity,同时统一过渡动画
  3. 优化动画同步性,让卡片和图片的动效节奏一致

修改后的完整代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio,line-clamp"></script>
    <style>
        .your-card {
            position: relative;
            transition: transform 0.3s ease;
        }

        .your-card:hover {
            transform: translateY(-10px);
        }

        .your-card .card-image img {
            opacity: 0.4;
            transition: all 0.3s ease; /* 统一过渡动画 */
        }

        .your-card:hover .card-image img {
            transform: translateY(-30px);
            opacity: 1;
        }
    </style>
</head>

<body>
    <section class="text-gray-600 body-font">
        <div class="container px-5 py-24 mx-auto flex flex-wrap justify-center"> 
            <div class="flex flex-col text-center w-full mb-32">
                <h1 class="sm:text-3xl font-normal" style="color: #2e66f4; font-size: 2.7rem;">Here's Why <span
                        class="bg-yellow-300 font-bold text-black px-2" style="border-radius: 6px;">Zephurus
                        Right</span> For You<span class="text-red-600 font-bold">.</span></h1>
                <h2 class="font-light mb-1 mt-5 font-serif pr-16" style="color: #999; font-size: 1.2rem;">Don't waste
                    your time anymore</h2>
            </div>
            <div class="flex flex-wrap -m-16">
                <!-- First Card -->
                <div class="p-4 w-[532px] h-[300px] your-card" id="arrow">
                    <div
                        class="flex border-2 rounded-lg border-gray-200 border-opacity-50 p-8 sm:flex-row flex-col hover:shadow-lg">
                        <div
                            class="w-32 h-48 sm:mr-8 sm:mb-0 mb-4 flex rounded-full flex-shrink-0 left-0 absolute top-10 card-image">

                            <img src="./Image2-fotor-bg-remover-20231027103626.png" alt="ecommerce">
                        </div>
                        <div class="flex-grow ml-24 my-10">
                            <h2 class="text-gray-900 title-font font-medium mb-3 text-xl" style="color: #4a4a4a;">
                                Automate your sales process</h2>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073; Turn boring web forms
                                into friendly conversations</p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073; Get your meetings and
                                sales calls scheduled</p>
                        </div>
                    </div>
                </div>

                <!-- Second Card -->
                <div class="p-4 w-[532px] h-[300px] mt-20">
                    <div class="flex border-2 rounded-lg border-gray-200 border-opacity-50 p-8 sm:flex-row flex-col">
                        <div
                            class="w-16 h-16 sm:mr-8 sm:mb-0 mb-4 inline-flex items-center justify-center rounded-full bg-indigo-100 text-indigo-500 flex-shrink-0">
                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
                                stroke-width="2" class="w-10 h-10" viewBox="0 0 24 24">
                                <path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"></path>
                                <circle cx="12" cy="7" r="4"></circle>
                            </svg>
                        </div>
                        <div class="flex-grow">
                            <h2 class="text-gray-900 text-lg title-font font-medium mb-3" style="color: #4a4a4a;">
                                Perfect your customer support</h2>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073; Consistent 24/7
                                support across channels</p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073; Solve their problems
                                faster</p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073; No wait time, quick
                                response</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Second Row -->
            <div class="flex flex-wrap -m-4">
                <!-- Third Card -->
                <div class="p-4 w-[532px] h-[300px]">
                    <div class="flex border-2 rounded-lg border-gray-200 border-opacity-50 p-8 sm:flex-row flex-col">
                        <div
                            class="w-16 h-16 sm:mr-8 sm:mb-0 mb-4 inline-flex items-center justify-center rounded-full bg-indigo-100 text-indigo-500 flex-shrink-0">
                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
                                stroke-width="2" class="w-8 h-8" viewBox="0 0 24 24">
                                <path d="M22 12h-4l-3 9L9 3l-3 9H2"></path>
                            </svg>
                        </div>
                        <div class="flex-grow">
                            <h2 class="text-gray-900 text-lg title-font font-medium mb-3" style="color: #4a4a4a;">Power
                                up your marketing</h2>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073; Generate more
                                qualified leads on autopilot</p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073;
                                Make proactive contact with visitors.</p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073;
                                Boost your conversions
                            </p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073;
                                Turn your traffic into paying
                            </p>
                        </div>
                    </div>
                </div>

                <!-- Fourth Card -->
                <div class="p-4 w-[532px] h-[300px]">
                    <div class="flex border-2 rounded-lg border-gray-200 border-opacity-50 p-8 sm:flex-row flex-col">
                        <div
                            class="w-16 h-16 sm:mr-8 sm:mb-0 mb-4 inline-flex items-center justify-center rounded-full bg-indigo-100 text-indigo-500 flex-shrink-0">
                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
                                stroke-width="2" class="w-10 h-10" viewBox="0 0 24 24">
                                <path d="M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2"></path>
                                <circle cx="12" cy="7" r="4"></circle>
                            </svg>
                        </div>
                        <div class="flex-grow">
                            <h2 class="text-gray-900 text-lg title-font font-medium" style="color: #4a4a4a;">
                                Smoothen your customer</h2>
                            <h2 class="text-gray-900 text-lg title-font font-medium mb-2" style="color: #4a4a4a;">
                                journey</h2>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073;
                                Make proactive contact with visitors.</p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073;
                                Turn visitors into paying customers
                            </p>
                            <p class="leading-relaxed text-base" style="color: #8e9baf;">&#128073;
                                Qualify prospects automatically
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
</body>

</html>

关键修改点

  • 移除父容器的opacity-40类,将初始透明度直接设置在img元素上
  • 给img添加transition: all 0.3s ease,确保位移和透明度变化同步
  • 调整hover选择器为.your-card:hover .card-image img,精准定位目标元素
  • 保持卡片上移动画不变,同时让图片的位移和透明度变化流畅联动

内容的提问来源于stack exchange,提问作者Aaron Tauro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:13:09