- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
借助从 SO 获得的代码,我制作了一个后期轮播,它大部分都能正常工作,但我在调整窗口大小方面遇到了问题。
一切都在这里
https://github.com/dingo-d/Post-Excerpt-Carousel
如果您在某个窗口宽度上重新加载它,它工作正常,但如果您只是调整窗口大小,导航将停止正常工作。
现在,当你在第一个帖子时,你不能转到上一个(轮播不会移动),当你在最后一个时,轮播也不会前进。但如果你调整大小,他们会。使这项工作的 jquery 代码是这样的
jQuery(document).ready(function ($) {
'use strict';
$(window).on('load', function () {
$('.post_excerpt_carousel').each(function(){
var $this = $(this);
post_excerpt_positioning($this);
});
});
$(window).on('resize', function(){
$('.post_excerpt_carousel').each(function(){
var $this = $(this);
if ($(window).width()>760) {
$(this).find('li').css('width', '570px');
}
post_excerpt_positioning($this);
});
});
function post_excerpt_positioning(e){
var $carousel = e;
var outer_width = $(window).outerWidth();
var container_width;
if (outer_width > 1190) {
container_width = 1170;
}
if (outer_width > 960 && outer_width < 1190) {
container_width = 960;
}
if (outer_width < 960) {
container_width = parseInt((9/10)*outer_width,10);
}
var $prev = $carousel.find('.carousel_prev');
var $next = $carousel.find('.carousel_next');
var duration = $carousel.data('duration');
var li_number = $carousel.find('li').length;
var $ul = $carousel.find('ul');
var $li = $ul.find('li');
if (outer_width < 760){
$li.css('width', container_width);
$li.eq(1).addClass('active');
if ($li.eq(2).hasClass('active')) {
$li.eq(2).removeClass('active');
}
} else if (outer_width > 760){
$li.eq(1).addClass('active');
$li.eq(2).addClass('active');
}
var list_width = $carousel.find('li').outerWidth(true);
var left_offset;
if ($('.boxed_body_wrapper').length) {
left_offset = list_width-60;
} else{
left_offset = parseInt(list_width - (outer_width - container_width-42)/2, 10);
}
$ul.css({'display': 'inline-block', 'width': li_number * $carousel.find('li').outerWidth(true) + 'px', 'left': -left_offset + 'px'});
var not_active_no = $carousel.find('li').not('.first').not('.last').not('.active').length;
var not_active_width = not_active_no * $carousel.find('li').outerWidth(true);
$carousel.on('click', '.carousel_next', function (e) {
e.preventDefault();
var $li = $ul.find('li');
var $a = $('.active', $carousel);
if (!$a.next().hasClass('last') && !$ul.is(':animated')) {
$a.removeClass('active').next().addClass('active');
}
if (parseInt($ul.css('left'), 10) != -parseInt(not_active_width + left_offset, 10) && !$ul.is(':animated')) {
$ul.animate({
left: parseInt($ul.css('left'), 10) - $ul.find('li').outerWidth(true),
}, duration);
}
});
$carousel.on('click', '.carousel_prev', function (e) {
e.preventDefault();
var $li = $ul.find('li');
var $a = $('.active', $carousel);
if (!$a.prev().hasClass('first') && !$ul.is(':animated')) {
$a.removeClass('active').prev().addClass('active');
}
if (parseInt($ul.css('left'), 10) !== -parseInt(left_offset, 10) && !$ul.is(':animated')) {
$ul.animate({
left: parseInt($ul.css('left'), 10) + $ul.find('li').outerWidth(true),
}, duration);
}
});
}
});
主要问题是,当您调整大小时,您显然会更改偏移量,并且会出现动画。第二个问题是我正在调用的函数中有 on.('click')
事件,我认为这不是正确的编码方式,所以对此有任何帮助会有帮助。
Codepen 展示它在这里:http://codepen.io/dingo_d/pen/doNyMw
最佳答案
好吧,我放弃了这个函数,因为这个函数和里面的 on click
事件委托(delegate)不是一个好主意。我还简化了它检查最后一篇和第一篇文章的方式。
var $carousel = $('.post_excerpt_carousel');
$carousel.each(function(){
var $this = $(this);
var outer_width = $(window).outerWidth();
var container_width;
if (outer_width > 1145) {
container_width = 1170;
}
if (outer_width > 960 && outer_width < 1145) {
container_width = 960;
}
if (outer_width < 960) {
container_width = parseInt((9/10)*outer_width,10);
}
var duration = $this.data('duration');
var li_number = $this.find('li').length;
var $ul = $this.find('ul');
var $li = $ul.find('li');
$li.removeClass('active');
if (outer_width < 760){
$li.css('width', container_width);
$li.eq(1).addClass('active');
if ($li.eq(2).hasClass('active')) {
$li.eq(2).removeClass('active');
}
} else if (outer_width > 760){
$li.eq(1).addClass('active');
$li.eq(2).addClass('active');
}
var list_width = $this.find('li').outerWidth(true);
var left_offset;
left_offset = parseInt(list_width - (outer_width - container_width-42)/2, 10);
$ul.css({'display': 'inline-block', 'width': li_number * $this.find('li').outerWidth(true) + 'px', 'left': -left_offset + 'px'});
var not_active_no = $this.find('li').not('.first').not('.last').not('.active').length;
var not_active_width = not_active_no * $this.find('li').outerWidth(true);
$this.on('click', '.carousel_next', function (e) {
e.preventDefault();
if($this.find('li.last').prev().hasClass('active')){
return;
} else {
var $a = $('.active', $this);
if (!$a.next().hasClass('last') && !$ul.is(':animated')) {
$a.removeClass('active').next().addClass('active');
}
if (!$ul.is(':animated')) {
$ul.animate({
left: parseInt($ul.css('left'), 10) - $ul.find('li').outerWidth(true),
}, duration);
}
}
});
$this.on('click', '.carousel_prev', function (e) {
e.preventDefault();
if($this.find('li.first').next().hasClass('active')){
return;
} else {
var $a = $('.active', $this);
if (!$a.prev().hasClass('first') && !$ul.is(':animated')) {
$a.removeClass('active').prev().addClass('active');
}
if (!$ul.is(':animated')) {
$ul.animate({
left: parseInt($ul.css('left'), 10) + $ul.find('li').outerWidth(true),
}, duration);
}
}
});
});
现在可以正常工作了:)
关于javascript - 调整大小时 jQuery 轮播导航中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121285/
我在我的应用程序中使用开源 iCarousel 来实现轮播控件。我使用的轮播类型是 iCarouselTypeRotary 并且图像在这种类型中线性排列。但是,我需要图像像所附图像中的旋转木马一样带来
有人看过像这样的 jQuery 3D 轮播教程吗? http://web.enavu.com/demos/3dcarouselwip/ 没有给出来源,但想知道是否有人有关于如何连续圈出 DIV 并调整
我正在开发一种使用相机自动拍摄照片的软件。我希望用户能够设置照片间隔。我希望它看起来和工作起来像某种轮播。 它应该是这样的: 当我滑动(或用鼠标拖动)时,它应该沿给定方向移动: 所选项目应始终位于中间
抱歉问了个愚蠢的问题。我正在寻找带有按钮的旋转木马。我在 Bootply 上找到了这个模板,它完全符合我的要求。我在开发方面还很陌生。 也许有人可以向我解释如何摆脱侧面滚动效果。我知道我必须向 Jav
我正在寻找一个可以处理表单元素的 jQuery 轮播风格插件。 这是我需要做的。 我有三个表单元素:两个常规文本框和一个文本区域。还有两个按钮,上一个和下一个。 单击下一步按钮时,文本框/文本区域会切
我想构建一个包含两个图像轮播的网页,并且我希望能够将图像从一个轮播拖动到另一个。 我已经有了与 jCarouselLite 一起使用的图像轮播:它使用两个 UL 元素来指定轮播的图像。这工作得很好。
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我有这段代码可以从数据库中获取轮播图片或视频 $stmt = $con->prepare("SELECT * FROM `Main`"); $stmt->execut
我需要做这个 slider ,我找到了一些代码并尝试了,但没有一个完全是 LIKE THIS .bloco03 img {
我的任务是制作 3 张图片的轮播/幻灯片,只能在移动设备上使用。在桌面上,这些图像将显示在 3 列中。有没有一种方法可以自动转换,而无需我创建两个不同的模块并根据屏幕尺寸隐藏/显示一个? 最佳答案 你
我需要在卡片轮播上创建这种效果。我使用 Owl Carousel ,我给了元素框阴影。但我坚持制作不同位置元素的效果,例如 3d 或任何名称。 这是我想做的 http://www.awesomescr
我已经盯着这段相同的代码看了大约 4 个小时,并尝试观看一些不同的教程。问题是 slider 加载,有 3 张幻灯片的空间,但它只显示第一张幻灯片。 所有图像加载良好(在浏览器中验证),但轮播不会更改
我的 carouse/slider 有问题,我已经做到了,上一张和下一张图片每边各占 25%,中央图片占 50% 宽度。问题是我能够更改左右图像的背景,但我似乎无法将相同的颜色应用于中间图像。我已经尝
我想一次放 5 张图片作为页面的背景,即一张图片会显示一小段时间(比如每张一秒钟),然后重复它们。 我想知道有没有办法用 CSS 或 JS 来做到这一点? 预先感谢您的帮助! 最佳答案 这也许就是您正
我正在寻找一个支持触摸、可拖动、响应式 jQuery 滚动条/幻灯片/轮播/ slider ,用于显示水平可滚动项目列表(例如, eshop、最近将照片添加到数据库等)。 它看起来类似于苹果应用程序商
我想要夹层画廊的 Bootstrap 轮播。基本上;我正在拉入所有图像,并且我想要单行三张图像轮播。这是我非常讨厌的一段工作代码;我真的很想让它适用于无限数量的图像。 {% if page.d
大家好,我有这段代码,我一直在为我的网站编写代码。我正在尝试实现一个轮播功能,其中一张图片在另一张图片之后滑动。我遇到的问题是图片不会滑动。这是我的代码在欢迎 Controller 的索引页面中的样子
我正在构建一个简单的轮播,一旦用户水平滚动,事件点就会改变事件状态。但是,当我滚动时,jQuery 左侧位置返回值没有改变: li_left = li.position().left; // this
我正在尝试将文本放在轮播 slider 中的图像下方,但现在文本出现在图像上,而不是下方。 它看起来像这样: 但我希望它看起来像这样: 这是我的代码: final CarouselSlider aut
我在使用 boostrap carousel 时遇到 CSS 问题 我只是想让它更高,我已经尝试了几个 css 但没有任何效果。代码是在这个 jsFiddle 中,http://jsfiddle.ne
我是一名优秀的程序员,十分优秀!