2017-04-05 184 views
0

你好,我想用这个slider但我有一个问题。根据屏幕尺寸使用不同的js规则

我的目标是展示从我8个图像名.web类图像时,我的屏幕有一个768px最小宽度和从我8个图像只显示.phone类图像时,我的屏幕上有一个MAX-宽度:768px。

所以当我们看到4张图片时,我们会回到第一张。

随着我的CSS技术我可以看到白色背景从图像5到8的而不是看到背景图像1到4


          
  
@media only screen and (min-width: 768px) { 
 
li.web { display: block; } 
 
li.phone { display: none; } 
 
} 
 

 
@media only screen and (max-width: 768px) { 
 
li.web { display: none; } 
 
li.phone { display: block; } 
 
}
<ul id="cbp-bislideshow" class="cbp-bislideshow"> 
 
    <li class="web"> <img src="https://placehold.it/250x250" alt="image01" /></li> 
 
    <li class="web"> <img src="https://placehold.it/250x250" alt="image02" /></li> 
 
    <li class="web"> <img src="https://placehold.it/250x250" alt="image03" /></li> 
 
    <li class="web"> <img src="https://placehold.it/250x250" alt="image04" /></li> 
 
    <li class="phone"><img src="https://placehold.it/150x150" alt="image05" /></li> 
 
    <li class="phone"><img src="https://placehold.it/150x150" alt="image06" /></li> 
 
    <li class="phone"><img src="https://placehold.it/150x150" alt="image07" /></li> 
 
    <li class="phone"><img src="https://placehold.it/150x150" alt="image08" /></li> 
 
</ul>

感谢

UPDATES

修改我HTML ,JS & CSS的一部分,但它并不适用于工作,这是我的修改:

CSS

/* Slider */ 

.cbp-bislideshow.web, 
.cbp-bislideshow.phone 
{ list-style: none; width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: -1; padding: 0; margin: 0; } 

.cbp-bislideshow.web li, 
.cbp-bislideshow.phone li 
{ position: absolute; width: 101%; height: 101%; top: -0.5%; left: -0.5%; opacity: 0; -webkit-transition: opacity 1s; -moz-transition: opacity 1s; transition: opacity 1s; } 


.backgroundsize .cbp-bislideshow.web li, 
.backgroundsize .cbp-bislideshow.phone li 
{ -webkit-background-size: cover; -moz-background-size: cover; background-size: cover; background-position: center center; } 

.backgroundsize.cbp-bislideshow.web li img, 
.backgroundsize.cbp-bislideshow.phone li img, 
{ display: block; } 

.cbp-bislideshow.web li img, 
.cbp-bislideshow.phone li img 
{ display: none; width: 100%; } 

.no-js.no-backgroundsize .cbp-bislideshow.web li:first-child, 
.no-js.no-backgroundsize .cbp-bislideshow.phone li:first-child 
{ opacity: 1; } 

.no-js.backgroundsize .cbp-bislideshow.web li:first-child img, 
.no-js.backgroundsize .cbp-bislideshow.phone li:first-child img 
{ display: block; } 

@media only screen and (min-width: 768px) { .cbp-bislideshow.web { display:block; } .cbp-bislideshow.phone { display:none; } } 

@media only screen and (max-width: 768px) { .cbp-bislideshow.web { display:none; } .cbp-bislideshow.phone { display:block; } } 

JS

var cbpBGSlideshow=(function(){var l=$("#cbp-bislideshow-web, #cbp-bislideshow-phone"),g=l.children("li"),n=g.length,f=$("#cbp-bicontrols"),c={$navPrev:f.find("span.cbp-biprev"),$navNext:f.find("span.cbp-binext"),$navPlayPause:f.find("span.cbp-bipause")},h=0,e,k=true,b=3500;function m(o){l.imagesLoaded(function(){if(Modernizr.backgroundsize){g.each(function(){var p=$(this);p.css("background-image","url("+p.find("img").attr("src")+")")})}else{l.find("img").show()}g.eq(h).css("opacity",1);j();a()})}function j(){c.$navPlayPause.on("click",function(){var o=$(this);if(o.hasClass("cbp-biplay")){o.removeClass("cbp-biplay").addClass("cbp-bipause");a()}else{o.removeClass("cbp-bipause").addClass("cbp-biplay");i()}});c.$navPrev.on("click",function(){d("prev");if(k){a()}});c.$navNext.on("click",function(){d("next");if(k){a()}})}function d(q){var p=g.eq(h);if(q==="next"){h=h<n-1?++h:0}else{if(q==="prev"){h=h>0?--h:n-1}}var o=g.eq(h);p.css("opacity",0);o.css("opacity",1)}function a(){k=true;clearTimeout(e);e=setTimeout(function(){d("next");a()},b)}function i(){k=false;clearTimeout(e)}return{init:m}})(); 

HTML

<div class="container"> 


