我正在尝试创建一个;切口";div在另一个div的顶部。剪切的div大小相同,但有一个大边框。当我尝试使用第一个div的顶部、左侧、偏移宽度和高度,并放置第二个div时,它会放置包括边界的div坐标,这样它就不会在另一个div的上方。
我不知道如何将第二个div放在另一个div的顶部。这是我的代码:
let targetElement = document.querySelector(".div1");
let targetTop = targetElement.getBoundingClientRect().top;
let targetLeft = targetElement.getBoundingClientRect().left;
let targetHeight = targetElement.offsetHeight;
let targetWidth = targetElement.offsetWidth;
let isolateElement = document.querySelector(".div2");
if(isolateElement){
isolateElement.style.top = (targetTop) +"px";
isolateElement.style.left = (targetLeft) +"px";
isolateElement.style.height = (targetHeight) +"px";
isolateElement.style.width = (targetWidth) +"px";
isolateElement.style.position = "absolute";
console.log(targetTop);
console.log(targetLeft);
console.log(targetWidth);
console.log(targetHeight);
}
.div1 {
width: 100px;
height: 100px;
background: red;
position: absolute;
top:50%;
left:50%;
}
.div2 {
position: absolute;
z-index:2;
background: transparent;
border:400px solid rgba(0, 0, 0, 0.7) ;
left: -15%;
}
<html>
<body>
<div class="div1"></div>
<div class="div2"></div>
</body>
</html>
使用calc()
:
let targetElement = document.querySelector(".div1");
let targetHeight = targetElement.offsetHeight;
let targetWidth = targetElement.offsetWidth;
let isolateElement = document.querySelector(".div2");
if (isolateElement) {
isolateElement.style.height = (targetHeight) + "px";
isolateElement.style.width = (targetWidth) + "px";
}
.div1 {
width: 100px;
height: 100px;
background: red;
position: absolute;
top: 50%;
left: 50%;
}
.div2 {
position: absolute;
z-index: 2;
background: transparent;
border: 400px solid rgba(0, 0, 0, 0.7);
top:calc(50% - 400px);
left:calc(50% - 400px);
}
<div class="div1"></div>
<div class="div2"></div>
或者使用轮廓代替边框:
let targetElement = document.querySelector(".div1");
let targetHeight = targetElement.offsetHeight;
let targetWidth = targetElement.offsetWidth;
let isolateElement = document.querySelector(".div2");
if(isolateElement){
isolateElement.style.height = (targetHeight) +"px";
isolateElement.style.width = (targetWidth) +"px";
}
.div1 {
width: 100px;
height: 100px;
background: red;
position: absolute;
top: 50%;
left: 50%;
}
.div2 {
position: absolute;
top: 50%;
left: 50%;
z-index: 2;
outline: 400px solid rgba(0, 0, 0, 0.7);
}
<div class="div1"></div>
<div class="div2"></div>