让Flatsome主题里的图片框全部为可点击,点击任意卡片进入超链接

让整个卡片都可以点击(WordPress / Flatsome 卡片全区域点击教程)

在使用 Elementor 或其他页面构建器设计卡片布局时,很多人会遇到一个体验问题:

用户只能点击标题或按钮,点击卡片其它区域无法跳转。

这会降低点击率,也影响整体交互体验。

本文介绍一种简单方法:
让整个卡片区域都变成可点击区域。

用户点击卡片任意位置,都可以进入对应页面,同时仍然保持按钮和链接的正常功能。


实现效果

实现后,卡片将具备以下体验:

  • 点击 卡片任意区域 都能跳转

  • 点击 按钮或原有链接 不会冲突

  • 选中文本时不会触发跳转

  • 支持 普通链接和新窗口打开

非常适合用于:

  • 文章卡片

  • 产品卡片

  • 服务卡片

  • 作品展示列表

  • 博客列表

实现思路

核心逻辑非常简单:

  1. 页面加载完成后扫描所有卡片

  2. 找到卡片内部图片链接

  3. 将该链接作为卡片的跳转目标

  4. 给整个卡片添加点击事件

  5. 如果点击的是按钮或链接,则不干预

这样就能实现 “整卡点击”效果

第一步:创建 JS 文件

在主题或子主题中创建一个 JS 文件,例如:

card-click.js

然后将对应 JS 代码放入该文件。


第二步:添加以下js代码

document.addEventListener("DOMContentLoaded", function() {
    // 1. 定义所有需要变身为“全卡片点击”的选择器
    const selectors = '.card-item, .open-hover-link';
    const cards = document.querySelectorAll(selectors);

    cards.forEach(card => {
        // 2. 寻找图片中的链接 (根据你提供的 HTML 结构)
        const mainLink = card.querySelector('.box-image a');

        if (mainLink) {
            const url = mainLink.getAttribute('href');
            card.style.cursor = 'pointer';

            // 监听点击事件
            card.addEventListener('click', function(e) {
                // 3. 核心判断:如果点击的是按钮、链接,或者用户正在选中文本,则不干预
                const isInteractive = e.target.closest('a') || e.target.closest('button');
                const isTextSelected = window.getSelection().toString().length > 0;

                if (!isInteractive && !isTextSelected) {
                    // 如果链接是外部链接或有 target="_blank",可以根据需要调整跳转方式
                    if (mainLink.target === '_blank') {
                        window.open(url, '_blank');
                    } else {
                        window.location.href = url;
                    }
                }
            });

        }
    });
});

第三步:给卡片添加 Class

在图片盒子中添加Class

选择组件
打开 高级(Advanced)
在 CSS Classes 中添加:

card-itemopen-hover-link
在图片盒子中添加代码

保存后即可生效。

优点总结

相比纯 HTML 方案,这种方法的优势是:

  • 无需改动原有结构

  • 不影响内部按钮

  • 逻辑简单

  • 适合批量卡片

同时也避免了 HTML5 中 <a> 嵌套 <a> 的问题。

PREPARING YOUR CATALOG