让整个卡片都可以点击(WordPress / Flatsome 卡片全区域点击教程)
在使用 Elementor 或其他页面构建器设计卡片布局时,很多人会遇到一个体验问题:
用户只能点击标题或按钮,点击卡片其它区域无法跳转。
这会降低点击率,也影响整体交互体验。
本文介绍一种简单方法:
让整个卡片区域都变成可点击区域。
用户点击卡片任意位置,都可以进入对应页面,同时仍然保持按钮和链接的正常功能。
实现效果
实现后,卡片将具备以下体验:
点击 卡片任意区域 都能跳转
点击 按钮或原有链接 不会冲突
选中文本时不会触发跳转
支持 普通链接和新窗口打开
非常适合用于:
文章卡片
产品卡片
服务卡片
作品展示列表
博客列表
实现思路
核心逻辑非常简单:
页面加载完成后扫描所有卡片
找到卡片内部图片链接
将该链接作为卡片的跳转目标
给整个卡片添加点击事件
如果点击的是按钮或链接,则不干预
这样就能实现 “整卡点击”效果。
第一步:创建 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-item 或 open-hover-link

保存后即可生效。
优点总结
相比纯 HTML 方案,这种方法的优势是:
无需改动原有结构
不影响内部按钮
逻辑简单
适合批量卡片
同时也避免了 HTML5 中 <a> 嵌套 <a> 的问题。

