2014-10-16 53 views
0

新版本的Jssor不会出现此问题。Jssor silder图像在safari中丢失质量


Demo

 jQuery(document).ready(function ($) { 
 
      var options = { 
 
       $AutoPlay: true, 
 

 
       $PauseOnHover: true, //[Optional] Whether to pause when mouse over if a slideshow is auto playing, default value is false 
 

 
       $ArrowKeyNavigation: true, //Allows arrow key to navigate or not 
 
       $SlideWidth: 141, //[Optional] Width of every slide in pixels, the default is width of 'slides' container 
 
       $SlideHeight: 200, //[Optional] Height of every slide in pixels, the default is width of 'slides' container 
 
       $SlideSpacing: 25, //Space between each slide in pixels 
 
       $DisplayPieces: 3, //Number of pieces to display (the slideshow would be disabled if the value is set to greater than 1), the default value is 1 
 
       $ParkingPosition: 0, //The offset position to park slide (this options applys only when slideshow disabled). 
 

 
       $ArrowNavigatorOptions: { //[Optional] Options to specify and enable arrow navigator or not 
 
        $Class: $JssorArrowNavigator$, //[Requried] Class to create arrow navigator instance 
 
        $ChanceToShow: 2, //[Required] 0 Never, 1 Mouse Over, 2 Always 
 
        $AutoCenter: 2, //[Optional] Auto center arrows in parent container, 0 No, 1 Horizontal, 2 Vertical, 3 Both, default value is 0 
 
        $Steps: 1 //[Optional] Steps to go for each navigation request, default value is 1 
 
       } 
 
      }; 
 

 
      var jssor_slider1 = new $JssorSlider$("slider1_container", options); 
 

 
      //responsive code begin 
 
      //you can remove responsive code if you don't want the slider scales while window resizes 
 
      function ScaleSlider() { 
 
       var parentWidth = jssor_slider1.$Elmt.parentNode.clientWidth; 
 
       if (parentWidth) jssor_slider1.$ScaleWidth(Math.min(parentWidth, 800)); 
 
       else window.setTimeout(ScaleSlider, 30); 
 
      } 
 

 
      ScaleSlider(); 
 

 
      if (!navigator.userAgent.match(/(iPhone|iPod|iPad|BlackBerry|IEMobile)/)) { 
 
       $(window).bind('resize', ScaleSlider); 
 
      } 
 
      //if (navigator.userAgent.match(/(iPhone|iPod|iPad)/)) { 
 
      // $(window).bind("orientationchange", ScaleSlider); 
 
      //} 
 
      //responsive code end 
 

 
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
<script src="http://www.jssor.com/js/jssor.slider.js"></script> 
 
<script src="http://www.jssor.com/js/jssor.js"></script> 
 
<div id="slider1_container" style="position: relative; top: 0px; left:0 px; width: 420px; 
 
     height: 245px;"> 
 
    <div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 420px; height: 245px; 
 
      overflow: hidden;"> 
 
     <div> 
 
      <img u="image" src="http://www.jssor.com/img/landscape/02.jpg" class="tissue_image" /> 
 
     </div> 
 
     <div> 
 
      <img u="image" src="http://www.jssor.com/img/landscape/03.jpg" class="tissue_image" /> 
 
     </div> 
 
     <div> 
 
      <img u="image" src="http://www.jssor.com/img/landscape/04.jpg" class="tissue_image" /> 
 
     </div> 
 
     <div> 
 
      <img u="image" src="http://www.jssor.com/img/landscape/05.jpg" class="tissue_image" /> 
 
     </div> 
 
    </div> 
 
</div>

在演示中,图像输在Safari质量,但它在其他浏览器确定。

如何通过程序解决这个问题?

有一些相关的问题,即手动更改原始图像大小以适应容器,但由于某种原因,我不能手动更改大小,它必须通过程序。

我认为它需要修改关于如何生成滑块图像的“jssor.slider.js”或“jssor.slider.js”,但我不知道它是否是正确的方法。

任何知道“jssor滑块”的人会帮助我吗?谢谢!!!

回答

2

我也遇到过Safari和JSSOR的问题。对于指定的图像尺寸,Safari对于其他主流浏览器似乎忽略它的实际图像尺寸非常挑剔,以支持响应代码。标准演示中使用的图像(以及您的代码示例,除非您更改了它们)为600x300px,但您为滑块容器和幻灯片本身指定420x245。将这两个值更改为您正在使用的图像的实际大小,Safari将正常工作。

1

您是否有Retina显示屏?

Safari将图像大小调整为显示的幻灯片大小,但严重不足以使它们看起来模糊不清。更等Retina显示屏,因为他们是在为72dpi,而不是144

的解决方案是在JSSOR禁用硬件加速,详见this post

尝试添加以下内容到JSSOR选项:

$HWA: false 
1

我注意到你制作的原始滑块的大小为'width:420px; height:245px;'。请增大原始尺寸。

您知道,当您制作较小的滑块并将其缩放到较大尺寸时,它可能看起来模糊不清。但是,如果您制作大滑块并将其缩放到较小尺寸,则不会失去质量(在Safari中)。