网页中如何使用 css + js 实现图片居中裁剪成正方形,并且不变形?
实现思路是先获取图片的宽高,比较一下大小然后设置图片的宽或者高为 100% 高或者宽为 auto;然后设置图片父元素为 flex 布局,其子元素(图片)上下左右居中即可。
详细代码如下:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>图片自动截取中间正方形显示</title> <!--适应移动端--> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--css样式--> <style> body { background-color: #000; color: #fff; } </style> </head> <body> <div style="width: 100px;height: 100px;overflow:hidden;display: flex;justify-content: center; align-items: center;"> <img src="https://www.a4z.cn/img/a4p.jpg" id="img" style="flex: none;" /> </div> <span id="console"></span> <script type="text/javascript"> var $img = document.querySelector('#img'); getRealImageSize($img.src, function(width, height) { if (width > height) { $img.style.height = '100%'; $img.style.width = 'auto'; } else { $img.style.width = '100%'; $img.style.height = 'auto'; } }); function getRealImageSize(url, callback) { var img = new Image(); img.src = url; // 如果图片被缓存,则直接返回缓存数据 if (img.complete) { callback(img.width, img.height); } else { // 完全加载完毕的事件 img.onload = function() { callback(img.width, img.height); } } } </script> </body> </html>