gpt4 book ai didi

javascript - 如何使用jquery根据屏幕尺寸生成动态CSS

转载 作者:行者123 更新时间:2023-11-30 19:19:48 24 4
gpt4 key购买 nike

我正在尝试使用 jquery 设置响应式 background-position。如果设备是移动设备(屏幕大小),则它必须加载 ggowlData.backgroundposition_sm 但代码无法检测到屏幕。当我在 chrome 中更改窗口大小时,该值会固定在大设备位置。

HTML


<section class="ggowl-background-wrapper" 
data-ggowl="{&quot;backgroundimage&quot;:&quot;http:\/\/dev.geekygreenowl.online\/wp-content\/uploads\/2019\/08\/aperture-science-wallpaper.jpg&quot;,&quot;backgroundimagehover&quot;:&quot;http:\/\/dev.geekygreenowl.online\/wp-content\/uploads\/2019\/08\/aperture-science-wallpaper.jpg&quot;,&quot;backgroundposition&quot;:&quot;bottom right&quot;}"
data-id="5df0d84" data-element_type="section"
data-settings="{&quot;background_background&quot;:&quot;classic&quot;}"
style="background-image: url(&quot;http://dev.geekygreenowl.online/wp-content/uploads/2019/08/aperture-science-wallpaper.jpg&quot;); background-position: right bottom;">
<div class="elementor-container elementor-column-gap-default">
<div class="elementor-row">
<div class="elementor-element elementor-element-4aede67 elementor-column elementor-col-100 elementor-top-column" data-id="4aede67" data-element_type="column">
<div class="elementor-column-wrap">
<div class="elementor-widget-wrap">
</div>
</div>
</div>
</div>
</div>
</section>

脚本

jQuery(document).ready(function($) {

var ggowlIsBreakPoint = function (bp) {
sm = parseInt(ggowlDataLoder.sm); //460 - loaded from database
md = parseInt(ggowlDataLoder.md); //720 - loaded from database
lg = parseInt(ggowlDataLoder.lg); //1120 - loaded from database
var bps = [sm, md, lg],
w = $(window).width(),
min, max
for (var i = 0, l = bps.length; i < l; i++) {
if (bps[i] === bp) {
min = bps[i-1] || 0
max = bps[i]
break
}
}
return w > min && w <= max
}

$('.ggowl-background-wrapper').each(function(){
var ggowlData = jQuery.parseJSON( $(this).attr('data-ggowl'));
$(this).css('background-image', 'url(' + ggowlData.backgroundimage + ')'); // working fine - Tested

if(ggowlIsBreakPoint(ggowlDataLoder.sm)){
alert("Small");
$(this).css('background-position', ggowlData.backgroundposition_sm);
}else if(ggowlIsBreakPoint(ggowlDataLoder.md)){
alert("medium");
$(this).css('background-position', ggowlData.backgroundposition_md);
}else {
alert("Large");
$(this).css('background-position', ggowlData.backgroundposition_lg); //this is only getting loaded
}
});
});

最佳答案

将检查窗口宽度的部分包装在一个函数中,并为窗口设置一个调整大小的监听器。

例如:jsFiddle

function adjustSize() {
$('.ggowl-background-wrapper').each(function(){
var ggowlData = jQuery.parseJSON( $(this).attr('data-ggowl'));
$(this).css('background-image', 'url(' + ggowlData.backgroundimage + ')'); // working fine - Tested

if(ggowlIsBreakPoint(ggowlDataLoder.sm)){
console.log("Small");
$(this).css('background-position', ggowlData.backgroundposition_sm);
}else if(ggowlIsBreakPoint(ggowlDataLoder.md)){
console.log("medium");
$(this).css('background-position', ggowlData.backgroundposition_md);
}else {
console.log("Large");
$(this).css('background-position', ggowlData.backgroundposition_lg); //this is only getting loaded
}
});
}

//add the event listener to get the window width
//everytime the window is being resized
$(window).on('resize', adjustSize);
//Execute once inside the load listener
adjustSize();

关于javascript - 如何使用jquery根据屏幕尺寸生成动态CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57603686/

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