2012-08-04 77 views
0

我知道这个问题很混乱,但让我解释一下我正在努力实现的目标。我可以通过“height = auto;”来滚动某个元素吗?

说我有以下的CSS和HTML。

<style> 
    body{ height: 10000px;} 
    #revolve{ border: 1px solid red; width: auto; height: auto;} 
</style> 

<body> 
    <div id="revolve"> 
    <ul> 
     <li> one </li> 
     <li> two </li> 
     <li> three </li> 
    </ul> 
    </div> 
</body> 

因为身体设置一万个像素,在正常使用中滚轮的整个页面会向下滚动正常。

我希望能够改变< ul>元素的位置,以便当鼠标光标位于“旋转”div元素上方时,使用滚轮来旋转元素的位置而不是滚动10000px页面。我还需要所有我的< li>元素始终可见,并且如果需要,div可以容纳任何其他< li>元素。

(最终我期望的结果将是在< Li的以下顺序>元素)

<li> two </li> 
<li> three </li> 
<li> one </li> 

现在设定div元素到一定的高度和“溢出:滚动;”不会给我我想要的结果。我想到了一个漫长而复杂的方式来做到这一点,但也许有人经验丰富,可以给我一个很好的,优雅的方式来实现它。

回答

1

你可以尝试position: fixed; top: 20px; left: 20px;内#revolve,保持页面上所有的时间 让我告诉你例子如下,

<style> 
    body{ height: 10000px;} 
    #revolve{ position: fixed; top: 20px; left: 20px; border: 1px solid red; width: auto; height: auto;} 
</style> 

<body> 
    <div id="revolve"> 
    <ul> 
     <li> one </li> 
     <li> two </li> 
     <li> three </li> 
    </ul> 
    </div> 
</body> 

你可以使用jQuery函数改变如下

<li>位置

你可以使用jQuery的.after()来移动元素。我克隆了其中的一个,这样原来可以保留为占位符。这就好像你想要切换变量a和b,你需要第三个临时变量。

$.fn.exchangePositionWith = function(selector) { 
    var other = $(selector); 
    this.after(other.clone()); 
    other.after(this).remove(); 
}; 

你的代码是:$("#revolve ul li:eq(1)").exchangePositionWith("#revolve ul li:eq(3)");

我希望这会有所帮助。

1

实现此目的的唯一方法就是使用javascript。改变DOM元素的顺序需要脚本,如果你想让它在滚轮上作出反应,那么就需要脚本。请注意,这将是一种意想不到的行为,可能会让您的用户感到困惑。在实际执行此操作之前,我会考虑三次。

始终保持div可见不那么复杂。只要看看固定的定位与CSS(位置:固定;顶部:#px;左:#px;)。

相关问题