div中放入一个img元素导致div高度会多出3px问题

我的结构如下图,

<div class="main-box">
   <div class="container">
      <img src="./images/icon-content.jpg" alt="">
   </div>

css部分为:

.main-box
,.container
,.main-box img{
  width: 100%;
  height: 100%
}
.main-box{
  position: relative;
}
.main-box img{
  width:100%;
}

预想中应该是div的铺面全屏,img的大小和div一样占满整个屏幕,但结果恰恰是div和img下方有一个黑条大概(3px)导致页面可以上下滑动一点点。如下图:

当然我第一反应可是想padding或margin、border引起的,一顿设置,然而并未卵用。

原因:img是一种类似text的元素,在结束的时候,会在末尾加上一个空白符,所以就会多出3px。

解决办法:解决这个问题的方法也很简单,把img标签的display属性设置为block。

.main-box img{
   width:100%;
   display: block;
}

问题解决

如果您想让一个div元素固定在另一个divimg图片上,并且这个div元素要跟着图片移动,可以使用JavaScript来实现。具体的做法是: 1. 首先,在外层的div元素插入一个img标签和一个内层的div元素。 2. 使用JavaScript获取img元素的位置和大小,然后将这些信息应用到内层div元素的样式。 3. 监听窗口的resize和scroll事件,当这些事件发生时,重新计算内层div元素的位置和大小,并更新其样式。 下面是一个示例代码,演示如何在一个img图片上固定一个div元素,并让这个div元素跟着图片移动: ```html <div class="outer-div"> <img src="your-image-url.jpg" alt="your image"> <div class="inner-div"></div> </div> ``` ```css .outer-div { position: relative; } img { display: block; width: 100%; height: auto; } .inner-div { position: absolute; top: 0; left: 0; z-index: 1; width: 200px; height: 200px; background-color: rgba(255, 255, 255, 0.5); } ``` ```javascript const outerDiv = document.querySelector('.outer-div'); const img = outerDiv.querySelector('img'); const innerDiv = outerDiv.querySelector('.inner-div'); function updateInnerDiv() { const imgRect = img.getBoundingClientRect(); const outerDivRect = outerDiv.getBoundingClientRect(); innerDiv.style.width = `${imgRect.width}px`; innerDiv.style.height = `${imgRect.height}px`; innerDiv.style.top = `${imgRect.top - outerDivRect.top}px`; innerDiv.style.left = `${imgRect.left - outerDivRect.left}px`; } window.addEventListener('resize', updateInnerDiv); window.addEventListener('scroll', updateInnerDiv); updateInnerDiv(); ``` 在上面的代码,我们首先使用JavaScript获取了外层div元素img元素和内层div元素,然后定义了一个updateInnerDiv函数来更新内层div元素的位置和大小。在updateInnerDiv函数,我们使用getBoundingClientRect方法获取了img元素和外层div元素的位置和大小,然后通过计算得到了内层div元素的位置和大小,并将这些信息应用到内层div元素的样式。 最后,我们监听了窗口的resize和scroll事件,当这些事件发生时,调用updateInnerDiv函数重新计算内层div元素的位置和大小,并更新其样式。在页面加载完成后,我们也调用了一次updateInnerDiv函数,以确保内层div元素的位置和大小能够正确地初始化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值