巧用css实现等比缩放裁切

实用场景

我们想要将后台传过来的图片显示在一个80*80 的容器里,但是由于后台给的图片大小不一致,所以我们要对图片做一个等比缩放然后裁切中间部分显示的处理。举个栗子:

图一: 600*370

规则是以图片短的一边缩小到80的比例,缩短长的一边。以上图为例,由于宽比较短,为370,那我们就会以370/80 的比例,缩放这个图,最后就会变成 130*80,如图二。

图二:130*80

接着,我们截取中间的80*80展示在页面中,效果如图三所示:

图三:

代码实现

下面我们来解释如何做到这个效果,其实很简单~

1.先设置好一个80 *80 的容器 container,把背景图引进来

2.按照短边的比例缩放,这里我们的图片是高比较短,所以通过设置 background-size: auto 80px;就可以做到,如果是宽比较短,那就设置成 background-size: 80px auto;

3.让背景图片居中background-position: center center;

最终实现的代码如下:

.container {
  width: 80px;
  height: 80px;
  background: url("http://p.qpic.cn/qqconadmin/0/292590fd5c4a4553864f8f56f8d29a92/0");
  background-repeat: no-repeat;
  background-size: auto 80px;
  background-position: center center;
}

但是这里有个问题,我们并不想判断宽高还是长高来改background-size,这时候css3的background-size:cover 就可以帮我们解决这个问题,它会自动根据短的一边为比例缩放图片。

更改后的代码如下:

.container {
  width: 80px;
  height: 80px;
  background: url("http://p.qpic.cn/qqconadmin/0/292590fd5c4a4553864f8f56f8d29a92/0");
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
}

通过一段简单的代码,我们就可以愉快的实现这个看起来很麻烦的功能啦~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法原理与实践

tensorflow机器学习模型的跨平台上线

    在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型,但...

872
来自专栏java一日一条

简单好看的Android圆形进度条对话框开源库

本文介绍CircleProgressDialog开源库的使用及实现的详细过程,该开源库主要实现以下几个功能:

532
来自专栏Java成神之路

Android基础_2 Activity线性布局和表格布局

在activity的布局中,线性布局和表格布局是最简单的,这次分别从线性布局,表格布局以及线性布局和表格混合布局做了实验,实验中只需要编写 相应的xml的代码,...

462
来自专栏mySoul

SVG可伸缩的矢量图形

SVG是对画该图形时的一些路径,做出精准的,必要的与分辨率无关的一种描述。即对矢量图的描述

833
来自专栏黑白安全

CSS实现毛玻璃透明效果

其实毛玻璃的模糊效果技术上比较简单,只是用到了css滤镜(filter)中的blur属性。但是要做一个好的毛玻璃效果,需要注意很多细节。

603
来自专栏IMWeb前端团队

Fibonacci Sequences in JavaScript with/without recursive

本文作者:IMWeb link 原文出处:IMWeb社区 未经同意,禁止转载 介绍几种使用javascript实现斐波那契数列的方法。 其中第一种和第...

1715
来自专栏web开发

img标签实现和背景图一样的显示效果——object-fit和object-position

不知大家在做前端页面的时候,有没有遇到类似这样的问题:有一个不是正方形的图片,可能是宽度大于高度的,也可能是高度大于宽度的,而你又并不想用背景图的方式来做,要实...

3506
来自专栏AndroidTv

封装个 Android 的高斯模糊组件基础理论二次封装

最近基于 Android StackBlur 开源库,根据自己碰到的需求场景,封装了个高斯模糊组件,顺便记录一下。

283
来自专栏大数据挖掘DT机器学习

[Python]从豆瓣批量获取看过电影的用户列表,并应用kNN算法预测用户性别

首先从豆瓣电影的“看过这部电影 的豆瓣成员”页面上来获取较为活跃的豆瓣电影用户。 链接分析 这是看过"模仿游戏"的豆瓣成员的网页链接:http://movie...

2854
来自专栏林德熙的博客

win10 uwp 在 Canvas 放一个超过大小的元素会不会被裁剪

我尝试在一个宽度200高度200的 Canvas 放了一个宽度 300 高度 300 的元素,这个元素会不会被 Canvas 裁剪了? 经过我的测试,发现默认是...

481

扫码关注云+社区