2012-11-05 23 views
2

存在的问题为中心:大小调整图像以适合在一个div +保持比+水平和垂直方向+圆角

  1. 大小调整图像以适应在一个div - 解决
  2. 保持比 - 解决
  3. 水平,垂直居中 - 解决
  4. 圆角

    一个)的矩形图像 - 解决

    b)banner images - !!! impossiburu !!!

所以问题是:如何摆脱图像的矩形角?请看看这里,看看问题:>>>http://jsfiddle.net/infoman/5fzET/3/ < < <

换句话说:图像的角落是圆的,但他们不是在div的结束,而是超越它。我需要在div结束的行处对图像进行四舍五入。

HTML

test image ratio w/h = 4 
<div> 
    <img id="myimg" src='http://placehold.it/200x50' draggable="false"/> 
</div> 

<br/> 

test image ratio w/h = 0.25 
<div> 
    <img id="myimg" src='http://placehold.it/50x200' draggable="false"/> 
</div> 

<br/> 

test image ratio w/h = 1 but small 
<div> 
    <img id="myimg" src='http://placehold.it/50x50' draggable="false"/> 
</div> 

<br/> 

test image ratio w/h = 1 perfect fit 
<div> 
    <img id="myimg" src='http://placehold.it/300x300' draggable="false"/> 
</div> 

<br/> 

test image ratio w/h = 1 much too big 
<div> 
    <img id="myimg" src='http://placehold.it/2000x2000' draggable="false"/> 
</div> 

CSS

div { 
    border: solid 1px green; 
    width: 300px; 
    height: 300px; 
    overflow: hidden; 
    border-radius: 10px; 
} 

div img { 
    outline: solid 1px red; 
} 

.fillwidth { 
    width: 100%; 
    height: auto; 
    position: relative; 
    /*top*/ 
} 

.fillheight { 
    height: 100%; 
    width: auto; 
    position: relative; 
    /*left*/ 
} 


.fillfull { 
    height: 300px; 
    width: 300px; 
} 

jQuery的

$('img[id^="myimg"]').each(function() { 
    var imgWidth = $(this).width(), 
     imgHeight = $(this).height(), 
     imgRatio = imgWidth/imgHeight, 
     imgWidthTop = (((300/imgWidth) * imgHeight)/2) * -1 + 300/2, 
     imgHeightLeft = (((300/imgHeight) * imgWidth)/2) * -1 + 300/2; 


    switch (true) { 
    case (imgRatio === 1): 
     $(this).addClass('fillfull'); 
     break; 
    case (imgRatio < 1): 
     $(this).addClass('fillwidth'); 
     $(this).css('top', imgWidthTop); 
     break; 
    case (imgRatio > 1): 
     $(this).addClass('fillheight'); 
     $(this).css('left', imgHeightLeft); 
     break; 
    default: 
     break; 
    } 
});​ 

尝试&失败:

  1. 夹:http://jsfiddle.net/infoman/5fzET/4/
+1

你能更清楚问题是什么? –

+0

我没有看到问题。我也没有看到一个问题。你在问什么? – eh9

+0

border-radius:10px 10px 10px 10px; – Bala

回答

0

尝试:

border-radius: 10px; 
-moz-border-radius: 10px; 
-webkit-border-radius: 10px; 

你可以和它添加到div的图像(S)。

+0

请在这里看看你自己的结果:jsfiddle.net/infoman/5fzET/3横幅图像脱离div的边界 – infoman

+1

这里是他们如何找我:http://grab.by/hhnO ..我认为他们都很好看?你的样子怎么样? – aguynamedloren

+0

我看着它在铬中,虽然它与矩形图像很好地工作,它不适用于横幅。甚至没有-webkit-border-radius:10px;我想这可能是一个错误或一个讨厌的功能 – infoman

0

简单的解决办法:

演示在这里:http://jsfiddle.net/EdHQh/

HTML:

<div class='container'> 
    <img class='resize_fit_center' src='...' /> 
</div> 

CSS:

.container { 
    width: 115px; 
    height: 115px; 
    line-height: 115px; 
    text-align: center; 
    border: 1px solid orange; 
} 
.resize_fit_center { 
    max-width:100%; 
    max-height:100%; 
    vertical-align: middle; 
    border-radius: 20px; 
    -moz-border-radius: 20px; 
    -webkit-border-radius: 20px; 
} 
0

这是一个开始你的答案。下面的代码展示了如何设置图像父元素的类(这是你需要的)。

$('img[id^="myimg"]').each(function() { 
var imgWidth = $(this).width(), 
    imgHeight = $(this).height(), 
    imgRatio = imgWidth/imgHeight, 
    imgWidthTop = (((300/imgWidth) * imgHeight)/2) * -1 + 300/2, 
    imgHeightLeft = (((300/imgHeight) * imgWidth)/2) * -1 + 300/2; 

     // alert(imgRatio); 

switch (true) { 
case (imgRatio < 1.1 && imgRatio > .99): 
    $(this).addClass('fillfull'); 
    break; 
case (imgRatio < 1): 
    $(this).addClass('fillwidth'); 
    $(this).css('top', imgWidthTop); 
    //$(this).css('clip', 'rect(100px 0 100px 0)'); 
    $(this).parent().addClass('bev'); 

    break; 
case (imgRatio > 1): 
    //$(this).css('clip', 'rect(0 100px 0 100px)'); 
    $(this).addClass('fillheight'); 
    $(this).css('left', imgHeightLeft); 
    $(this).parent().addClass('bev'); 

    break; 
default: 
    break; 
} 
}); 

.bev { 
    border: solid 1px green; 
    width: 300px; 
    height: 300px; 
    overflow: hidden; 
    border-radius: 10px; 
    margin-left: 10px; 
    } 

div img { 
    outline: solid 1px red; 
} 

.fillwidth { 
    width: 100%; 
    max-height: 99999px; 
    position: relative; 
    /*top*/ 
} 

.fillheight { 
    height: 100%; 
    max-width: 99999px; 
    position: relative; 
    /*left*/ 
    } 


.fillfull { 
    height: 300px; 
    width: 300px; 
} 

你可以有不同的薮类与斜口不同的充角落或者你可以使用JavaScript来更改样式属性。我希望这可以帮助

+0

在我的例子中图像填充100%的框。他们不适合你的例子。 – infoman

+0

关注此链接??? http://jsfiddle.net/jebr224/buSfD/3/ –

相关问题