概述
本 Demo 展示了如何启用 SpreadJS 的触摸布局功能。通过设置 useTouchLayout 选项,表格控件会针对触摸操作进行优化,提供更好的移动端使用体验。
实现思路
创建 Workbook 实例并初始化 SpreadJS 组件
设置 useTouchLayout 属性为 true,启用触摸布局
加载数据源并设置列宽,展示表格内容
提供复选框控件,允许用户动态切换触摸布局的启用状态
代码解析
启用触摸布局
创建 Workbook 实例后,通过设置 spread.options.useTouchLayout = true 启用触摸布局。启用后,SpreadJS 会自动调整控件元素的尺寸和间距,使按钮、滚动条等交互元素更适合手指触摸操作。
动态切换触摸布局
通过监听复选框的点击事件,可以动态启用或禁用触摸布局。这个功能适用于需要在桌面和移动设备之间切换的场景。
设置数据源和列宽
Demo 使用预设的数据源填充表格,并设置了各列的宽度,确保数据在触摸设备上显示良好。
运行效果
页面加载后,触摸布局默认为启用状态,表格控件采用更适合触摸操作的布局方式
取消勾选"启用触摸"复选框,可切换回标准桌面布局
重新勾选复选框,则再次启用触摸布局
在触摸布局下,滚动条、按钮等交互元素的尺寸会增大,更便于触摸操作
API 参考
useTouchLayout 属性
true:启用触摸布局,优化触摸操作体验
false:使用标准桌面布局
SpreadJS 支持的触摸功能包括:滚动、缩放、选择、调整大小、拖拽填充、分组、单元格类型、自动调整、编辑、工作表选项卡和工具栏。
window.onload = function () {
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
spread.options.useTouchLayout = true;
var sd = dataSource;
var sheet = spread.getActiveSheet();
if (sd.length > 0) {
sheet.setDataSource(sd);
}
sheet.setColumnWidth(0, 160);
sheet.setColumnWidth(1, 70);
sheet.setColumnWidth(2, 90);
sheet.setColumnWidth(3, 110);
sheet.setColumnWidth(4, 80);
sheet.setColumnWidth(6, 110);
document.getElementById('useTouchLayout').onclick = function (e) {
spread.options.useTouchLayout = e.target.checked;
};
};
<!doctype html>
<html style="height:100%;font-size:14px;">
<head>
<meta name="spreadjs culture" content="zh-cn" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css"
href="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
<script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/dist/gc.spread.sheets.all.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/spread/source/data/data.js" type="text/javascript"></script>
<script
src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div class="sample-tutorial">
<div class="options-container">
<input type="checkbox" id="useTouchLayout" checked="checked">
<label for="useTouchLayout">启用触摸</label>
</div>
<hr>
<div id="ss" class="sample-spreadsheets"></div>
</div>
</body>
</html>
.sample-tutorial {
position: relative;
height: 100%;
overflow: hidden;
}
.sample-spreadsheets {
width: 100%;
height: calc(100% - 70px);
overflow: hidden;
float: bottom;
}
.options-container {
float: top;
width: 100%;
padding: 12px;
height: 50px;
box-sizing: border-box;
background: #fbfbfb;
overflow: auto;
}
.option-row {
font-size: 14px;
padding: 5px;
margin-top: 10px;
}
label {
margin-bottom: 6px;
}
input {
padding: 4px 6px;
}
body {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}