<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
li {
display: inline-block;
width: 500px;
}
img {
/* 图片原始的尺寸是70*40 */
/* 这里设置其宽度为100% */
width: 100%;
}
div.img {
/* 图片外层的div不设置左浮动时,图片宽度撑满li,为500px。
但是当图片外层的div设置左浮动时,图片宽度保持原始尺寸不变,为70*40 */
float: left;
}
</style>
</head>
<body>
<ul>
<li>
<div class="img">
<a href=""><img src="../素材/test.jpg" alt=""></a>
</div>
</li>
</ul>
</body>
</html>
如上面描述,我对于图片设置百分比宽度理解不够深刻,这里我给图片设置 width: 100%究竟是相对于其父元素a,还是向上寻找直到找到有设置宽度的祖先元素并用其宽度*100%?
可以看到,我没有设置div浮动时,图片从原始的70乘40变成了100%的500px,也就是向上寻找到了设置宽度的li。
但是设置div浮动后,图片没有变化,保持原始70乘40,我可以理解div变成了和a一样的内容自适应,但是li依然是设置了宽度的块盒啊,为何图片不继续向上寻找宽度呢?
img 设置 width: 100%是相对于其向上寻找第一个块元素的宽度,也就是相对于<div class="img">
的宽度,
当没有设置div浮动时, div的宽度默认是最大化(就相当于宽度100%), 也就是div的宽度等于li的宽度500px,
img 的 width: 100% 是参照div的宽度,也是500px
但是设置div浮动后, div的宽度会变成默认最小化(就是div的宽度等于其div中内容的宽度), 也就是div的宽度等于的img宽度70px,
img 的 width: 100% 是参照div的宽度,还是70px,也就没变化
主要是div宽度的变化, img宽度是参照div的宽度,img宽度与li的宽度没有直接关系
参考下边例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
li {
display: inline-block;
width: 500px;
border: 1px solid #999;
}
div#id1 {
background-color: #f99;
}
div#id2 {
float: left;
background-color: #99f;
}
</style>
</head>
<body>
<ul>
<li>
<div id="id1">没有设置浮动</div>
<div id="id2">设置了浮动</div>
</li>
</ul>
</body>
</html>
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
div自适应了li标签,li设置了500px 所以img的百分之百也只能是500px