【问题标题】:HTML tabs drag-drop slider sample?HTML标签拖放滑块示例?
【发布时间】:2011-08-25 21:32:47
【问题描述】:

我需要的是一个简单的选项卡系统,如果您在其内容上mouseDown,您不会选择 html 文本而是开始滑动选项卡。如果您滑动超过一半,则假定您滑动到下一个选项卡。如何用 jQuery 做这样的事情?

更新: 示例代码:

JS:

var $tabs = $('.tab');
var $contents = $('.content');

var contentWidth = $contents.eq(0).outerWidth(true);
var $slider;

var DURATION = 600;
var EASING_METHOD = 'easeInOutCubic';


$tabs.data('currentTabId', 1);


$slider = $contents.wrapAll('<div />').parent();
$slider.css({ 'width' : contentWidth * $contents.length,
              'marginLeft' : 0 });



function calcMargin(distance) {
  var margin = parseInt($slider.css('marginLeft').replace('px', ''), 10);
  return margin + contentWidth * distance * -1;
}


function changeTab(tabId) {
  var distance;


  if($tabs.data('currentTabId') !== tabId) {

    distance = tabId - $tabs.data('currentTabId');


    $slider.stop(true, true);  
    $slider.animate(
      { 'marginLeft' : calcMargin(distance) },
      { duration : DURATION, easing : EASING_METHOD }
    );


    $tabs.data('currentTabId', tabId);    
    $tabs.removeClass('current');
    $tabs.filter('#tab' + tabId).addClass('current');
  }
}



$tabs.click(function() {
  changeTab($(this).attr('id').slice(3));
});

HTML:

<div class='tabs'>
  <div class='tab current' id='tab1'>tab1</div>
  <div class='tab' id='tab2'>tab2</div>
  <div class='tab' id='tab3'>tab3</div>
</div>

<div class='contents'>
<div class='content' id='content1'>
  <div class='inner'>
    content1
  </div>
</div>

<div class='content' id='content2'>
  <div class='inner'>
    content2
  </div>
</div>

<div class='content' id='content3'>
  <div class='inner'>
    content3
  </div>
</div>
</div>

CSS:

body {
  margin: 0;
  padding: 20px;
  font-family: sans-serif;
}

.tabs {
}

.tab {
  display: inline-block;
  padding: 10px 30px;
  border: 1px solid #333;
  border-bottom: none;
  border-radius: 15px 10px 0 0;
  margin: 0 5px;
  cursor: pointer;
}

.tab.current {
  background: #90bfff;
}

.contents {
  overflow: hidden;
  width: 400px;
  height: 300px;
  border: 1px solid #333;
}

.content {
  float: left;
  margin-right: 10px;
  width: 400px;
  height: 300px;
}

.content .inner {
  padding: 20px;
  font-size: 35px;
}

以及it works Here 的实时示例。我正在寻找的东西看起来 like this (link provided by Trufa) 但不仅适用于图像,还适用于 html 选项卡......并且在物理上可以更简单......=)是否可以将提供的代码修改为我想要的东西附近的任何东西?

【问题讨论】:

  • 一些 HTML + CSS 开始?
  • @roXon:添加了一些示例代码。
  • I.e 6 中的问题是什么? (我假设宽度和边距问题 ie6 是对的?
  • 不——IE6在代码中没有问题,问题在于如何实现我对它的要求......(
  • @Blender +1 您在提供的所有内容方面做得很好。但是我不太明白:'mouseDown'放在什么元素上?而且,据我所知,目的是:保持单击鼠标应该开始动画->如果在半场之前释放->而不是将幻灯片返回到当前选项卡? ...你能更精确吗?

标签: jquery html drag-and-drop tabs slide


【解决方案1】:

你的意思是this?


更新 1:

我没有太多空闲时间,但我正在尝试build something,基于this。

顺便说一句,我不敢相信什么都没有或已经建成。


【讨论】:

  • Yess!) Grate sample... BVut 我希望有一些更简单(并且没有 UI)的东西作为 bacik 示例...可以说...不仅仅是图像幻灯片放映,而是 html.. .
  • @Blender:好的,等一下 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 2019-08-09
  • 2014-03-29
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多