img适配之Object-fit

1 篇文章 0 订阅

项目中有时候为了将图片更好的展示出来,会在img外面套一层盒子,img在内部宽度定义百分比,高度不定义(或者高度百分比,宽度不定义),自适应撑开;如下:

<div className="imgBox">
	<img alt="" src="![在这里插入图片描述](https://img-blog.csdnimg.cn/2019102712352066.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTcyMTg4,size_16,color_FFFFFF,t_70)" />
</div>

.imgBOx {
	width: 200px;
	height: 200px;
	img {
		width: 100%;
	}
}

这种适配方案仍有许多的局限性,对于有的图片长宽比过大很不友好;所以一般的网页对于图片有了放大查看图片的效果,并附加放大,缩小,旋转等附加效果;
有一次无意中发现Object-fit属性,简直感叹现在的浏览器对于HTML 页面太又好了,减少了图片的适配问题;
object-fit有5个属性值:
none:未设置任何效果,保持原有大小;
contain:根据窗口大小一定等比例的进行缩小展示,(我一般都是使用该属性,完美适配);
scale-down:大小与none和contain 中的一个保持一致,取决于哪一个会更小;
cover:保持比例填充满窗口,所以容易出现被裁剪的效果;
fill:内容充满所定窗口,不建议使用,容易有变形效果;

<img alt="" src="![在这里插入图片描述](https://img-blog.csdnimg.cn/2019102712352066.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTcyMTg4,size_16,color_FFFFFF,t_70)" />

img {
	width: 200px;
	height: 200px;
	object-fit: contain;
}

同类型还有一个object-position属性,限制元素在所定窗口中的位置;有兴趣的可以了解一下哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>个人介绍</title> <style> /* 样式表 */ /* 轮播图区域 */ .slideshow { position: relative; width: 100%; height: 300px; overflow: hidden; } .slideshow img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1s ease-in-out; } .slideshow img.active { opacity: 1; } /* 导航栏区域 */ nav { background-color: #333; color: #fff; display: flex; justify-content: space-between; padding: 10px; } nav a { color: #fff; text-decoration: none; margin: 0 10px; } </style></head><body> <!-- 导航栏 --> <nav> <a href="#">首页</a> <a href="#">关于我</a> <a href="#">联系我</a> </nav> <!-- 轮播图 --> <div class="slideshow"> <img src="https://picsum.photos/id/1/1200/300" alt="图片1" class="active"> <img src="https://picsum.photos/id/2/1200/300" alt="图片2"> <img src="https://picsum.photos/id/3/1200/300" alt="图片3"> </div> <!-- 个人介绍 --> <h1>欢迎来到我的个人网站</h1> <p>我叫XXX,是一名XXX。我喜欢XXX,平时喜欢XXX。欢迎联系我,我的邮箱是XXX。</p> <!-- 脚本部分 --> <script> // 轮播图部分的脚本 var images = document.querySelectorAll('.slideshow img'); var currentImageIndex = 0; var slideshowInterval = setInterval(nextImage, 3000); function nextImage() { images[currentImageIndex].classList.remove('active'); currentImageIndex = (currentImageIndex + 1) % images.length; images[currentImageIndex].classList.add('active'); } </script></body></html>你这个代码图片显示不完全,如何完整显示图片
06-02

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值