css让图片按最大长或宽等比例缩放

div容器大小固定,内部的图像是用户上传的,大小不定。要求:如果图像比容器小,则放大,否则缩小。无论放大还是缩小,都以最大长或宽为限。最终显示如图所示。... div容器大小固定,内部的图像是用户上传的,大小不定。要求:如果图像比容器小,则放大,否则缩小。无论放大还是缩小,都以最大长或宽为限。最终显示如图所示。 展开
 我来答
白脸老道
2017-05-15 · TA获得超过190个赞
知道答主
回答量:47
采纳率:66%
帮助的人:22.6万
展开全部

有几个方法,各有优劣 你自己斟酌,部分也说不细需要你自己百度具体做法:

  1. 定死宽高中的一个,另一个未定死的数值就会按比例来,如果多了overflow切掉,好处是容易操作,兼容性好,坏处很多,图片内容不能全部展示、可能切掉希望展示的内容只适用于很少情况。

  2. 设为背景图使用css3的background-size配合background-position来解决,contain和cover两个值效果不错,基本能解决你想要的所有效果,缺点是不兼容低版本浏览器、需要通过内联css样式解决、不是img标签浏览器搜索引擎不友好、不符合HTML语义化标准。

  3. 使用css3的flex定位,网上有具体的操作,一时说不明白都是用得到的时候自己去搜。好处是完全语义化符合标准,基本能解决你的问题,缺点是,学习成本高,兼容性稍差,有些手机上表现有问题。

  4. js方案,都js了自己写就是了。缺点是需要用js,写不好会有bug,相对麻烦一些,加载时候页面可能会有抖动。

  5. 服务器方案,客户上传的图片到服务器走一圈,做成自己希望的大小,而且有一个服务器插件不仅可以截取到目的大小而且还能针对图片内容截取(例如尽可能保留人物面部、智能判断页面重点),这个试过效果很不错,不过具体哪个插件不记得了,估计搜也能搜到。优点是比较智能自己设置好了几乎完美,几乎不再需要麻烦的css,页面也相对比较规整,缺点是需要服务器端支持。

  6. 如果可以比拘泥于容器,让容器兼容图片,网上有很多的gallery插件,类似谷歌图片,摆布也不错,优点是不用考录图片和div的问题了,缺点是需要从新设计及相关技术....

网海1书生
科技发烧友

2017-05-15 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26231

向TA提问 私信TA
展开全部
把图片设为div的背景图片就能轻松实现:
<div style="width:300px; height:200px; background:url(images/cbd.jpg) no-repeat center / contain"></div>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式