使用jquery从右向左滑动内容

2024-04-17

当您按下“下一步”按钮时,视口会更改内容(两个)并进行转换。

我想要的是,我想滑动内容。正如您在演示中看到的那样,使用translateX(-200px)能给我渴望的效果。但它开始于0px并前往-200px。我希望每个 div 从红色条带(右)开始并以黑色条带(左)结束。

简而言之,我想通过此设置将内容从右向左滑动。

注意:尝试删除,

item.css({

    "transform": "translateX(-200px)",

    "transition":"all 1.0s ease"
    })

这部分它将按预期工作而不会滑动。我只是想实现滑动。

demo : https://plnkr.co/edit/YylT0p7GGl44WRiMoOGj?p=preview https://plnkr.co/edit/YylT0p7GGl44WRiMoOGj?p=preview

<!DOCTYPE html>
<html>
<body>

 <div class="viewport">
     <div class="slider">
       <div class="slide">one</div>
       <div class="slide">two</div>
       <div class="slide">three</div>
       <div class="slide">four</div>
       <div class="slide">five</div>
       <div class="slide">six</div>
     </div>
 </div>

<div class="next">Next</div>
<script>
var items=$('.viewport .slider div');
total=items.length;

index=0;


$('.next').click(function () {
index+=1;
cycle()
});

 function cycle() {
item = $('.viewport .slider div').slice(index, index + 1);
items.hide();
item.show();


item.css({

"transform": "translateX(-200px)",

"transition":"all 1.0s ease"
})

}
</script>
</body>
</html>

你可以创建一个容器div在视口内div包含项目。要移动物品,只需移动容器即可div.

var viewCont = $('.viewCont');
var slider = viewCont.find('.slider');
var items = slider.find('.slide');
var firstItem = items.first();
var itemWidth = firstItem.width();
var fullWidth = items.length * itemWidth;
var itemsPerPageInput = $('#itemsPerPage');
var itemsPerPage;
var viewWidth;
var maxLeft;
var dotsCont = $('#navLinks ul');
var dotAmount;
var selectedDotClass = 'selectedDot';

function setItemsPerPage(newItemsPerPage) {
  itemsPerPage = newItemsPerPage;
  viewWidth = itemWidth * itemsPerPage;
  maxLeft = -fullWidth + (itemWidth * itemsPerPage);
  viewCont.width(viewWidth + 'px');
  dynamicUL(dotsCont);
}

function setItemsPerPageFromScreenWidth() {
  var screenRanges = [{
    min: 1024,
    items: 3
  }, {
    min: 768,
    max: 1024,
    items: 2
  }, {
    max: 768,
    items: 1
  }];
  for (var i = 0; i < screenRanges.length; i++) {
    var screenRange = screenRanges[i];
    if ((typeof screenRange.min === 'number' && Math.min(screen.width, screenRange.min) != screenRange.min) || (typeof screenRange.max === 'number' && Math.max(screen.width, screenRange.max) != screenRange.max)) {
      continue;
    }
    itemsPerPageInput.val(screenRange.items);
    return setItemsPerPage(screenRange.items);
  }
}

function boundRightIncrement(left, newLeft) {
  return left > maxLeft && left - viewWidth < maxLeft ? maxLeft : newLeft;
}

function boundLeftIncrement(left, newLeft) {
  return left < 0 && left + viewWidth > 0 ? 0 : newLeft
}

function boundRightSet(left, newLeft) {
  return left >= maxLeft && newLeft <= maxLeft ? maxLeft : newLeft;
}

function updateLeft() {
  var left = parseInt(slider.css('left'));
  var newLeft = left < maxLeft ? maxLeft : (left > 0 ? 0 : left);
  if (typeof newLeft === 'number') {
    newLeft = checkDot(newLeft);
    animateLeft(newLeft);
  }
}

function checkDot(newLeft) {
  $('.navSlide').removeClass(selectedDotClass);
  var nearLeft;
  var nearDistance;
  var nearDot;
  for (var i = 0; i < dotAmount; i ++) {
    var dotLink = (itemsPerPage * i);
    var dotLeft = getDotLeft(dotLink);
    if (newLeft != dotLeft) {
      var distance = Math.abs(newLeft - dotLeft);
      if(typeof nearDistance !== 'number' || distance < nearDistance) {
        nearLeft = dotLeft;
        nearDistance = distance;
        nearDot = dotLink;
      }
      continue;
    }
    $('.navSlide#itemLinks' + dotLink).addClass(selectedDotClass);
    return newLeft;
  }
  $('.navSlide#itemLinks' + nearDot).addClass(selectedDotClass);
  return nearLeft;
}

