找回密码
 注册
首页 ≡≡网络技术≡≡ WEB前端 css如何将一张图片截取为一个自适应正方形? ...

css如何将一张图片截取为一个自适应正方形?

灰儿 2017-10-7 17:44:16
因为父级div是个固定的正方形,图片可能是竖着,也可能是横着,想让这些图片都显示成正方形,大小刚好是父级的大小,但是不能改变图片的比例。
原来的做法是只给width:100%;这样对横着的图片是可以了,但是竖着的图片下半截是空白的。
如果改成width:100%;height:100%;又会改变图片的比例。
现在想到的做法是给图片加onload,加载完成后判断它是横着还是竖着来给width:100%;或者height:100%;
但是觉得样式还是应该用css,有能做这个的样式吗?

使用css3 的 background-size: cover; 或者就只能用js了


做背景图片吧,如果不需要支持IE老版本的话,可以使用background-size属性cover进行设置。

.your-div {
    width: 100px;     // 你要的正方形
    height: 100px;    // 你要的正方形
    background-image: url(/your/image/path.jpg);
    background-position: center center;    // 居中
    background-size: cover;                // 填满div
    background-repeat: no-repeat;
}


另一种方法:
<div class="imgbox">
    <img src="img.img">
</div>
<style type="text/css">
.imgbox{
width: 200px;
height: 0;
padding-bottom: 200px;
overflow: hidden;
}


.imgbox img {
width:200px;
min-height: 200px;
}
</style>

灰儿 楼主 2017-10-7 17:47:15
像微信朋友圈一样,添加图片的时候,等比例正方形显示在列表中,如何让图片根据宽高来自适应显示在页面上呢?示例如下:

  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3.     <head>  
  4.         <meta charset="utf-8">  
  5.         <meta name="viewport" content="width=device-width,user-scalable=no,target-densitydpi=device-dpi" />  
  6.         <style type="text/css">
  7.                         .figure-list{
  8.                           margin: 0;
  9.                           padding: 0;
  10.                         }
  11.                         .figure-list:after{
  12.                           content: "";
  13.                           display: block;
  14.                           clear: both;
  15.                           height: 0;
  16.                           overflow: hidden;
  17.                           visibility: hidden;
  18.                         }
  19.                         .figure-list li{
  20.                           list-style: none;
  21.                           float: left;
  22.                           width: 23.5%;
  23.                           margin: 0 2% 2% 0;
  24.                         }
  25.                         .figure-list figure{
  26.                                 border: 1px solid #000;
  27.                           position: relative;
  28.                           width: 100%;
  29.                           height: 0;
  30.                           overflow: hidden;
  31.                           margin: 0;
  32.                           padding-bottom: 100%; /* 关键就在这里 */
  33.                           background-position: center;
  34.                           background-repeat: no-repeat;
  35.                           background-size: cover;
  36.                         }
  37.                         .figure-list figure a{
  38.                           display: block;
  39.                           position: absolute;
  40.                           width: 100%;
  41.                           top: 0;
  42.                           bottom: 0;
  43.                         }
  44. </style>
  45. <ul class="figure-list">
  46.   <li>
  47.     <figure style="background-image:url(1.png)">
  48.       <a href="#"></a>
  49.     </figure>
  50.   </li>
  51.   <li>
  52.     <figure style="background-image:url(2.png)">
  53.       <a href="#"></a>
  54.     </figure>
  55.   </li>
  56.    <li>
  57.     <figure style="background-image:url(3.png)">
  58.       <a href="#"></a>
  59.     </figure>
  60.   </li>
  61.   <li>
  62.     <figure style="background-image:url(4.png)">
  63.       <a href="#"></a>
  64.     </figure>
  65.   </li>

  66.    <li>
  67.     <figure style="background-image:url(5.png)">
  68.       <a href="#"></a>
  69.     </figure>
  70.   </li>
  71.   <li>
  72.     <figure style="background-image:url(6.png)">
  73.       <a href="#"></a>
  74.     </figure>
  75.   </li>
  76. </ul>
  77. </html>  
复制代码

从例子里发现元素的 padding 的百分比数值是根据当前元素的宽度来计算的,于是可以利用这个特性来做一些特殊布局。正方形只是矩形的特殊形式,所以需要一定宽高比例的矩形也可以用这个方法。
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。