- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发非常简单的 jQuery Slider。
如果我有超过 2 个 LI 元素,幻灯片效果会很流畅。但是对于 2 个 LI 元素(当前代码),通过单击下一个它会显示 SCSS 效果,但是在单击上一个链接时幻灯片效果完美。任何线索或解决方案将不胜感激。提前致谢。
最佳答案
好的,已编辑。
正如我在评论中指出的那样,问题是当您单击下一步时,没有要切换到的第一个元素,因此它切换到一个空白元素,然后附加第一个元素。
详细解释:
其实很简单。您的脚本有 3 张“事件”幻灯片。当前、下一个和上一个。
如果你只有 2 张幻灯片,那么你没有下一张幻灯片(由于你使用的排序方法),所以你没有切换到下一张幻灯片,而是切换到一个空白区域,然后将第二张幻灯片放在它的位置上(第二张幻灯片在动画结束后出现,因此它“闪烁”)。
现在“补丁”做了什么。基本上,一旦您在没有补丁的情况下尝试您的代码并从 slider 换行中删除“margin-left: -500px”,您就会理解它,但无论如何我都会解释它。
让我们假设您有一个只有 2 个值的基本数组,而不是列表。您有 2 个选项:Next 将索引增加 1,而 Previous 将索引减少 1。您的初始幻灯片的索引为 0,因此如果您增加索引,您将转到索引 1,如果您减少它,您将获得索引 -1,这会导致一张空白幻灯片导致闪烁,如果您删除来自 <ul>
的 'margin-left'元素。
如果你添加 'margin-left' 它会进入反转模式(下一个闪烁,但前一个不闪烁)。
补丁的作用是检测异常是否有效,并打开/关闭 margin-left
值(value)。
不幸的是,当您这样做时,幻灯片也会切换顺序,因此需要额外的附加内容才能使事情井井有条。如果您删除 IF 中的额外附加内容,您会注意到此事件。
补丁值执行以下操作:
0 - 无需打补丁。
1 - 下一个功能需要在下次使用前修复。
2 - prev 函数需要在下次使用前修复。
IF 负责修复。
可以通过在开头添加一个虚拟元素来修复它,方法是放置以下代码:
if($('.slider ul').length<3){
$('.slider ul li:first-child').clone().appendTo('.slider ul');
}
点击下一个或上一个时结束然后删除它。
EDIT2:一个更加优雅和完整的解决方案!版本 2.0
将 next AND prev 函数编辑为:
var patched = 0;
if($('.slider ul li').length==2){
patched = 1;
}
var sliderWrap = $('.slider ul'),
slideElem = $('.slider ul li'),
slideCount = slideElem.length,
slideWidth = $('.slider ul li').width(),
slideHeight = $('.slider ul li').height(),
sliderUlWidth = slideCount * slideWidth;
$('.slider').css({ width: slideWidth, height: slideHeight });
$('.slider ul').css({ width: sliderUlWidth, marginLeft: - slideWidth });
$('.slider ul li:last-child').prependTo('.slider ul');
var previous = function() {
if(patched==2){
sliderWrap.css('margin-left','-500px');
$('.slider ul li:last-child').prependTo('.slider ul');
patched=1;
}
sliderWrap.animate({
left: + slideWidth
}, 200, function () {
$('.slider ul li:last-child').prependTo('.slider ul');
sliderWrap.css('left', '');
});
};
var next = function() {
if(patched==1){
sliderWrap.css('margin-left','0px');
$('.slider ul li:first-child').appendTo('.slider ul');
patched=2;
}
sliderWrap.animate({
left: - slideWidth
}, 200, function () {
$('.slider ul li:first-child').appendTo('.slider ul');
sliderWrap.css('left', '');
});
};
试试新的:http://jsbin.com/pexigesu/32/edit
编辑:要仅用 1 个 slider 覆盖外壳,请将开头更改为:
if($('.slider ul li').length==2){
patched = 1;
}else if($('.slider ul li').length==1){
$('.slider ul li:last-child').clone().prependTo('.slider ul');
$('.slider ul li:last-child').clone().prependTo('.slider ul');
}
它只是将第一个元素克隆两次,因为它几乎是同一个元素,所以不需要控制。 JSbin example
关于javascript - jQuery slider 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701508/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!