<div class="main"> 
<ul id="cbp-bislideshow-web" class="cbp-bislideshow web"> 
<li><img src="index/img/1.jpg" alt="image01"/></li> 
<li><img src="index/img/2.jpg" alt="image02"/></li> 
<li><img src="index/img/3.jpg" alt="image03"/></li> 
<li><img src="index/img/4.jpg" alt="image04"/></li> 
</ul> 

<ul id="cbp-bislideshow-phone" class="cbp-bislideshow phone"> 
<li><img src="index/img/5.jpg" alt="image05"/></li> 
<li><img src="index/img/6.jpg" alt="image06"/></li> 
<li><img src="index/img/7.jpg" alt="image07"/></li> 
<li><img src="index/img/8.jpg" alt="image08"/></li> 
</ul> 

<div id="cbp-bicontrols" class="cbp-bicontrols"> 
<span class="cbp-binext"></span> 
</div> 

</div> 



</div> 

<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 

<script src="index/js/jquery.imagesloaded.min.js"></script> 

<script src="index/js/cbpBGSlideshow.min.js"></script> 

<script>$(function() { cbpBGSlideshow.init(); });</script> 
+0

有UL上的CSS?显示任何不应该留下空白。我的猜测是幻灯片正在计算所有图像加载时的宽度。您可能需要在更改它时执行重新计算。不知道更多细节,不可能真正帮助你。 – epascarello

+1

构建两个完全分离的滑块,并隐藏一个或另一个,而不是隐藏单个图像。 – Blazemonger

+0

我试图复制滑块并一个一个隐藏,但没有运气,也许我做错了? –

回答

1

好最滑块呈现其上加载内容和鸵鸟政策更改之后。所以当你用css隐藏它们时,你将不会有4个图像的滑块。

我建议2个滑块。一个电话,一个用于网络:

<ul id="cbp-bislideshow-web" class="cbp-bislideshow web"> 
<li> <img src="index/img/1.jpg" alt="image01"/></li> 
<li> <img src="index/img/2.jpg" alt="image02"/></li> 
<li> <img src="index/img/3.jpg" alt="image03"/></li> 
<li> <img src="index/img/4.jpg" alt="image04"/></li> 
</ul> 

<ul id="cbp-bislideshow-phone" class="cbp-bislideshow phone"> 
<li> <img src="index/img/1.jpg" alt="image01"/></li> 
<li> <img src="index/img/2.jpg" alt="image02"/></li> 
<li> <img src="index/img/3.jpg" alt="image03"/></li> 
<li> <img src="index/img/4.jpg" alt="image04"/></li> 
</ul> 

@media only screen and (min-width: 768px) { 
.cbp-bislideshow.web { display:block; } 
.cbp-bislideshow.phone { display:none; } 
} 


@media only screen and (max-width: 768px) { 
.cbp-bislideshow.web { display:none; } 
.cbp-bislideshow.phone { display:block; } 
} 

编辑: 您的插件未通过滑块元素 (L循环= $( “#CBP-bislideshow的Web,#CBP-bislideshow电话”)= 2种元素) (l.imagesLoaded(函数(){=函数initalize一个滑块) 和仅创建一个滑块

我认为有两种解决办法: 1.更改用于在一个多滑块滑块代码页面 2.寻找另一个支持多页滑块的滑块

0

尝试建立两个不同的滑块代替:

@media only screen and (min-width: 768px) { 
 
.web { display:block; } 
 
.phone { display:none; } 
 
} 
 

 

 
@media only screen and (max-width: 768px) { 
 
.web { display:none; } 
 
.phone { display:block; } 
 
}
<ul id="cbp-bislideshow-web" class="cbp-bislideshow web"> 
 
<li class=""> <img src="index/img/1.jpg" alt="image01"/></li> 
 
<li class=""> <img src="index/img/2.jpg" alt="image02"/></li> 
 
<li class=""> <img src="index/img/3.jpg" alt="image03"/></li> 
 
<li class=""> <img src="index/img/4.jpg" alt="image04"/></li> 
 
</ul> 
 

 
<ul id="cbp-bislideshow-phone" class="cbp-bislideshow phone"> 
 
<li class=""><img src="index/img/5.jpg" alt="image05"/></li> 
 
<li class=""><img src="index/img/6.jpg" alt="image06"/></li> 
 
<li class=""><img src="index/img/7.jpg" alt="image07"/></li> 
 
<li class=""><img src="index/img/8.jpg" alt="image08"/></li> 
 
</ul>

+0

@Blazemonger我做到了,但它不适合我,你能否在最后看到我的更新问题,并告诉我,如果我做错了 –

+0

真正的问题是我们没有插件代码,所以我们可以'当你调用它时,解决了什么问题。 – Blazemonger

+0

你想要什么,一个链接到页面,一个jsfiddle或者我可以复制所有的代码,如果你想要的?我更新我的问题,并添加滑块的所有html,css&jscode,希望它可以帮助,并可能是从这一行中得到的问题因为我们更改了滑块@Blazemonger的ID和Class –