讲师中心 微信公众号
AI工具推荐 视频效率加速

Layui如何实现数据表格在移动端自动转换为卡片布局模式

阿静吖_4009

阿静吖_4009

发布时间:2026-06-02 06:16:01

|

175人浏览过

|

来源于php中文网

原创

Layui原生table不支持自动卡片化,需手动替换DOM+CSS媒体查询+JS控制;必须弃用table.render()改用laytpl渲染,并通过设备判断分别渲染表格或卡片容器。

直接上结论:layui 原生 table 不支持自动卡片化,必须手动替换 dom 结构 + css 媒体查询 + js 逻辑控制,不能依赖 autoresize 或 responsive 配置项——那些只管滚动,不管布局形态。

为什么不能用 table.render() 直接适配卡片模式

Layui 的 table.render() 是为固定表头+横向滚动设计的,底层强制生成 <table> 标签和两层独立滚动容器(.layui-table-header / .layui-table-body),在小屏下无法语义化地“拆行成卡”。强行加 media query 改 display: block 会导致样式崩坏、事件丢失、分页错位。

  • table 元素本身不支持 flex / grid 卡片流式排列,浏览器对 <tr><td> 的 display 覆盖限制极严
  • lay-event 绑定在 <tr> 上,卡片化后点击区域与数据上下文脱钩
  • 服务端返回的 JSON 数据结构不变,但渲染目标从「表格行」变成「卡片块」,必须重写模板逻辑

用 template + media query 实现真卡片切换

核心是放弃 table.render(),改用 laytpl 渲染,配合 @media (max-width: 768px) 控制显示形态。PC 端仍可用 table,移动端用 <div class="card"> 包裹每条数据。

  • HTML 结构里准备两个容器:<div id="table-container"></div>(PC) 和 <div id="card-container"></div>(Mobile),初始都空着
  • 用 layui.device().mobile 或 window.matchMedia 判断当前环境,只渲染对应容器
  • 卡片模板中每个字段用 <div class="field"><span class="label">姓名</span><span class="value">{{d.name}}</span></div> 结构,data-label 属性可选但推荐保留,方便后续 JS 提取
  • 必须给卡片加 cursor: pointer 和足够热区(至少 min-height: 60px),否则 iOS/Android 触摸反馈弱

点击卡片时如何复用原 table 行事件逻辑

原来写的 table.on('row(demo)', ...) 失效了,得用事件代理 + 数据绑定方式重建行为链。

响应式烟草公司HTML5网站模板
响应式烟草公司HTML5网站模板

响应式烟草公司HTML5网站模板是一款适合提供各种不同种类的优质烟草公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载
  • 给卡片容器绑定 click,用 e.target.closest('.card') 拿到被点卡片元素
  • 从该卡片的 data-id(或 data-index)属性读取原始数据索引,再查原始数据数组 originData[index]
  • 不要把操作按钮塞进卡片模板里——移动端卡片应整块可点,操作菜单用 layer.open({ type: 1, offset: ['b','c'] }) 从底部弹出
  • 若需区分点击位置(如只在「编辑」文字上响应),用 e.target.matches('.edit-btn') 判断,避免 stopPropagation 干扰全局手势

容易被忽略的细节:字体、间距与无障碍

很多人做完结构切换就以为完成了,结果在 iPhone 上字看不清、点不中、朗读器读不出字段名。

  • CSS 中必须覆盖 .card .label 字体大小(建议 font-size: 14px),并设 line-height: 1.5 防止行距过挤
  • 卡片内 .field 的 padding 至少 8px 12px,iOS Safari 对小于 44px 高度的可点区域会降权处理
  • 给每个 .label 加 aria-hidden="true",同时在卡片根元素加 role="region" 和 aria-labelledby 指向主字段,保证 VoiceOver 可读性
  • 别忘了 viewport meta 标签里带 user-scalable=no —— 这不是为了锁缩放,而是防止双击放大后卡片错位

最麻烦的不是写代码,是测试时发现安卓 WebView 对 flex-wrap: wrap 的兼容性比预期差,有时需要加 min-width: 0 强制子项收缩;还有部分低端机 touchstart 延迟高,得加 touch-action: manipulation 才能保点击响应。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2323

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

5023

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6110

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5638

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

803

2024.05.22

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

3871

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

6568

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

774

2025.12.30

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.8万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn