首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在HTML中创建类似Microsoft Office Word的表格生成器的控件

在HTML中创建类似Microsoft Office Word的表格生成器的控件
EN

Stack Overflow用户
提问于 2019-12-03 23:05:21
回答 2查看 183关注 0票数 1

是否可以使用HTML5或Javascript创建这样的控件?我找到了下面的link,在那里他们只使用CSS就可以创建类似于图形的东西。

代码语言:javascript
运行
复制
$trans: transparent;
$block: #00004f;
$line: #19465b;
$gridSize: 60px;
$subdivisions: 1;
$lineAlpha: .1;
$sublineAlpha: 1;
$gridHeight : 120px;

body {
  background-color: $block;
  background-image:
    linear-gradient(rgba($line,$sublineAlpha) 1px, $trans 1px), /*sub horiz*/
    linear-gradient($line 1px, $trans 1px), /*main horiz*/
    linear-gradient(90deg, rgba($line,$sublineAlpha) 1px, $trans 1px), /*sub vert*/
    linear-gradient(90deg, rgba($line,$lineAlpha) 1px, $trans 1px), /*main vert*/
    linear-gradient($trans 3px, $block 3px, $block $gridSize - 2, $trans $gridSize - 2), /*nub horiz*/
    linear-gradient(90deg, rgba($line,$lineAlpha) 3px, $trans 3px, $trans $gridHeight - 2, rgba($line,$lineAlpha) $gridSize - 2) /*nub vert*/
    ;
  background-size:    
    $gridHeight / $subdivisions $gridSize / $subdivisions;        
}

我对Javascript开发还是个新手。有没有第三方库可以帮我做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2019-12-04 02:59:55

下面是您可以使用的一个小实现:

代码语言:javascript
运行
复制
document.body.addEventListener("click", async (e) => {
    let [colCount, rowCount] = await tablePicker(e.clientX, e.clientY);
    console.log(JSON.stringify({colCount, rowCount}));
});

function tablePicker(x, y) {
    return new Promise(resolve => {
        let div = document.querySelector("#tblpck");
        if (div) div.remove();
        let colCount = 0;
        let rowCount = 0;
        div = document.createElement("div");
        div.setAttribute("id", "tblpck");
        div.innerHTML = `<style>
            #tblpck div{background:#ccc;font-family:Verdana;text-align:right}
            #tblpck table{border-spacing:3px;background:#f8f8f8}
            #tblpck td{border:1px solid #888;width:16px;height:16px;box-sizing:border-box}
            #tblpck .tblpckhighlight{border:2px solid orange;}
        <\/style><div>0x0 Table<\/div>
        <table>${`<tr>${`<td><\/td>`.repeat(10)}<\/tr>`.repeat(10)}<\/table>`;
        document.body.appendChild(div);
        Object.assign(div.style, {left: x + "px", top: y + "px", position: "absolute", border: "1px solid #ccc"});
        
        div.onmouseover = (e) => {
            if (e.target.tagName !== "TD") return;
            let td = e.target;
            let tr = td.parentNode;
            let table = tr.parentNode;
            colCount = td.cellIndex+1;
            rowCount = tr.rowIndex+1;
            for (let row of table.rows) {
                let inside = row.rowIndex < rowCount;
                for (let cell of row.cells) {
                    cell.classList.toggle("tblpckhighlight", inside && cell.cellIndex < colCount);
                }
            }
            div.children[1].textContent = `${colCount}x${rowCount} Table`;
            return false;
        };

        div.onmousedown = () => {
            div.remove();
            resolve([colCount, rowCount]);
        };
    });
}
代码语言:javascript
运行
复制
body { height: 100vh; margin: 0 } 
代码语言:javascript
运行
复制
Click to get popup at cursor position...

票数 1
EN

Stack Overflow用户

发布于 2019-12-04 02:09:02

答案是“是”,实际上是“是的,这应该是javascript”。也就是说,不是所有的-使用css的视觉样式(颜色等)。你会从制作中学到很多东西,所以我说去做吧。您的HTML将“告诉”浏览器显示哪个元素(您的表),您的JS将用于“发生了什么”(悬停、点击、表格信息),您的CSS将用于样式设置。我发现这个页面是一个例子-- https://html-cleaner.com/html-table-generator/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59160006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档