【发布时间】:2011-08-30 08:52:43
【问题描述】:
我有一个布局,其中图像“浮动”在某个区域内。布局如下所示:
来源如下:
<div class="free_tile">
<a class="img_container canonical" href="/photos/10">
<img class="canonical" src="http://s3.amazonaws.com/t4e-development/photos/1/10/andrew_burleson_10_tile.jpg?1303238025" alt="Andrew_burleson_10_tile">
<!-- EDIT: I am aware that I can put the badge here. See the edit notes and image below. -->
</a>
<div class="location">Houston</div>
<div class="taxonomy"> T6 | Conduit | Infrastructure </div>
</div>
CSS 看起来像这样(在 SCSS 中):
div.free_tile { width: 176px; height: 206px; float: left; margin: 0 20px 20px 0; position: relative;
&.last { margin: 0 0 20px 0; }
a.img_container { display: block; width: 176px; height: 158px; text-align: center; line-height: 156px; margin-bottom: 10px; }
img { margin: 0; border: 1px solid $dark3; display: inline-block; vertical-align: middle; @include boxShadow;
&.canonical { border: 1px solid $transect; }
}
.location, .taxonomy { width: 176px; }
.location { font-weight: 700; }
.taxonomy { line-height: 10px; font-size: 10px; text-transform: uppercase; height: 20px; overflow: hidden; }
}
div.transect_badge { height: 20px; width: 20px; background: url('/images/transect-badge.png'); }
因此,基本上图像位于垂直对齐的中间和文本对齐的中心,它们的最大宽度为 176,最大高度为 158,但它们被裁剪以保持原始纵横比,因此实际的顶角每张图片的落差会有所不同,具体取决于它是哪张图片。
我有一个徽章,我想把它放在某些图片的顶角(当图片是“规范”时)。您会看到上面的样式 (div.transect_badge)。
当然,问题是我不知道图像的上角在哪里,所以我无法通过 CSS 硬编码位置。
我假设我需要通过 jQuery 或其他方式来执行此操作。因此,我开始使用 jQuery 方法来自动将徽章 div 附加到任何规范图像。这很好用,但我不知道如何将它放在左上角。
如何做到这一点? (理想情况下只使用 HTML 和 CSS,但实际上使用 JS/jQuery)
--编辑--
问题是:图像漂浮在容器内,因此图像的角可能落在容器外部范围内的任何位置。下面是一个例子,如果我尝试在图像绑定的同一个容器内使用 position:absolute; top:0; left:0 会发生什么:
【问题讨论】:
-
如果您使用
relative或absolute定位,CSS 知道左上角。虽然您仍然需要使用 jQuery 插入徽章标记。 -
Jason - 由于图像标签不能包含其他元素,因此绝对位置对我有什么帮助?图像所在的锚标记比图像大——所以当我用 CSS 定位绝对位置时,我得到的标记位于外部边界框的左上角,而不是图像。
-
锚点内的 badge 元素是可以接受的。但是,如果您的风格无法做到这一点,那就不用担心了。这就是为什么我没有回答,只是确保您考虑了 CSS 定位。我就是这样做的。
标签: javascript jquery html css position