css实现宽高按比例拉伸

场景

开发中等宽列表开发经常会使用flex进行宽度的自适应。但为了在大屏时不至于只变化宽度,UI提出需要列表每一项宽高自适应。

解决思路

这么简单的需求,肯定不考虑使用js来监听宽度拉伸设置高度,成本太高,所以优先考虑如何从css入手。
1.是否有属性直接设置宽高比?
2.是否有哪些属性是根据宽度而变化的?

解答方案

  • 是否有属性直接设置宽高比?

答案是有的,这个属性是:aspect-ratio,MDN对于这个属性的解释是:

aspect-ratio CSS 属性为box容器规定了一个期待的纵横比,这个纵横比可以用来计算自动尺寸以及为其他布局函数服务。

我们可以直接使用这个属性设置每个item中的宽高比,用法:

// aspect-ratio: 设计图的宽高比例
aspect-ratio: 16 / 9

但这个属性是个新特性,在IE中并不支持,需要考虑其兼容性,所以不推荐。
下面是其兼容性截图:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要让 CSS 背景图片全屏铺满而不拉伸,可以使用 `background-size: cover` 属性。这个属性会自动调整背景图片的大小,使得图片完整地覆盖整个容器,同时不拉伸图片。例如: ``` body { background-image: url(your-image-url.jpg); background-size: cover; background-repeat: no-repeat; background-attachment: fixed; background-position: center; } ``` 这样,背景图片就可以全屏铺满且不拉伸了。 ### 回答2: 要实现CSS背景图片全屏铺满且不拉伸可以使用以下方法: 1. 使用background-size属性: 在CSS中,可以使用background-size属性来设置背景图片的大小。通常,我们可以将其设置为cover,以使背景图完全覆盖背景区域,同时保持图片的比例不变。这样,背景图片可以全屏铺满,但可能会被裁剪。 例如: ``` body { background-image: url("背景图地址"); background-size: cover; background-repeat: no-repeat; background-position: center; background-attachment: fixed; } ``` background-repeat属性设置为no-repeat可以禁止背景图重复出现,而background-position属性将其设置为居中显示。同时,使用background-attachment: fixed属性可以固定背景图,使其随页面滚动而滚动。 2. 使用background-position属性和vw、vh单位: 使用background-position属性结合vw和vh单位,可以根据视口的宽度和高度设置背景图的位置,实现全屏铺满效果。 例如: ``` body { background-image: url("背景图地址"); background-repeat: no-repeat; background-position: center; background-attachment: fixed; background-size: auto; } @media (max-aspect-ratio: 16/9) { body { background-size: 100vw auto; } } @media (min-aspect-ratio: 16/9) { body { background-size: auto 100vh; } } ``` 通过@media媒体查询,可以根据视口的长宽比例设置合适的背景图大小。在上述示例中,背景图会根据视口的宽高比例设置为100vw自动高度或者自动宽度100vh。 综上所述,以上两种方法可以实现CSS背景图片全屏铺满而不拉伸的效果。 ### 回答3: 要将CSS背景图片全屏铺满但不拉伸,可以使用CSS3的background-size属性和background-position属性。以下是一种实现方法: 首先,在CSS样式中设置背景图片的路径,例如: ```css body { background-image: url("path-to-image.jpg"); } ``` 然后,使用background-size属性设置背景图片的尺寸,将其调整为cover,即将图片缩放以填充整个容器,但保持其纵横比: ```css body { background-size: cover; } ``` 接下来,使用background-position属性设置背景图片的位置为中心,即将其放置在容器的中央: ```css body { background-position: center; } ``` 最后,将容器的高度和宽度设置为100%,以使背景图片铺满整个屏幕: ```css html, body { height: 100%; width: 100%; } ``` 以上方法可以确保背景图片在保持纵横比的同时填满整个屏幕,不会出现拉伸的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值