0

我想为图像设置一个盒子阴影插图。这对于图像是不可能的,所以我搜索了解决方法,发现这是其中之一:JsFiddle

问题是跨度对图像有很好的包裹,但是如果图像的样式包括边距或填充,那么跨度不适合图像,如您在示例中所见。

那么我该怎么做才能使跨度始终包裹图像而没有边距的空白呢?如果有更好的方法,请告诉我。

CSS

.image-wrap {
    position: relative;
    display: inline-block;
    max-width: 100%;
    vertical-align: bottom;
}
.image-wrap:after {
    content: ' ';
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    left: 0px;
        box-shadow: inset 0px 0px 0px 5px red;
}

.image-wrap img {   
    width:300px;
    margin-left:150px;
}

jQuery

$('img').each(function() {
    var imgClass = $(this).attr('class');
    $(this).wrap('<span class="image-wrap ' + imgClass + '" style="width: auto; height: auto;"/>');
    $(this).removeAttr('class');
});
4

2 回答 2

2

在这种特定情况下有效的一种方法是手动将margin-leftimg 移动到父跨度:

$('img').each(function () {
    var imgClass = $(this).attr('class');
    $(this).wrap('<span class="image-wrap ' + imgClass + '" style="width: auto; height: auto;"/>').removeClass(imgClass)
        .parent().css('margin-left',$(this).css('margin-left')).end()
        .css('margin-left',0);
});
于 2013-03-28T14:41:14.630 回答
2

LIVE DEMO

$('img').each(function() {
    $(this).wrap('<span class="image-wrap ' + this.className + '"/>').removeAttr('style');
    this.className='';
});

CSS:

.img1{
  width:300px;
  border:3px solid #f00;
  margin-left:40px;       /* NOTE THE IMAGE MARGIN ! */
}

.image-wrap{
  position:relative;
  display:inline-block;
  box-shadow: inset 0px 0px 20px #f00;
}

.image-wrap img{
   position:relative;
   width:100%;
   z-index:-1;
}
于 2013-03-28T15:04:11.357 回答