如何在不丢失Jssor图像滑块的情况下更改其尺寸'其响应特性、图像纵横比等仅适用于iPhone设备
How to change the dimensions of the Jssor Image Slider without losing it's responsive nature, image aspect ratio, etc. only on iPhone device?
我正在开发的网站本质上是响应性的,即网站设计会根据浏览设备进行调整。我使用了引导框架。
我在我的网站上使用Jssor JQuery图像滑块。它在所有设备和所有流行的知名浏览器上都运行良好,非常适合我。我面临的唯一问题是,当在iPhone上查看时,Jssor滑块中滑动图像的大小应该改为460 px * 280 px
。换句话说,Jssor图像滑块看起来应该比当前大小大一些。但在这样做的同时,滑块中出现的图像的纵横比应该保持不变。
此外,当在iPhone上查看网站时,图像滑块应占据整个水平屏幕。也就是说,图像滑块不应该在滑块周围出现任何空白。目前,两个垂直的空白条出现在滑块的两侧。
最初,当在PC或笔记本电脑上的浏览器上查看网站时,滑块图像的分辨率为940 px * 370 px
,并根据浏览设备的大小进行自动调整。
上述尺寸变化只能发生在iPhone上,而不能发生在任何其他设备上。在其他设备上,它运行得非常好和完美。此外,图像的纵横比在该过程中不应受到干扰。
为了供您参考,我将滑块的HTML代码和jQuery代码放在下面。所有必要的库文件都已包含在内。
HTML代码:
<div id="slider1_container" style="position: relative; top: 0px; left: 0px; width: 940px; height: 370px; overflow: hidden; ">
<div u="loading" style="position: absolute; top: 0px; left: 0px;">
<div style="filter: alpha(opacity=70); opacity:0.7; position: absolute; display: block; background-color: #000000; top: 0px; left: 0px;width: 100%;height:100%;">
</div>
<div style="position: absolute; display: block; background: url(img/loading.gif) no-repeat center center; top: 0px; left: 0px;width: 100%;height:100%;">
</div>
</div>
<div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 940px; height: 370px; overflow: hidden;">
<div>
<img u="image" src="http://smartrebate.eywaharvest.com/images/brands/Bud_Light_Lime_1413041685.jpg" />
<div u=caption t="*" class="captionOrange" style="position:absolute; left:350px; bottom: 40px; width:300px; height:30px;">
slideshow transition twins
</div>
</div>
<div>
<img u="image" src="http://smartrebate.eywaharvest.com/images/brands/Finlandia_1413041875.jpg" />
<div u=caption t="*" class="captionOrange" style="position:absolute; left:350px; bottom: 40px; width:300px; height:30px;">
slideshow transition twins
</div>
</div>
<div>
<img u="image" src="http://smartrebate.eywaharvest.com/images/brands/Three_Olives_1413042332.jpg" />
<div u=caption t="*" class="captionOrange" style="position:absolute;left:350px; bottom: 40px; width:300px; height:30px;">
slideshow transition twins
</div>
</div>
<div>
<img u="image" src="http://smartrebate.eywaharvest.com/images/brands/Avalon_1413041406.jpg" />
<div u=caption t="*" class="captionOrange" style="position:absolute; left:350px; bottom: 40px; width:300px; height:30px;">
slideshow transition twins
</div>
</div>
<div>
<img u="image" src="http://smartrebate.eywaharvest.com/images/brands/Brancott_1413042551.JPG" />
<div u=caption t="*" class="captionOrange" style="position:absolute;left:350px; bottom: 40px; width:300px; height:30px;">
slideshow transition twins
</div>
</div>
</div>
<div u="navigator" class="jssorb05" style="position: absolute; bottom: 16px; right: 6px;">
<div u="prototype" style="POSITION: absolute; WIDTH: 16px; HEIGHT: 16px;"></div>
</div>
<style>
.jssorb05 div, .jssorb05 div:hover, .jssorb05 .av {
background: url(img/b05.png) no-repeat;
overflow: hidden;
cursor: pointer;
}
.jssorb05 div {
background-position: -7px -7px;
}
.jssorb05 div:hover, .jssorb05 .av:hover {
background-position: -37px -7px;
}
.jssorb05 .av {
background-position: -67px -7px;
}
.jssorb05 .dn, .jssorb05 .dn:hover {
background-position: -97px -7px;
}
.jssora12l, .jssora12r, .jssora12ldn, .jssora12rdn {
position: absolute;
cursor: pointer;
display: block;
background: url(img/a12.png) no-repeat;
overflow: hidden;
}
.jssora12l {
background-position: -16px -37px;
}
.jssora12r {
background-position: -75px -37px;
}
.jssora12l:hover {
background-position: -136px -37px;
}
.jssora12r:hover {
background-position: -195px -37px;
}
.jssora12ldn {
background-position: -256px -37px;
}
.jssora12rdn {
background-position: -315px -37px;
}
.captionOrange, .captionBlack {
color: #fff;
font-size: 20px;
line-height: 30px;
text-align: center;
border-radius: 4px;
}
.captionOrange {
background: #EB5100;
background-color: rgba(235, 81, 0, 0.6);
}
.captionBlack {
font-size:16px;
background: #000;
background-color: rgba(0, 0, 0, 0.4);
}
a.captionOrange, A.captionOrange:active, A.captionOrange:visited {
color: #ffffff;
text-decoration: none;
}
a.captionOrange:hover {
color: #eb5100;
text-decoration: underline;
background-color: #eeeeee;
background-color: rgba(238, 238, 238, 0.7);
}
.bricon {
background: url(img/browser-icons.png);
}
</style>
<span u="arrowleft" class="jssora12l" style="width: 30px; height: 46px; top: 123px; left: 0px;"></span>
<span u="arrowright" class="jssora12r" style="width: 30px; height: 46px; top: 123px; right: 0px"></span>
<a style="display: none" href="http://www.jssor.com">javascript</a>
</div>
jQuery代码:
<script>
jQuery(document).ready(function ($) {
var _SlideshowTransitions = [{ $Duration: 1200, $Opacity: 2 }];
var options = {
$AutoPlay: 1,
$AutoPlaySteps: 1,
$Idle: 3000,
$PauseOnHover: 1,
$ArrowKeyNavigation: true,
$SlideDuration: 500,
$MinDragOffsetToSlide: 20,
$SlideSpacing: 0,
$Cols: 1,
$Align: 0,
$UISearchMode: 1,
$PlayOrientation: 1,
$DragOrientation: 3,
$SlideshowOptions: {
$Class: $JssorSlideshowRunner$,
$Transitions: _SlideshowTransitions,
$TransitionsOrder: 1,
$ShowLink: true
},
$BulletNavigatorOptions: {
$Class: $JssorBulletNavigator$,
$ChanceToShow: 2,
$Steps: 1,
$Rows: 1,
$SpacingX: 10,
$SpacingY: 10,
$Orientation: 1
},
$ArrowNavigatorOptions: {
$Class: $JssorArrowNavigator$,
$ChanceToShow: 2,
$Steps: 1
}
};
var jssor_slider1 = new $JssorSlider$("slider1_container", options);
function ScaleSlider() {
var parentWidth = jssor_slider1.$Elmt.parentNode.clientWidth;
if (parentWidth)
jssor_slider1.$ScaleWidth(Math.min(parentWidth, 940));
else
window.setTimeout(ScaleSlider, 30);
}
ScaleSlider();
if (!navigator.userAgent.match(/(iPhone|iPod|iPad|BlackBerry|IEMobile)/)) {
$(window).bind('resize', ScaleSlider);
}
});
</script>
//Your website
jQuery(document).ready(function ($) {
//...
function ScaleSliderDevices() {
var bodyWidth = DEVICE.Screen.width();
if (DEVICE.Screen.osDimVariation()) {
bodyWidth = DEVICE.Screen.width() + osWidthOffset();
}
jssor_slider1.$ScaleWidth(Math.min(bodyWidth, 940));
};
//...
if (DEVICE.mobile())
{
$(window).bind('resize', ScaleSliderDevices);
}
//as the resize event may not fire at the beginning sometimes, please scale slider manually after document load
ScaleSliderDevices();
}
既然您已经在使用引导程序,为什么不使用carousel中内置的引导程序呢?所有响应性工作都是为您完成的。
plnkr演示
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
<li data-target="#carousel-example-generic" data-slide-to="3"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="http://smartrebate.eywaharvest.com/images/brands/Bud_Light_Lime_1413041685.jpg" />
<div class="carousel-caption">
slideshow transition twins
</div>
</div>
<div class="item">
<img src="http://smartrebate.eywaharvest.com/images/brands/Three_Olives_1413042332.jpg" />
<div class="carousel-caption">
slideshow transition twins
</div>
</div>
<div class="item">
<img src="http://smartrebate.eywaharvest.com/images/brands/Avalon_1413041406.jpg" />
<div class="carousel-caption">
slideshow transition twins
</div>
</div>
<div class="item">
<img src="http://smartrebate.eywaharvest.com/images/brands/Brancott_1413042551.JPG" />
<div class="carousel-caption">
slideshow transition twins
</div>
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right"></span>
<span class="sr-only">Next</span>
</a>
</div>
结论:添加了每个设备特定的大小调整请参阅:
-
增加了设备检测https://github.com/matthewhudson/device.js/blob/master/lib/device.jsjs内部的源代码,我做了一些小更新来解决IOS上的宽度和高度问题。
-
添加了Slider Scale以适应身体宽度而不是父宽度,也许您需要计算父宽度和宽度。
//Your website jQuery(document).ready(function ($) { //... function ScaleSliderDevices() { var bodyWidth = DEVICE.Screen.width(); if (DEVICE.Screen.osDimVariation()) { bodyWidth = DEVICE.Screen.width() + osWidthOffset(); } jssor_slider1.$ScaleWidth(Math.min(bodyWidth, 940)); }; //... if (DEVICE.mobile()) { $(window).bind('resize', ScaleSliderDevices); } }
-
为设备添加调整大小事件(主要是漫游)
JSFIDDLE:这个例子不在设备上运行。请使用本地网站中的代码在设备上进行测试。
http://jsfiddle.net/sp75dzaq/13/
你可以在那里找到更多详细信息的评论。
- 由多个图像文件组成的响应地图
- 如何使用更新图像源以响应新闻事件
- 具有javascript document.write的响应图像
- 如何使用 HTML 图像请求将数据发送到服务器,或返回数据作为响应
- 全宽响应式图像重叠引导程序 3.
- 如何从服务器响应中显示phonegap中的图像
- 网格状、多响应图像
- 使图像根据高度和宽度做出响应
- 从ajax响应设置图像内容
- 响应图像tinymce图像链接
- 如何使图像具有响应性
- 使图像对不同部分具有不同链接做出响应
- jQuery Mobile Listview中的响应图像
- 响应式背景图像
- 使用getJSON填充动画响应图像网格
- 使背景图像响应
- 我如何使图像响应,但高度保持不变
- 用Node创建的图像响应GET请求
- 如何在servlet中向ajax发送图像响应
- 全宽度和高度固定幻灯片图像(
)响应和始终居中