Js实现点击在div1中放置8个div2,按二行四列布局。点击div2后后div2放大,放大后的大小为四个小div2的大小,并将原来的四个div进行覆盖,并用img1作为元素放大后的新内容,
时间: 2024-12-24 11:33:22 浏览: 4
在JavaScript中,你可以通过HTML结构和一些CSS样式以及事件监听来实现这个需求。首先,创建HTML结构:
```html
<div id="div1">
</div>
<div class="div2" style="display: none;">
<img src="img1.jpg" alt="Image 1">
</div>
```
然后,在CSS中设置基础样式和动画效果:
```css
.div2 {
width: 50px;
height: 50px;
position: absolute;
transition: transform 0.5s ease;
}
#div1 {
display: flex;
flex-wrap: wrap;
}
.large-div2 {
transform: scale(2);
}
```
接下来,用JavaScript添加动态生成和点击事件:
```javascript
// 获取div1元素和div2模板
const div1 = document.getElementById('div1');
const div2Template = document.querySelector('.div2');
// 遍历8次,创建并放置4x2布局
for (let i = 0; i < 8; i++) {
const newDiv2 = div2Template.cloneNode(true);
let row = Math.floor(i / 4), col = i % 4;
newDiv2.style.left = `${col * 75}px`; // 假设每个小div宽50px,共4个小div,总宽200px
newDiv2.style.top = `${row * 75}px`; // 同理,高度也计算类似
div1.appendChild(newDiv2);
}
// 点击事件处理
div1.addEventListener('click', function(e) {
const target = e.target;
if (target.classList.contains('div2')) {
target.classList.add('large-div2');
target.innerHTML = '<img src="img1.jpg">'; // 替换img内容
}
});
```
阅读全文