Javascript 使用jquery添加div边框,而不更改宽度和默认边框
我想做一些像Inspect Element highlight这样的东西。我想在鼠标上方的div中添加边框 我不希望这会改变div的宽度,还有一些div有自己的边框,所以我不想替换div的默认边框Javascript 使用jquery添加div边框,而不更改宽度和默认边框,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想做一些像Inspect Element highlight这样的东西。我想在鼠标上方的div中添加边框 我不希望这会改变div的宽度,还有一些div有自己的边框,所以我不想替换div的默认边框 $( document ).find('div').hover( function(e){ $(this).css('border', '1px dashed #59A3D5'); e.s
$( document ).find('div').hover(
function(e){
$(this).css('border', '1px dashed #59A3D5');
e.stopPropagation();
e.preventDefault();
return false;
},function(e){
e.preventDefault();
e.stopPropagation();
$(this).css('border', 'none');
return false;
}
);
我就是这么想的。但它正在替换div的默认边框(如果有),并更改div的宽度。。。它还与父div相邻
编辑
我还尝试向mouseovered div添加一个类,并使用:before
添加带有绝对位置的背景,但如果网站使用相对位置和绝对位置,则会出错:
$(document).find('div').hover(
function(e){
$(document).find('div').removeClass("highlight");
var current_div_position = $(this).position();
$(document).find('body').append('<style>.highlight:before { width: '+$(this).outerWidth(true)+'; height: '+$(this).outerHeight(true)+'; top: '+current_div_position.top+'; left: '+current_div_position.left+';}</style>');
e.stopPropagation();
$(this).addClass("highlight");
e.preventDefault();
return false;
},function(e){
$(this).removeClass("highlight");
e.preventDefault();
e.stopPropagation();
return false;
}
);
我能做什么?谢谢 改为添加。
它不会更改尺寸,并且将在不干扰边界的情况下进行渲染
.highlight {
outline: 2px dashed #0f0;
}
例如:
编辑:您也可以使用
框阴影
使高亮显示的元素“发光”:首先,一个元素不能同时定义两个边框样式属性。按照你的方式,一条边界将永远取代另一条边界
你可以选择一些其他的方法。我建议,就像前面提到的@pawel一样,使用outline
。如果必须使用边框,则可以让另一个元素包装您的元素,并在悬停时将边框添加到此包装中。您可以对其进行排列,以使此包装器不可见
另外,作为旁注,因为您想要的只是元素悬停时的样式更改,所以可以并且应该使用css来实现它。查看css:将鼠标悬停
改为添加大纲
。它不会更改尺寸,并且将在不干扰边界的情况下进行渲染。如果元素没有,则可以使用。顺便说一下,中不需要返回false代码>如果使用e.preventDefault()代码>和e.stopPropagation()代码>。反之亦然。@pawel我会加上这个作为答案。@Rorymcrossan我认为你是对的,贴出来作为答案。
.highlight {
outline: 2px dashed #0f0;
}