gpt4 book ai didi

javascript - 使用 Jquery 有条件地向图像添加类

转载 作者:行者123 更新时间:2023-11-30 14:21:35 25 4
gpt4 key购买 nike

我是 javascript 的新手,非常感谢对此的帮助。

我想根据尺寸对特定 div 中的图像进行分类。

对于肖像图像,我想给它一个类肖像,对于 ladscape 类风景图像和正方形图像。我通过将宽度除以高度来做到这一点,如果该值等于 1,我将此图像归类为正方形,如果大于 1 个风景,如果小于 1 个肖像。

我这样做是为了在具有不同宽高比的不同 css 样式的 div 中提供图像。

我不想对所有图像执行此操作,而是对特定 div 中的图像执行此操作。在我的 div 类“detailsection”和 div 类“imagesection”的示例中

我无法让代码正常工作。我在指定特定的 div 和图像时遇到困难。

感谢所有帮助。

$(window).on('load', function() {
$('.imagesection > img').each(function() {
if ($(this).width() / $(this).height() > 1) {
$(this).addClass('landscape');
} else if ($(this).width() / $(this).height() >= 1) {
$(this).addClass('square');
} else {
$(this).addClass('portrait');
}
});
});

$(window).on('load', function() {
$('.detailsection > img').each(function() {
if ($(this).width() / $(this).height() > 1) {
$(this).addClass('landscape');
} else if ($(this).width() / $(this).height() >= 1) {
$(this).addClass('square');
} else {
$(this).addClass('portrait');
}
});
});
.imagesection {
max-width: 1000px;
margin: 0 auto;
}

.imagesection img {
overflow: hidden;
}

.imagesection img.landscape {
max-width: 1000px;
width: 70%;
height: auto;
margin: 5% 15%;
}

.imagesection img.portrait {
width: 40%;
margin: 0 auto;
float: left;
}

.detailsection {
max-width: 1000px;
margin: 0 auto;
}

.detailsection img {
overflow: hidden;
}

.detailsection img.landscape {
max-width: 1000px;
width: 70%;
height: auto;
margin: 5% 15%;
}

.detailsection img.portrait {
width: 40%;
margin: 0 auto;
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class="detailsection">
<!--Detail Title Image-->
<div class="titlepg">
<img src="https://via.placeholder.com/1000x1000" alt="" class="titlepg">
</div>
<!--Detail Title Image-->

<!--Detail Spec Image-->
<div class="specpg">
<img src="https://via.placeholder.com/1000x1000" alt="" class="specpg">
</div>
<!--Detail Spec Image-->

<!--Detail Option Image-->
<div class="optionpg">
<img src="https://via.placeholder.com/1000x1000" alt="" class="optionpg">
</div>
<!--Detail Option Image-->

<!--Detail Detail Image pg-->
<div class="detailimagepg">
<img src="https://via.placeholder.com/1000x500" />
<img src="https://via.placeholder.com/500x1000" />
<img src="https://via.placeholder.com/500x1000" />
</div>
<!--Detail Detail Image pg-->

</div>

<div class="imagesection">
<img src="https://via.placeholder.com/1000x500" />
<img src="https://via.placeholder.com/500x1000" />
<img src="https://via.placeholder.com/500x1000" />
</div>

最佳答案

我建议您应该创建一个函数并为每个所需图像调用它:

function applyImageClass(image) {
var h = (image) ? image.height() : 0;
if (h > 0) {
var ratio = image.width() / h;
if (ratio === 1) {
image.addClass('square');
} else if (ratio > 1) {
image.addClass('landscape');
} else if (ratio < 1) {
image.addClass('portrait');
}
}
}

$(window).on('load', function() {
// Find all images contained in any element that has any of the tow classes
$('.imagesection, .detailsection').find('img').each(function() {
// Call the function for each one of the matched elements
applyImageClass($(this));
});
});

关于javascript - 使用 Jquery 有条件地向图像添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52661576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com