css实现图片自适应容器的几种方式

css实现图片自适应容器

经常有这样一个场景,需要让图片自适应容器的大小。

1、img标签的方式

我们马上就能想到,把width、height 设置为100%啊。来看一哈效果。


<div class=‘div1‘>
    <img src="./peiqi.png" >
</div>
.div1 {
    width:500px;
    height:400px;
    border:1px solid black;
}
.div1 img  {
    /*
    width: 100%;
    height:100%;
    */
}

这是正常的佩琪(如果图片比容器大的话,图片会超出容器)


.div1 {
    width:500px;
    height:400px;
    border:1px solid black;
}
.div1 img  {
    width: 100%;
    height:100%;
}

这是100%的佩琪

虽然符合了自适应的要求,但是如图所见图片失真了。这种图片比容器小的情况强行将图片自适应的话图片就失真。如果说是单个图片(logo、占位图、等)按设计稿开发就可以了。但经常会遇到接口获取的不规则图片的情况,一般这种时候会将小于容器的话将其水平、垂直居中。
整理一下任务:

图片宽高都小于容器时垂直、水平居中
图片宽高都大于容器时保持宽高比将width或height充满容器

   <div class=‘div1‘>
        <img src="./peiqi.png" >
    </div>
    <div class=‘div1‘>
        <img src="./peiqi2.png" >
    </div>
    <div class=‘div1‘>
        <img src="./peiqi4.jpeg" >
    </div>
.div1 {
        width:500px;
        height:400px;
        border:1px solid black;
        display: table-cell;
        vertical-align: middle;
    }
    .div1 img  {
        max-width: 100%;
        max-height: 100%;
        display: block;
        margin: auto;
    }

max-height 这个属性会阻止 height 属性的设置值变得比 max-height 更大。
max-height 属性用来设置给定元素的最大高度. 如果height 属性设置的高度比该属性设置的高度还大,则height 属性会失效.

2、背景图的方式

.div {
        background-size: contain;
 }

background-size: contain; 把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。利用css的 background-size: contain; 属性就能进一步优化图片的宽高都小于容器的情况了。

上代码:

  div {
        height: 400px;
        width: 500px;
        border: 1px solid black;
        background-repeat: no-repeat;
        background-size: contain;
        background-position: center;
    }
    .div1 {
        background-image: url(./peiqi1.png);
    }
    .div2 {
        background-image: url(./peiqi2.png);
    }
    .div3 {
        background-image: url(./peiqi4.jpeg);
    }
<div class=‘div1‘></div>
<div class=‘div2‘></div>
<div class=‘div3‘></div>

当然最后还得看需求,产品是咋要求的。

无论是在学习web前端开发,还是已经工作的,这里推荐一下我们的前端学习交流群:784783012 ,这里是把梦想照亮的地方,同为了生活而拼搏奋斗,大家互相帮助。新手加入即可获得经过整理的最前沿的前端技术资料,不定时更新技术,与企业需求同步。好友都在里面交流,欢迎加入

点击:加入

原文地址:https://blog.51cto.com/14227711/2364985

时间: 2024-10-10 06:34:03

css实现图片自适应容器的几种方式的相关文章

CSS 图片自适应容器

https://www.jb51.net/css/660677.html 经常有这样一个场景,需要让图片自适应容器的大小. 1.img标签的方式 我们马上就能想到,把width.height 设置为100%啊.来看一哈效果. ? 1 2 3 <div class='div1'>     <img src="./peiqi.png" alt=""> </div> ? 1 2 3 4 5 6 7 8 9 10 11 .div1 {  

转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关于AS3加载图片等外部资源,我常用的有两种方式:Loader和Embed,各自的特点,总结如下: Embed:在Flash编译阶段就将资源嵌入,也就是说图片资源是会被编译进swf文件里面去的:这样子的好处是代码比较简洁,使用方便,也不存在加载顺序的问题,缺点是会增大swf文件的体积 Loader:在

android/IOS常用图片上传的两种方式

android/IOS常用图片上传的两种方式: 1.上传到服务器的文件服务器(FileServer) 原理:上传到文件服务器的方式是先在服务器端搭建文件服务器,配置好路径(url),该路径是我们待会上传图片的路径,配置成功后便通过http+post的模式上传到文件服务器,同时文件服务器将返回一个图片ID,这个ID就是图片的唯一标识,并将该ID写入数据库保存,当需要下载该图片时只需要将此ID带上即可. 两个核心问题: (1)服务端:配置FileServer,并写处理响应上传图片的代码,这个值得去网

css 两列自适应布局的4种思路

前面的话 前面已经介绍过css 两列布局中单列定宽单列自适应布局的6种思路的两列布局,而两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式.本文将从float.table.flex和grid来介绍两列自适应布局的4种思路 float [思路一]float 在单列定宽单列自适应的两列布局中,经常用float和负margin配合实现布局效果.但由于margin取值只能是固定值,所以在两列都是自适应的布局中就不再适用.而float和overflow配合可实现两列自适应效果.使用overfl

JavaWeb图片上传的几种方式

一.图片上传介绍 JavaWeb方向编程过程中,实现图片上传有三种方式: 1.传统的基于springMVC的MultipartFile类实现图片上传. 2.基于Ajax的图片上传. 3.基于Base64压缩的图片上传. 二.springMVC图片上传(springboot通用) 此方法的优点是可以将图片和其他的表单元素一起提交到服务器,服务器接受到的图片其实已经存储于容器的临时文件中,进行文件拷贝工作比较简单. 缺点是无法及时看到图片上传的预览效果,图片一旦选择错误只能重新提交. 注:红色代码为

部署webapp到web容器的三种方式(这里的web容器Tomcat)

*******************************这是看传智播客的学习视频学到的*********************************** 0.首先看看我们的例子** 1.第一种方式: 直接将项目放到webapps目录下即可.   * /hello:项目的访问路径-->虚拟目录 * 简化部署:将项目打成一个war包,再将war包放置到webapps目录下. * war包会自动解压缩 1.1直接把webapp的文件夹复制 1.2把webapp的war包放下面 1.3运行结果

css 背景图片自适应元素大小

一.一种比较土的方法,<img>置于底层. 方法如下: CSS代码: img{ position:absolute; z-index:-10;width:50%;} HTML: <img src="背景图片路径" /> <span>字在背景上</span> 此时,背景可以自动伸缩,不过底层图片和上面的字是无关联的,想要在屏幕变化的情况下保持二者对应关系不变,需要用百分比表示间距和尺寸.    这种方法可以实现,但是个人感觉不太规范,但当时

使用CSS为图片添加边框的几种方法

css的应用十分广泛,即便用在图片的效果中也是方法多样,本文下面就介绍五种为图片添加特殊效果边框的CSS写法阴影效果 通过使用带有一些padding之的背景图来添加阴影效果. HTML <img class=”shadow” src=”sample.jpg” alt=”" /> CSS img.shadow { background: url(shadow-1000×1000.gif) no-repeat right bottom; padding: 5px 10px 10px 5p

CSS实现图片自适应背景大小

<body> <div> <!--背景图片--> <div id="web_bg" style="background-image: url(./img/bg.jpg);"></div> <!--其他代码 ... --> </div> </body> 以上是需求代码 以下是实现css样式代码 #web_bg{ position:fixed; top: 0; left: 0