javascript - 可拖动固定元素内的固定元素

标签 javascript html css jquery-ui

我有一个可拖动的固定元素,我想在其中保留另一个具有从右到左位置过渡效果的固定元素。我尝试用 JS 计算左侧和顶部位置,但我在转换时遇到了问题。 我怎样才能将此元素(橙色菜单)保留在可拖动的 div(蓝色)内并显示和隐藏(部分)?

$('#fixed-draggable-div').draggable();
#fixed-draggable-div {
  position: fixed;
  top: 50px;
  left: 35%;
  width: 200px;
  height: 300px;
  background: CornflowerBlue;
  overflow-y: scroll;
  padding: 0.5em 1em;
}

#fixed-menu {
  width: 100px;
  background: DarkOrange;
  position: fixed;
  right: -90px;
  top: 40%;
  transition: 1s right;
}

#fixed-menu:hover {
  right: 0;
  transition: 1s right;
}
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
</head>
<body>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum semper molestie arcu. Donec sem sapien, finibus tempor dapibus ut, bibendum vel nunc. Curabitur nunc nulla, ultrices a dictum sed, mattis a risus. Praesent malesuada auctor nisl et sollicitudin. Nunc turpis erat, commodo et lorem consequat, egestas sollicitudin nibh. Aliquam rutrum sapien varius consequat sodales. Vestibulum at tempor mi.</p>

  <p>Pellentesque blandit arcu metus, id imperdiet urna luctus id. Sed ipsum magna, sodales quis mauris eu, sollicitudin tempus diam. Integer tristique est sit amet orci maximus lobortis. Nam porttitor ultrices bibendum. Vestibulum blandit lacinia faucibus. Morbi nulla sapien, maximus at ex tempor, consectetur aliquam sem. Sed feugiat rutrum est ac porttitor. Aliquam gravida, diam nec rhoncus vehicula, velit justo porta sapien, eget fringilla libero justo vel velit. Duis ultrices rutrum gravida.</p>

  <p>Cras quis pharetra turpis. Integer sit amet nunc aliquam, iaculis diam quis, vestibulum enim. Praesent a pulvinar lacus. Nunc in mauris sed tortor consequat volutpat fermentum sed nisl. Cras aliquam lectus mauris, nec ultricies tellus tincidunt vel. Fusce dictum in enim vel sollicitudin. Nam imperdiet molestie dignissim. Suspendisse eleifend maximus orci, eget fringilla enim volutpat et. Quisque erat erat, mollis in tellus ac, rhoncus condimentum ipsum.</p>
  
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum semper molestie arcu. Donec sem sapien, finibus tempor dapibus ut, bibendum vel nunc. Curabitur nunc nulla, ultrices a dictum sed, mattis a risus. Praesent malesuada auctor nisl et sollicitudin. Nunc turpis erat, commodo et lorem consequat, egestas sollicitudin nibh. Aliquam rutrum sapien varius consequat sodales. Vestibulum at tempor mi.</p>

  <p>Pellentesque blandit arcu metus, id imperdiet urna luctus id. Sed ipsum magna, sodales quis mauris eu, sollicitudin tempus diam. Integer tristique est sit amet orci maximus lobortis. Nam porttitor ultrices bibendum. Vestibulum blandit lacinia faucibus. Morbi nulla sapien, maximus at ex tempor, consectetur aliquam sem. Sed feugiat rutrum est ac porttitor. Aliquam gravida, diam nec rhoncus vehicula, velit justo porta sapien, eget fringilla libero justo vel velit. Duis ultrices rutrum gravida.</p>

  <p>Cras quis pharetra turpis. Integer sit amet nunc aliquam, iaculis diam quis, vestibulum enim. Praesent a pulvinar lacus. Nunc in mauris sed tortor consequat volutpat fermentum sed nisl. Cras aliquam lectus mauris, nec ultricies tellus tincidunt vel. Fusce dictum in enim vel sollicitudin. Nam imperdiet molestie dignissim. Suspendisse eleifend maximus orci, eget fringilla enim volutpat et. Quisque erat erat, mollis in tellus ac, rhoncus condimentum ipsum.</p>
  
  <div id="fixed-draggable-div">
    <h3>Draggable element</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum semper molestie arcu. Donec sem sapien, finibus tempor dapibus ut, bibendum vel nunc. Curabitur nunc nulla, ultrices a dictum sed, mattis a risus. Praesent malesuada auctor nisl et sollicitudin. Nunc turpis erat, commodo et lorem consequat, egestas sollicitudin nibh. Aliquam rutrum sapien varius consequat sodales. Vestibulum at tempor mi.</p>
  <p>Pellentesque blandit arcu metus, id imperdiet urna luctus id. Sed ipsum magna, sodales quis mauris eu, sollicitudin tempus diam. Integer tristique est sit amet orci maximus lobortis. Nam porttitor ultrices bibendum. Vestibulum blandit lacinia faucibus. Morbi nulla sapien, maximus at ex tempor, consectetur aliquam sem. Sed feugiat rutrum est ac porttitor. Aliquam gravida, diam nec rhoncus vehicula, velit justo porta sapien, eget fringilla libero justo vel velit. Duis ultrices rutrum gravida.</p>
    <ul id="fixed-menu">
      <li>Element 1</li>
      <li>Element 1</li>
      <li>Element 1</li>
    </ul>
  </div>
  
</body>  
</html>

http://jsfiddle.net/6pwn3wyp/

最佳答案

这可能会解决您的问题,但您必须更改偏移值。我在固定元素的滚动事件中将偏移量更改为顶部。此外 - 您必须将 #fixed-menuposition 更改为 absoluteFixed 选项适用于整个窗口。

CSS -

#fixed-menu {
  width: 100px;
  background: DarkOrange;
  position: absolute; //this line
  right: -90px;
  top: 40%;
  transition: 1s right;
}

JQuery-

$('#fixed-draggable-div').scroll(function(){
   $('#fixed-menu').css(
      'top', $('#fixed-draggable-div').scrollTop()+100);
});

Fiddle

关于javascript - 可拖动固定元素内的固定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26844081/

相关文章:

javascript - 微博 : retrieve a specific tag via JS

javascript - 从 AngularJs 中的 Controller 中读取任何内容

javascript - 在捕获事件的同时禁用滚轮?

javascript - 在日期选择器插件中显示日期和日期

python - 如何在Python中修复这个 "AttributeError"?

c# - 动态生成的 div InnerHtml 渲染与静态编码时非常不同

javascript - 更改 Three.js collada 对象的纹理和颜色

javascript - 使用 grunt 在静态服务器上运行 Qunit 测试时遇到问题

php - Aside 和 Article 重叠标题

javascript - 悬停链接需要双击