查找图像's通过Javascript添加CSS类后的宽度
Finding an Image's Width After Adding a CSS Class via Javascript
我有一个脚本设置,可以检测图像是纵向还是横向。在这种情况下,图像是横向的。我想做的是使用绝对定位裁剪和居中图像,将高度设置为100%,并根据图像宽度的一半为其留出负边距。
我能够做到以上几点,但我遇到的问题是:我使用的图像都有不同的宽度/高度,因为每个图像都是从API(在本例中是Spotify API)调用的。话虽如此,我不得不使用一些Javascript来找到它们的正确宽度。它只是这样做,但只是在我添加类landscape
之前,所以实际上它在被调整大小以适应250px x 250px #container
div之前,使用该类的css来划分图像宽度。
我希望它使用landscape
类的属性在调整图像大小后,在之后划分图像的宽度。
HTML
<div id="container">
<img src="https://i.scdn.co/image/9c4880556288e2f4d098a104f5125e477611be32" >
</div>
CSS
#container {height: 250px; width: 250px; overflow: hidden; position: relative;}
.landscape {position: absolute; height: 100%; left: 50%;}
.portrait {width: 100%;}
JS
$(function() {
var $img = $('img'),
$imgHeight = $img.height(),
$imgWidth = $img.width();
if ($imgWidth > $imgHeight) {
$img
.addClass('landscape')
.css({
marginLeft: '-' + $imgWidth / 2 + 'px',
});
} else {
$img.addClass('portrait');
}
});
您应该在应用类之后重新蚀刻宽度。在您的示例中,在实际应用类之前,您使用了中的缓存宽度。工作代码:
$(function() {
var $img = $('img'),
$imgHeight = $img.height(),
$imgWidth = $img.width();
if ($imgWidth > $imgHeight) {
$img
.addClass('landscape')
.css({
marginLeft: '-' + $img.width() / 2 + 'px',
})
} else {
$img.addClass('portrait');
}
});
http://jsfiddle.net/d3u9tc0g/
您不需要使用保存在$imgWidth
中的值,而是需要在添加类后重新计算它。
$img
.addClass('landscape')
.css({
marginLeft: '-' + $img.width() / 2 + 'px',
});
相关文章:
- jquery css添加IE8过滤器
- 如何将 CSS 添加到 CKEDITOR
- 将 JavaScript 和 CSS 添加到页脚
- 如何将动画 css 添加到引导下拉列表
- 将 css 添加到 jquery 子元素
- 如何使用jquery或javascript将css添加到伪元素
- 将悬停CSS添加到用javascript处理的表单元格中
- jQuery - 将 css 添加到 localStorage 变量
- 将内联 CSS 添加到 Timnymce 中的 body
- 通过JavaScript CSS添加元素后,hack不起作用
- 将 CSS 添加到文档加载后创建的元素
- 如何使用 JS 或 CSS 添加透明度层
- 使用 jQuery 将 CSS 添加到正文中的 head 标签
- 将 CSS 添加到 Javascript 小部件
- jQuery没有't将CSS添加到附加的输入中
- 将自定义CSS添加到使用Web视图呈现的HTML页面中
- 如何将css添加到json响应中
- 将css添加到已经存储在变量中的jQuery对象的伪元素中
- 将css添加到html中表的动态添加行中
- 为什么jQuery(document).ready不工作?/如何将CSS添加到jQuery中的元素中