【问题标题】:Grab Dynamically Added Content抓取动态添加的内容
【发布时间】:2013-12-15 20:51:09
【问题描述】:

完整代码可以在JSBin上查看-http://jsbin.com/ecuraQEg/1/edit

我正在做一个实验性的网站设计师(一个所见即所得的编辑器),我遇到了一些麻烦。

我希望能够通过更改其位置、背景颜色、边框、填充等来操作已绘制/附加的 div:

假设我绘制了 3 个 div,背景颜色为红色、绿色和蓝色。

当我点击红色 div 时,我希望它显示它的所有属性、高度、宽度、顶部、左侧、背景等:我已经有宽度和高度向下,但我似乎无法弄清楚如何抓住其他样式。

非常感谢任何帮助。

DIV 的宽度/高度由以下内容获取:

canvas.onmousemove = function(e) {
    if ($('select#tools option:selected').val() !== 'select') return;

    $('#canvas div').on('mousemove', function() {
        // Detects/Shows div size on specified element.
        $('#elm-width').val($(this).width().toString() + 'px');
        $('#elm-height').val($(this).height().toString() + 'px');
    });

    document.getSelection().removeAllRanges();
    $('#canvas div.rect').draggable();
    code.val(preview.html());
    coder.val(preview.html());
};

DIV 是使用以下 JQuery/Javascript 绘制的:

setMousePosition = function(e) {
  if ($('select#tools option:selected').val() !== 'div') return;
    var ev = e || window.event; //Moz || IE
    if (ev.pageX) { //Moz
        mouse.y = ev.pageY + window.pageYOffset;
        mouse.x = ev.pageX + window.pageXOffset;
    } else if (ev.clientX) { //IE
        mouse.y = ev.clientY + document.body.scrollTop;
        mouse.x = ev.clientX + document.body.scrollLeft;
    }
};

var mouse = {
    x: 0,
    y: 0,
    startX: 0,
    startY: 0
};
var element = null;

// Mouse Event Handlers
canvas.onmousemove = function(e) {
    if ($('select#tools option:selected').val() !== 'div') return;
    setMousePosition();
    if (element !== null) {
        element.style.position = $('select#position option:selected').val();
        element.style.top = (mouse.y - mouse.startY < 0) ? mouse.y + 'px' : mouse.startY + 'px';
        element.style.left = (mouse.x - mouse.startX < 0) ? mouse.x + 'px' : mouse.startX + 'px';
        element.style.width = Math.abs(mouse.x - mouse.startX) + 'px';
        element.style.height = Math.abs(mouse.y - mouse.startY) + 'px';
        element.style.margin = $('#elm-margin').val();
        element.style.padding = $('#elm-padding').val();
        element.style.color = $('#elm-color').val();
        element.style.border = $('#elm-border').val();
        element.style.borderRadius = $('#elm-border-radius').val();
        element.style.MozBorderRadius = $('#elm-border-radius').val();
        element.style.background = $('#elm-bgcolor').val();
        element.style.boxShadow = $('#elm-boxshadow').val();
        element.style.textShadow = $('#elm-txtshadow').val();
        element.style.overflow = 'auto';

        $('#elm-top').val(element.style.top);
        $('#elm-left').val(element.style.left);
        $('#elm-width').val(element.style.width);
        $('#elm-height').val(element.style.height);
    }
};

canvas.onmousedown = function(e) {
    if ($('select#tools option:selected').val() !== 'div') return;
    if (element !== null) {
        element = null;
        canvas.style.cursor = "default";
        console.log("finsihed.");
    } else {
        console.log("begun.");
        mouse.startY = mouse.y;
        mouse.startX = mouse.x;
        element = document.createElement('div');
        element.className = 'rect';
        element.style.top = mouse.y + 'px';
        element.style.left = mouse.x + 'px';
        canvas.appendChild(element);
        element.appendChild(document.createTextNode($('#insidediv').val()));
        canvas.style.cursor = "crosshair";
    }
};

canvas.onmouseup = function(e) {
    if ($('select#tools option:selected').val() !== 'div') return;
    element = null;
    canvas.style.cursor = "default";
    console.log("finsihed.");
    code.val(preview.html());
    coder.val(preview.html());
    $('.select-tool').trigger('click');
};

【问题讨论】:

    标签: javascript jquery css


    【解决方案1】:

    使用jQuery,你可以使用$(element).css('property-name');获取任意css属性的值

    这是一个使用它的简单示例,以及使用 .offset().top.offset().left 作为获取这些值的替代方法。 (这些也是 jQuery 方法):

    http://jsfiddle.net/sx8B3/

    【讨论】:

    • 不幸的是,这有点棘手..您需要获取容器元素的高度$(container_elem).height(),然后从中减去目标元素的顶部偏移量和高度,以获得它的距离从底部。当然,除非你有一个绝对定位的元素,上面设置了bottomright 属性或类似的东西,在这种情况下你可以使用.css() 方法。但我认为情况并非如此。
    猜你喜欢
    • 2012-04-15
    • 2015-05-09
    • 2013-09-11
    • 2015-08-17
    • 2019-01-13
    • 2016-09-04
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多