css 不使用@media 如何让你的banner图片按照屏幕大小自适应改变?

需求:需要在首页做一个banner图展示,在不同尺寸的屏幕上都能占满到可视区域的50%,并且保持图片不拉伸不变形

技术:传统的做法都是使用@media,根据不同尺寸,设置不同的高度,但我觉得这样很麻烦,所以更喜欢使用vh。

什么是vh/vw?vh/vw是一个视窗单位:1vh = 1% 视口高度,1vw = 1%视口宽度。顾名思义,如果设置图片高度50vh,它可以让你的图片高度一直保持在可视区域的50%。

上代码:

.banner img {
    width: 100%;
    height: 48vh; 
    object-fit: cover;
}

这里用到一个属性:object-fit: cover  它可以保证让你的图片不被拉伸、不变形,等比缩放。

效果:

在网页设计或前端开发中,要让轮播图(通常称为 banners)根据图片大小自适应,你可以采用响应式布局的方法。以下是一些步骤和方法: 1. **媒体查询 (Media Queries)**: 使用 CSS3 的媒体查询功能,可以根据屏幕尺寸设置同宽度下的样式。比如,当图片宽度小于某个特定值时,调整 banner 的容器样式。 ```css @media (max-width: 768px) { .banner-container { width: 100%; /* 或者其他适合小屏幕的宽度 */ } } ``` 2. **百分比宽度**:给轮播图容器设置宽度为父元素的百分比,这样图片会自动缩放以填满容器。 ```css .banner-container { width: 100%; /* 或者 inherit, 如果父元素也是用百分比 */ } .banner { width: 100%; height: auto; /* 让高度自动计算,保持宽高比 */ } ``` 3. **弹性布局 (Flexbox) 或 栅格系统 (Grid)**: 可以利用现代浏览器支持的弹性盒子或栅格系统,创建灵活的流式布局,图片大小会根据可用空间自动调整。 4. **图片懒加载 (Lazy Loading)**: 对于大尺寸的图片,可以使用懒加载技术,只在用户滚动到可视区域时加载,节省初始页面加载时间。 5. **JavaScript 优化**: 如果需要更复杂的行为(如图片缩略图点击放大),可能需要用到 JavaScript,例如使用 `Intersection Observer` 监控图片进入视野再加载。 记得在实际项目中,确保所有图片都有合适的备用尺寸(如 srcset 和 sizes 属性)或提供多个版本的图片文件,以便根据同设备和屏幕大小选择最合适的显示版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值