疆飞
.NET永远年轻,永远热泪盈眶...
展开边栏 收起边栏
图片拉伸,不想裁剪,你可以这样子做
1.先给你的图片外面加一个DIV,设置好想要的高宽,例如我们想要的图片宽度为 240px,高度为183px,那么写法如下:
<div style="width: 240px; height: 183px; overflow: hidden"> <!--div设置好需要的高宽-->
<img src="img.jpg">
</div>
<script>
//列表图按比例片无拉伸处理
$('div').each(function (){
var img = $(this).find('img'); //获取图片
var i_w = $(this).width(); //获取需要的图片宽度
var i_h = $(this).height(); //获取需要的图片高度
var b = i_w/i_h; //计算需要的图片高宽比(宽度/高度)
var w = img.width(); //获取图片原始宽度
var h = img.height(); //获取图片原始高度
var vs = w/h; //计算图片比例
if (vs < b){ //计算图片高宽比,如果高宽比比较高
img.css({width:i_w+'px'}); //设置图片宽度为目标宽度
var h = (img.height() - i_h) / 2; //计算图片减去目标高度后剩余高度除以2
img.css({marginTop:'-'+h+'px'}); //向上移动,保持图片垂直剧中
}else{ //计算图片高宽比,如果高宽比比较宽
img.css({height:i_h +'px'}); //设置图片高度为目标高度
var w = (img.width() - i_w) / 2; //计算图片减去目标宽度后剩余宽度除以2
img.css({marginLeft:'-'+w+'px'}); //向左移动,保持图片左右剧中
}
});
</script>
按照上面的做法,你只要给图片外面的DIV设置好想要的图片高宽即可,然后图片会根据你设置好的尺寸进行上下或左右剧中,这个取决于你的图片实际尺寸了。例如你的图片实际高度大于你设置的高宽比,它会以你想要的宽度展示,而高出的部分会自动居中显示,而宽度高出你想要的高宽比,则会按照你想要的高度进行显示,宽出来的部分则会自动居中显示。这样免去了自动裁剪的流程,在前端就可以直接实现你想要的效果。但是图片如果特别特别大的话,原则上是会影响访问速递,但是通常来说可以正常上传到服务器上的图片也不会很大,这个取决于你自己服务器或网站的设置了。
如果你还有更好的方法的话欢迎留言讨论!
最终效果:
补充:
还有一个单纯用css实现的方法,但是IE是不支持的!
img{ width: 240px; height: 183px; object-fit:cover ;}
只需要这么一句就OK了!下面是 object-fit 属性的一些演示效果:
完!
文章搜索
联系疆飞
- QQ932557101
- emailmail@jiangfei.net
- weibo@疆飞 (@jiangfei1006)
- twitter@疆飞 (@jiangfei1006)
PS:没事不要瞎联系,除非你想请我吃饭...
热门标签更多
Copyright © 2008-. JiangFei.net all rights reserved 苏ICP备18062911号