javascript-尝试使我的滑块响应.不断为@media查询之间的偏移量增加边距
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-尝试使我的滑块响应.不断为@media查询之间的偏移量增加边距,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4194字,纯文字阅读大概需要6分钟。
内容图文
![javascript-尝试使我的滑块响应.不断为@media查询之间的偏移量增加边距](/upload/InfoBanner/zyjiaocheng/678/263bb03a75dd45f3a5a7db3e50b302f7.jpg)
http://jsfiddle.net/2RE3f/6/embedded/result/
我正在尝试制作一个响应式js滑块,在媒体查询之间进行切换时,似乎无法弄清断点故障.
例如,如果您查看我的jsFiddle,然后将窗口设置为iPad大小(屏幕尺寸为1024px宽),然后拉出为1200px宽,则滑块会中断,并且新的网格尺寸将被应用边距(突出显示)红色),偏移滑块.但是,如果您拉回iPad的尺寸,则它的滑块不会对右边的偏移量应用边距,并且可以正常工作.如果以1200px的宽度加载网格,则滑块会正常工作,但是当您缩小到iPad大小时,滑块会正常工作,当您按下向右箭头时,会在右边添加边距.
由于某些原因,我无法弄清楚其如何以及为何将这种填充的边距添加到网格中.
您必须使用箭头键(向右,在两个网格画廊之间导航). jsFiddle中有更多代码,但不适用于rwd.
这是CSS
@media screen (max-width: 1400px) {
#portfolio img {
height: 400px;
width: 400px;
}
#slider ul li {
width: 1200px;
}
}
@media screen and (max-width: 1030px) {
.uni_con {
width: 1024px
}
.shell {
width: 1024px;
}
.container {
width: 1024px;
}
#portfolio img {
height: 512px;
width: 512px;
}
#slider ul li {
width: 1024px;
}
#slider .caption {
width: 512px;
height: 512px;
}
#slider .caption::before {
width: 514px;
height: 514px;
line-height: 508px;
}
#slider .caption::after {
width: 512px;
}
#slider .caption:hover::before {
width: 512px;
height: 512px;
}
#slider .caption:hover::after {
width: 512px;
}
}
jQuery的
jQuery(function ($) {
var $sl = $('#slider'),
$ul = $('ul', $sl),
$li = $('li', $ul),
slideCount = $li.length,
c = 0, // current
slideWidth = $li.width(),
slideHeight = $li.height(),
sliderUlWidth = slideCount * slideWidth;
$sl.css({
width: slideWidth,
height: slideHeight
});
$ul.css({
width: sliderUlWidth
});
function move() {
if (c == slideCount) {
c = slideCount - 1;
// fade out #next btn
$('#next').stop().fadeTo(200, 0.5);
}
if (c == slideCount - 1) {
$('#next').stop().fadeTo(200, 0.5);
$('#back').fadeTo(200, 1);
} else if (c < 0) {
c = 0;
$('#back').stop().fadeTo(200, 0.5);
} else {
$('#next').fadeTo(200, 1);
$('#back').fadeTo(200, 0.5);
}
$ul.stop().animate({
left: -c * slideWidth
}, 500);
}
$('#back, #next').click(function () {
return move(this.id == 'next' ? c++ : c--);
});
$(document).keydown(function (e) {
var k = e.which;
if (k == 39 || k == 37) {
e.preventDefault();
return move(k == 39 ? c++ : c--);
}
});
});
在第二个LI(使用右键)上,此边距会不断增加,并导致网格无法与容器内联.
谢谢.
解决方法:
似乎是我找到了解决方案.之所以在右侧看到奇怪的红色边距,是因为您正在使用JavaScript代码控制ul滑块元素的宽度和高度.在调整窗口大小或更改屏幕分辨率时,媒体查询正在更改其他元素的大小,但是此值(边宽和高)保持不变.
我添加了代码来处理此问题,并带有注释,这是jSFiddle:
http://jsfiddle.net/2RE3f/12/embedded/result/
这是更新的JS代码:
$(document).ready(function(e) {
jQuery(function ($) {
var $sl = $('#slider'),
$ul = $('ul', $sl),
$li = $('li', $ul),
slideCount = $li.length,
c = 0; // current
var slideWidth; // global so can be used in move()
// wrap the slider width and height settings in a function
function slider_fit()
{
slideWidth = $li.width(),
slideHeight = $li.height(),
sliderUlWidth = slideCount * slideWidth;
$ul.css({
width: sliderUlWidth
});
$sl.css({
width: slideWidth,
height: slideHeight
});
}
slider_fit(); // call slider_fit on window load also
// below is the function to make sure window resizing has been done
$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
this.resizeTO = setTimeout(function() {
$(this).trigger('resizeEnd');
}, 250);
});
// once window is resized and media queries (if any) have been applied
// we can fit our slider elements to this new size
$(window).bind('resizeEnd', function() {
slider_fit(); // fit slider widths and heights due to screen size change
move(); // make adjustments to the left margins of ul
});
function move() {
//alert(slideWidth);
if (c == slideCount) {
c = slideCount - 1;
// fade out #next btn
$('#next').stop().fadeTo(200, 0.5);
}
if (c == slideCount - 1) {
$('#next').stop().fadeTo(200, 0.5);
$('#back').fadeTo(200, 1);
} else if (c < 0) {
c = 0;
$('#back').stop().fadeTo(200, 0.5);
} else {
$('#next').fadeTo(200, 1);
$('#back').fadeTo(200, 0.5);
}
$ul.stop().animate({
left: -c * slideWidth
}, 500);
}
$('#back, #next').click(function () {
return move(this.id == 'next' ? c++ : c--);
});
$(document).keydown(function (e) {
var k = e.which;
if (k == 39 || k == 37) {
e.preventDefault();
return move(k == 39 ? c++ : c--);
}
});
});
});
我希望这有帮助 :)
内容总结
以上是互联网集市为您收集整理的javascript-尝试使我的滑块响应.不断为@media查询之间的偏移量增加边距全部内容,希望文章能够帮你解决javascript-尝试使我的滑块响应.不断为@media查询之间的偏移量增加边距所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。