字面上“写”在页面上

时间:2014-02-13 17:25:16

标签: javascript jquery html

有没有人对如何在页面上进行文字书写有任何想法,比如用户可以在演示文稿上写的PowerPoint? 我知道放置div 1px square可以完成这项工作,但是认为这可能导致代码混乱(以及很多代码!)

提前感谢任何想法。

编辑:我不能使用canvas,因为项目的其余部分将不支持它,除非某些画布可以透明并且放置比文档的其余部分更高的zIndex。

3 个答案:

答案 0 :(得分:2)

你可以看看canvas或svg。那将完成这项工作。

答案 1 :(得分:1)

如果您想在网页上书写,可以使用属性contenteditable="true"

Reference

答案 2 :(得分:1)

这就是我要做的事情:

http://jsfiddle.net/DerekL/DqZX8/

function drawingArea(ele) {
    var width = ele.scrollWidth,
        height = ele.scrollHeight,
        area = $("<svg>").attr({
            width: width,
            height: height,
            class: "draw"
        }).appendTo(ele),
        tracking = false;

    var mDown = false,
        id, line;

    $(window).mousedown(function (e) {
        if (tracking) {
            mDown = true;
            id = Date.now();
            line = $("<path>").appendTo(area).attr({
                d: [
                    "M",
                    e.clientX + ele.scrollLeft,
                    e.clientY + ele.scrollTop
                ].join(" "),
                id: id
            });
        }
    }).mousemove(function (e) {
        if (mDown) {
            line.attr({
                d: line.attr("d") + " " + [
                    "L",
                    e.clientX + ele.scrollLeft,
                    e.clientY + ele.scrollTop
                ].join(" ")
            });
            area[0].outerHTML = area[0].outerHTML;
            area = $("svg");
            line = area.find("#" + id);
            e.preventDefault();
            return false;
        }
    }).mouseup(function () {
        mDown = false;
    });

    return {
        area: area,
        startTrack: function () {
            tracking = true;
        },
        stopTrack: function () {
            tracking = false;
        },
        get isTracking() {
            return tracking;
        }
    };
}

var pad = new drawingArea(document.body);
pad.startTrack();