function animateLeft(newLeft, callback) {
  slider.animate({
    left: newLeft + 'px'
  }, 1000, callback);
}

function dynamicUL(ul) {
  var lihtml = '';
  ul.html('');
  dotAmount = items.length / itemsPerPage;
  for (i = 0; i < dotAmount; i ++) {
    var dotLink = (itemsPerPage * i);
    var classAppend = getDotLeft(dotLink) == parseInt(slider.css('left')) ? ' ' + selectedDotClass : '';
    lihtml += "<li id='itemLinks" + dotLink + "' class='navSlide" + classAppend + "' data-link='" + dotLink + "'></li>";
  }
  ul.append(lihtml);
  bindClickEvents();
}

function bindClickEvents() {
  var navSlide = $(".navSlide");
  navSlide.click(function(e) {
    navSlide.removeClass(selectedDotClass);
    var dotLink = $(e.target).addClass(selectedDotClass).data().link;
    animateLeft(getDotLeft(dotLink));
  })
}

function getDotLeft(dotLink) {
  var newLeft = -(dotLink * itemWidth);
  return boundRightSet(parseInt(slider.css('left')), newLeft);
}

$(function() {
  slider.width(fullWidth);
  itemsPerPageInput.attr('max', items.length);
  setItemsPerPageFromScreenWidth();

  $('.next').click(function() {
    var left = parseInt(slider.css('left'));
    var newLeft = left <= maxLeft ? '0' : parseInt(slider.css('left')) - viewWidth;
    newLeft = boundRightIncrement(left, newLeft);
    newLeft = checkDot(newLeft);
    animateLeft(newLeft);
  });
  $('.prev').click(function() {
    var left = parseInt(slider.css('left'));
    var newLeft = left >= 0 ? maxLeft : parseInt(slider.css('left')) + viewWidth;
    newLeft = boundLeftIncrement(left, newLeft);
    newLeft = checkDot(newLeft);
    animateLeft(newLeft);
  });
  itemsPerPageInput.change(function() {
    setItemsPerPage(parseInt(itemsPerPageInput.val()));
    updateLeft();
  });
});
.viewCont {
  height: 125px;
  position: relative;
}
.viewport {
  border: 1px solid;
  height: 100px;
  width: 100%;
  overflow: hidden;
  border-right: 2px solid red;
  margin-bottom: 5px;
}
.slider {
  height: 100%;
  position: relative;
  left: 0;
}
div.slide {
  width: 200px;
  height: 100%;
  position: relative;
  float: left;
  background: orange;
}
.btn {
  cursor: pointer;
  border-radius: 3px;
  background-color: gray;
  padding: 3px 5px;
  position: relative;
}
.next {
  float: right;
}
.prev {
  float: left;
}
#navLinks {
  width: 119px;
  position: relative;
  float: left;
}
#navLinks ul {
  display: inline-block;
  width: 100%;
  height: 10px;
}
#navLinks ul li {
  cursor: pointer;
  float: left;
  position: relative;
  width: 10px;
  margin-left: 2.5px;
  height: 10px;
  list-style: none;
  border-radius: 50%;
  background-color: #555;
}
.selectedDot {
  cursor: not-allowed!important;
  background-color: orange!important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="viewCont">
  <div class="viewport">
    <div class="slider">
      <div class="slide">one</div>
      <div class="slide">two</div>
      <div class="slide">three</div>
      <div class="slide">four</div>
      <div class="slide">five</div>
      <div class="slide">six</div>
    </div>
  </div>

  <div class="prev btn">Prev</div>

  <div id="navLinks">
    <ul></ul>
  </div>

  <div class="next btn">Next</div>
</div>
<div>Items Per Page:</div>
<input id="itemsPerPage" type="number" min="1" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用jquery从右向左滑动内容 的相关文章

  • h2 设置背景颜色和下划线

    我需要帮助解决这个 CSS 问题 我想要风格 h2 元素的背景颜色仅适用于文本 并且还有边框底部 这是预览 我可以自己做这件事 这并不难 但问题是我无法添加额外的元素 比如 span 标签 内 h2 标签 所以我正在寻找一种纯CSS方式来实
  • jQuery 文件上传预览图像

    我正在使用 jQuery 文件上传插件 http blueimp github io jQuery File Upload http blueimp github io jQuery File Upload 用于我的网站的图像上传 我已经看
  • jQuery:如何捕获文本框中的 TAB 按键

    我想捕获 TAB 按键 取消默认操作并调用我自己的 javascript 函数 Edit 由于您的元素是动态插入的 因此您必须使用委托的on http api jquery com on 如您的示例中所示 但您应该将其绑定到 keydown
  • 仅使用 Jquery 验证的字母

    我尝试了文章中的每个解决方案one https stackoverflow com questions 4115372 jquery validate plugin adding a custom validator to accept l
  • 水平滚动条仅出现在页面底部

    我有一个具有以下 HTML 结构的页面 div class wrapper div The wrapper被设置为min width 1100px至于原因我就不多说了 因此 当浏览器大小调整为小于 1100px 时 我希望出现水平滚动条 我
  • 仅在第一次访问页面时显示 jQuery 弹出窗口

    我是新来的jQuery http en wikipedia org wiki JQuery 我的网站上有一些需求 我想仅在用户到来时才第一次显示 jQuery div 弹出窗口 无需一次又一次地展示 我仍然在使用这个 但我不知道第二次如何隐
  • 如果元素隐藏则忽略 .NET 验证器(显示:无)

    我们经常在使用 javascript css 隐藏的元素 即 display none 上使用 NET 验证器时遇到问题 例如 可能有语法错误 但不用担心
  • jQuery 验证:如何不显示错误?或者如何将错误显示为工具提示?

    我希望我的错误浮动在未验证的输入字段上方 左对齐 我怎样才能做到这一点 如果不能 我怎样才能关闭错误 我仍然希望字段能够验证 并在错误时突出显示 但不希望显示实际的错误消息 我似乎无法在 jQuery 文档中找到任何可以让我打开 关闭它们的
  • 双弧形

    我目前正在尝试生成 波浪形幽灵底部 形状 该形状包含两条双曲线 虽然底部的部分这个图片 http images clipartpanda com ghost clip art castle ghost clipart1 jpg我认为以更好的
  • 我的CSS出了什么问题?活动链接不改变颜色

    我无法让我的 WordPress 菜单活动链接保持红色 我添加了我认为与导航相关的 CSS 还有正文等 以防影响问题 感谢您的帮助 body font family Helvetica Neue sans serif font size 1
  • iOS 11 浏览器图像错误

    在 iOS 11 中滚动页面时出现以下错误 在 Firefox Safari 和 Chrome 中 在 Android 设备中 不会发生该错误 这些是背景图像 我不知道这是否是导致错误的原因 图 2 显示了图像在 Android 中的用途和
  • 如何在文档加载时立即进行 AJAX 调用

    我想在加载文档后立即执行 ajax 调用 我正在做的是加载一个字符串 其中包含我将用于自动完成功能的数据 这就是我所做的 但它没有调用servlet 我删除了对各种 JS 脚本的调用 以使其更清晰 我在代码中做了几个类似的 AJAX 调用
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 使用 jquery 将字符串数组转换为整数

    我正在尝试将 jquery 中的字符串数组转换为整数数组 这是我的尝试 var cdata data values split each cdata function i l l parseInt l 我认为在这种情况下你不需要使用 Jqu
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • jQuery 选择下一个

    我有一个简单的div布局html 有一个函数 当鼠标悬停在className为 personal icon email 的div上时 我将调用JS函数并显示className为 img info mask 的隐藏div div class
  • 如何使 jQuery 向上动画

    我有一些 jquery 运行得相当好 但是当我将鼠标悬停在有问题的元素上时 底部向下扩展 这并不意外 但不是所需的效果 我希望元素的底部保持静止 而元素的顶部向上扩展 如果您想查看我目前拥有的内容 您可以导航至http demo ivann
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • 我可以使用 jQuery 动态创建文件(及其内容)吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这是我的 HTML 代码 ul li

随机推荐

  • 通过通用参考捕获

    当将推导类型作为右值引用传递时 我获得了通用引用功能 并且可以实现完美转发 如下所示 template
  • Typescript 中的类和 Keyof

    从 TypeScript 开始 我尝试使用keyof定义类的动态属性 type UserType id number name string class Domain
  • 如何在 Adob​​e AEM 中启用 WebDAV?

    我尝试通过 WebDAV 访问 Adob e AEM 但是无法使其工作 我正在运行开箱即用的 crx quickstart 因此我使用端口 4502 和默认工作区 我使用 Windows 资源管理器作为 WebDAV 客户端 可以轻松地连接
  • 如何使用php将数组分成两个相等的部分

    如何在 PHP 中使用 array slice 将数组分成两个相等的部分 这是我的要求 第一个数组包含 0 1200 第二个数组包含 1200 end From array slice 的文档 https www php net array
  • 如何将数据传递到 Angular-strap 弹出窗口

    我试图在悬停在全日历项目上时显示角带弹出框 我正在使用 eventMouseover eventMouseout 回调来显示 隐藏弹出窗口 scope calendarConfig defaultView basicWeek eventMo
  • git push origin master 凭据丢失或无效

    无法再推送到原始主机 git push origin master 几天以来 我卸载了 git 和 Visual Code 并重新安装了它 但没有任何结果 我遇到了同样的错误 Missing or invalid credentials E
  • 如何在同一进程中从不同路径加载到同一库两次?

    我正在编写一个新程序 即使用 OpenSSL 加密数据 我希望我的程序符合 FIPS 标准 为了强制执行 FIPS 模式 我使用 API 进行设置FIPS 模式 集 我还需要将加密的数据传输到第三方设备 设备供应商还提供了一个与设备通信的库
  • 在 C# 中匹配西里尔字母符号

    我有一个巨大的代码文件 其中有很多行 如下所示 Enterprise TextMessageBox Show String Format S n n 0 e gt Message S 我想做的是用我提供的另一个文本找到带有西里尔符号字符串的
  • 复杂 json 中的嵌入表达式未正确替换

    在空手道测试中 我们能够替换 json 中单个键的嵌入表达式 但是当尝试替换 json 的复杂键时它不起作用 输入 json integration serviceData integrationService name integrati
  • 如何在 Eclipse/Java 中的同一工作区中引用另一个项目中的类

    我的 Eclipse ADT Android Java 工作区中有两个项目 MyProject MyProjectAutomatedUITests 在MyProject中有一个包 constants和一个班级ButtonNames java
  • 将div放入MYSQL die

    我有这个 mysql 请求 mysql query query or die mysql error 很简单 但我想改变mysql error 对于这个div div class ui widget div class ui state h
  • 无法使用机器ip连接到mongodb

    已安装Mongo using homebrew 如果我输入mongo在外壳上 它连接到test 但是当我输入ip address本地机器而不是127 0 0 1 mongo host 192 168 1 100 verbose 它给我错误消
  • 告诉程序当没有找到保存数据时要做什么 NSUserDefaults,iPhone

    我已经保存了使用 NSUserDefaults 保存的数据 我的印象是 如果已经没有任何内容保存到密钥中 第一次运行应用程序 它将默认为 0 然而 情况似乎并非如此 这是我所拥有的 To save void viewWillDisappea
  • style css标签会在body中渲染吗?

    我正在使用 CMS 显然它有一个错误 不允许我向其中添加任何内容一篇博客文章 它将所有内容插入正文中 在大多数情况下都可以正常工作 但在如下代码实例中 如果将这种类型的代码放入标签在所有主要浏览器中 IE8 Firefox Chrome 和
  • 如何保护应用程序免受第 3 方 js 库中存在的 XSS 向量的影响?

    我在 Android 移动应用程序中使用各种第 3 方库 如 cordova js jquery jquery mobile mobilizer 等 通过不安全地使用 eval settimeout inner outerhtml 这些库被
  • Hive:转换“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”中缺少秒数的字符串日期时间

    我使用以下代码将字符串日期时间变量转换为日期时间 但转换后的字符串缺少 SSS 部分 使用的代码 cast FROM UNIXTIME UNIX TIMESTAMP oldtime yyyy MM dd T HH mm ss SSS Z y
  • 如何创建类python中所有可见元素的列表

    我正在使用 python 3 x Selenium WebDriver 我正在制作一个 for 循环来遍历页面的所有元素 限制类中元素的长度 然后打印迭代次数 但它如何获取所有可见和隐藏的元素仅获取页面中的可见元素 要从我正在使用的类中获取
  • Z-index 不适用于 Flex 元素? [复制]

    这个问题在这里已经有答案了 我试图有两列 一列是可以展开并重叠另一列的菜单 但我使用了一个 Flex 元素来包裹这些列 并且我的菜单展开了behind另一个元素 即使具有更大的z index 渲染效果是这样的 main font famil
  • 使用 Clipper 库的平行线

    我在用着CLIPPER http www angusj com delphi clipper php库偏移线并尝试制作平行线 ClipperOffset co new ClipperOffset co AddPath s JoinType
  • 使用jquery从右向左滑动内容

    当您按下 下一步 按钮时 视口会更改内容 两个 并进行转换 我想要的是 我想滑动内容 正如您在演示中看到的那样 使用translateX 200px 能给我渴望的效果 但它开始于0px并前往 200px 我希望每个 div 从红色条带 右