求助老师图片自适应的问题.
来源:6-4 编写呼吸轮播特效
宋帅林
2020-10-23 13:10:51
# 具体遇到的问题
这两天自己做练习遇到一个肯苦恼的问题.
请老师帮助给出一个图片 宽度100% 多个li绝对定位撑不起来盒子的问题 的解决代码.
我目前HTML的结构是
div>ul>li>img
其实就是一个标准的banner轮播结构
我想让图片的大小随着浏览器的尺寸改变宽度
所以设置图片宽度为100% 并没有设置高度
然后将图片的li标签设置为绝对定位.并且全部重合在一起. 父标签ul 设置绝对定位
js想通过setInterval来改变每个图片的透明度(这个不用讲解. 我自己会制作)
但是出现了一个比较让我头疼的问题.就是 最外部的div盒子没有BFC规范. 直接无法撑起来导致我网页后边的东西都堆过来了. 请问老师. 我这个问题是不是图片没有设置尺寸的问题导致的. 如果图片必须要设置尺寸.
那如何做到 所有图片绝对定位重叠到一起.并且还能自动适应网页宽度呢. 请老师贴一份代码. 我自己研究也可以 .
1回答
同学你好,设置绝对定位的元素,会脱离文档流,撑不开父级的高度。如果想要解决这个问题,可以给外层盒子设置一个固定的高度,但是这样其他地方的布局可能会受到影响。建有:可以使用padding-bottom的方式。老师写了个小例子,同学可以参考一下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
div {
width: 100%;
/*图片的高度/宽度之后,乘以100得到的值 */
padding-bottom: 41%;
/* 其子元素相对于div定位 */
position: relative;
}
ul {
/* 四个方向都为0,可以占满父元素的宽高 */
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
img {
width: 100%;
}
li {
/* 四个方向都为0,可以占满父元素的宽高 */
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
</style>
</head>
<body>
888
<div>
<ul>
<li>
<img src="https://img.mukewang.com/5f8cf95c0001dfa918720764.jpg" alt="">
</li>
<li>
<img src="https://img.mukewang.com/5f8cf95c0001dfa918720764.jpg" alt="">
</li>
</ul>
</div>
<p>111</p>
</body>
</html>相似问题