html标签编辑器,酷毙的html标签编辑器

心血来潮,写了这个玩具,以后有时间会逐步完善功能,作为前端的自由编辑工具,还是很好玩的。

function insertStyleSheet(styles, styleId) {

if (!document.getElementById(styleId)) {

var style = document.createElement("style");

style.id = styleId;

(document.getElementsByTagName("head")[0] || document.body).appendChild(style);

if (style.styleSheet) { //for ie

style.styleSheet.cssText = styles;

} else {//for w3c

style.appendChild(document.createTextNode(styles));

}

}

}

insertStyleSheet("html{cursor:text;*cursor:auto;width:100%;height:100%;margin:0;padding:0;}body{width:100%;height:100%;margin:0;padding:0;}.myFrame{box-shadow:0 0 18px #090;}", "myFrameStyle");

var myDrag = {};

myDrag.originX = myDrag.originY = myDrag.left = myDrag.top = myDrag.mousedown = 0;

myDrag.option = "d";

myDrag.cursor = "default";

//本方法经过一定优化,相对减少系统消耗

function setCursor(e, d) {

var o = myDrag.currObj;

if (o) {

d = d || 3;

var w = o.outerWidth()

, h = o.outerHeight()

, x = o.offset().left

, y = o.offset().top;

if((x - e.pageX) > d || (y - e.pageY) > d || (e.pageX - x - w) > d || (e.pageY - y - h) > d){

$('body').css("cursor", 'default');

myDrag.option = 'd';

return false;//目标外围

}

if((e.pageX - x) > d && (e.pageY - y) > d && (x + w - e.pageX) > d && (y + h - e.pageY) > d){

//$('body').css("cursor", 'move');

myDrag.option = 'm';

return false;//目标外围

}

var l = Math.abs(e.pageX - x)

, t = Math.abs(e.pageY - y)

, r = Math.abs(x + w - e.pageX)

, b = Math.abs(y + h - e.pageY);

if(l < d && t < d){

$('body').css("cursor", 'se-resize');

myDrag.option = 'lt';

return false;//目标左上角

}

if(r < d && b < d){

$('body').css("cursor", 'se-resize');

myDrag.option = 'rb';

return false;//目标右下角

}

if(r < d && t < d){

$('body').css("cursor", 'ne-resize');

myDrag.option = 'rt';

return false;//目标右上角

}

if(l < d && b < d){

$('body').css("cursor", 'ne-resize');

myDrag.option = 'lb';

return false;//目标左下角

}

if(l < d){

$('body').css("cursor", 'w-resize');

myDrag.option = 'l';

return false;//目标左

}

if(r < d){

$('body').css("cursor", 'w-resize');

myDrag.option = 'r';

return false;//目标右

}

if(t < d){

$('body').css("cursor", 's-resize');

myDrag.option = 't';

return false;//目标上

}

if(b < d){

$('body').css("cursor", 's-resize');

myDrag.option = 'b';

return false;//目标下

}

}

}

function dragDom(e) {

if (myDrag.option == 'm') {

myDrag.left += e.pageX - myDrag.originX;

myDrag.top += e.pageY - myDrag.originY;

myDrag.currObj.css({ top: myDrag.top, left: myDrag.left });

} else {

if (myDrag.option != "d") {

var o = myDrag.currObj;

if (myDrag.option == "l") {

myDrag.left += e.pageX - myDrag.originX;

o.css({ left: myDrag.left })

.width(o.width() - e.pageX + myDrag.originX);

}

if (myDrag.option == "t") {

myDrag.top += e.pageY - myDrag.originY;

o.css({ top: myDrag.top }).height(o.height() - e.pageY + myDrag.originY);

}

if (myDrag.option == "r") {

o.width(o.width() + e.pageX - myDrag.originX);

}

if (myDrag.option == "b") {

o.height(o.height() + e.pageY - myDrag.originY);

}

if (myDrag.option == "lt") {

myDrag.top += e.pageY - myDrag.originY;

myDrag.left += e.pageX - myDrag.originX;

o.css({ top: myDrag.top }).css({ left: myDrag.left })

.height(o.height() - e.pageY + myDrag.originY)

.width(o.width() - e.pageX + myDrag.originX);

}

if (myDrag.option == "rb") {

o.height(o.height() + e.pageY - myDrag.originY)

.width(o.width() + e.pageX - myDrag.originX);

}

if (myDrag.option == "lb") {

myDrag.left += e.pageX - myDrag.originX;

o.css({ left: myDrag.left })

.height(o.height() + e.pageY - myDrag.originY)

.width(o.width() - e.pageX + myDrag.originX);

}

if (myDrag.option == "rt") {

myDrag.top += e.pageY - myDrag.originY;

o.css({ top: myDrag.top })

.height(o.height() - e.pageY + myDrag.originY)

.width(o.width() + e.pageX - myDrag.originX);

}

}

}

}

$(document).on("click", function (e) {

var obj = e.originalEvent.srcElement;

var o = $(obj);

if ('myFrame' != o.attr('class') && !o.is('body')) {

if (myDrag.currObj) {

$(myDrag.currObj).css('border', myDrag.border);

}

o.css('position', 'relative').parent().css('position', 'relative');

myDrag.currObj = o;

myDrag.border = o.css('border');

o.css('border', '1px dashed red');

} else {

if (myDrag.currObj) {

$(myDrag.currObj).css('border', myDrag.border);

myDrag.currObj = null;

}

}

e.stopPropagation();

}).on("mousedown", function (e) {

if (myDrag.option != "d") {

myDrag.mousedown = 1;

var o = myDrag.currObj;

if (myDrag.option == "m") {

o.css("cursor", 'move');

}

myDrag.left = o.css("left") == 'auto' ? 0 : parseInt(o.css("left"));

myDrag.top = o.css("top") == 'auto' ? 0 : parseInt(o.css("top"));

myDrag.originX = e.pageX;

myDrag.originY = e.pageY;

}

e.stopPropagation();

}).on('mousemove', function (e) {

if (myDrag.mousedown == 0) {

if (myDrag.currObj) {

setCursor(e,5);

}

} else {

dragDom(e);

}

myDrag.originX = e.pageX;

myDrag.originY = e.pageY;

e.stopPropagation();

}).on('mouseup', function (e) {

myDrag.originX = myDrag.originY = myDrag.left = myDrag.top = myDrag.mousedown = 0;

if (myDrag.option == "m") {

$(myDrag.currObj).css("cursor", 'default');

}

e.stopPropagation();

}).on('keydown', function (e) {

if (myDrag.currObj) {

var o = myDrag.currObj;

switch (e.which) {

case 46 :{

if (confirm('Are you sure to delete it?')) {

o.parent().append(o.children());

o.remove();

}

} break;

case 37: {

myDrag.left -= 1;

o.css({ left: myDrag.left });

} break;

case 38: {

myDrag.top -= 1;

o.css({ top: myDrag.top });

} break;

case 39: {

myDrag.left += 1;

o.css({ left: myDrag.left });

} break;

case 40: {

myDrag.top += 1;

o.css({ top: myDrag.top });

} break;

default: break;

}

return false;

}

e.stopPropagation();

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值