Css 子元素div自适应父元素

废话不多说直接上代码:

HTML
<div class="parent">
    <div class="child"></div>
</div>
CSS
// 父级元素
 .parent {
    position: relative;
    width: 100px;
    height: 100px;
    border: 10px solid red;
    cursor: pointer;
  }

.parent:hover {
    cursor: nwse-resize;
 }

// 子级元素
.child {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    background: #000;
}

通过给子元素设置 position: absolute 四边(topleftbottomright)设置为0 使其自适应撑起内容区域

在这里插入图片描述

可以看出来,我并没有给子元素设置宽高,但确实占满看父级内容区。为了验证这个想法,我写了一个拖拽边框放大事件,代码如下

JavaScript
const parent = document.querySelector('.parent');

let isResizing = false;
let startX, startY, startWidth, startHeight;

parent.addEventListener('mousedown', (e) => {
    isResizing = true;
    startX = e.clientX;
    startY = e.clientY;
    startWidth = parseInt(document.defaultView.getComputedStyle(parent).width, 10);
    startHeight = parseInt(document.defaultView.getComputedStyle(parent).height, 10);

    document.addEventListener('mousemove', resize);
    document.addEventListener('mouseup', stopResize);
});

function resize(e) {
    if (!isResizing) return;

    const newWidth = startWidth + (e.clientX - startX);
    const newHeight = startHeight + (e.clientY - startY);

    parent.style.width = `${newWidth}px`;
    parent.style.height = `${newHeight}px`;
}

function stopResize() {
    isResizing = false;
    document.removeEventListener('mousemove', resize);
    document.removeEventListener('mouseup', stopResize);
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值