在另一个div下激活的div的CSS / JS / jQuery定位....就像下拉

时间:2013-10-02 18:31:59

标签: javascript jquery css jquery-ui

任何人都可以帮我弄清楚如何使用jquery在页面上使用另一个div在div下进行一点下拉。

这是我到目前为止(jquery / jquery UI)......

http://jsfiddle.net/hqSEJ/29/

基本上我尝试的想法虽然这需要修复,因为我猜它的CSS需要调整页面大小?所以下拉div总是在用户标签之类的东西。

无论如何我不知道我在这里尝试的是否是正确/最好的方法,但我只是尝试学习它,所以请随意提供更好的方法。谢谢!

加价:

<div id='top-wrapper'>
            <div id='top-inner-wrapper'>
                <div id='title'>Main Title</div>
            <div id='user-like-item'>User Name Type Thing</div>
        </div>     
    </div>
    <div id='content-wrapper'></div>
    <div id='hidden-drop-down' style='display:none;'></div>

jquery:

 $(document).ready(function () {
        $("#user-like-item").hover( function () {
           $(this).addClass("highlighted-user"); 
            $("#hidden-drop-down").show('slide', { direction: 'up'}, 1000);
        }, function () {
            $(this).removeClass("highlighted-user");
              $("#hidden-drop-down").hide('slide', { direction: 'up'}, 1000);
        });
    });

我试过的样式:

*{
padding:0;
margin:0
}
        #top-wrapper{
            position:fixed;
            top:0;
            width:100%;
            background-color:#2d2d2d;
            min-height:50px;
        }

        #top-inner-wrapper{
            width:70%;
            margin:0 auto;
            color:white;
            border-right:1px solid white;
            border-left:1px solid white;
        }

        #title, #user-like-item{
            width:40%;
            float:left;
            font-family:segoe ui;
            font-size:1.3em;
            font-weight:lighter;
            margin:2% 0;
        }

        #user-like-item{
            float:right;
            font-size:.8em;
            margin-top:30px
        }

        .highlighted-user{
         color:#fa3701;
            cursor:pointer;
        }

        #hidden-drop-down{
            min-height:100px;
            background-color:#e0e0e0;
            border:1px solid #2d2d2d;
            position:fixed;
            left:58%;
            width:20%;
            top:55px
        }
编辑:对不明确的问题道歉。所以我想从另一个div中删除div(就像那个用户名的东西)。我只是在学习这个,所以可能会有一些更好的方法,但小提琴就是我摆弄的东西。似乎下拉div的定位不是应该的...如果我调整页面大小它没有正确对齐。只是想知道如何解决这个问题,或者更好的是还有什么可以做的改进?这有意义吗?

1 个答案:

答案 0 :(得分:2)

你的问题不是很清楚,我可以立即推荐的一件事就是使用jQuery toggle函数:

$(document).ready(function () {
    $("#user-like-item").hover( function () {
       $(this).addClass("highlighted-user"); 
       $("#hidden-drop-down").toggle('slide', { direction: 'up'}, 1000);
    });
});

关于这个问题:如何你想要定位它吗?你想要达到什么目标?

<强>更新

好吧,我帮你找到了。

你很难解决,因为你的布局是用各种不同的属性构建的,因此设计没有响应。

让我教你一些可以防止未来出现瑕疵的基本课程:

  • 如果向右浮动,请将所有物品(适合您的情况)漂浮在一起
  • 如果向左漂浮,请将所有东西都悬空(对于您的情况)
  • 始终为每个元素提供宽度高度
  • 为菜单项或其他需要“追踪”的项目提供相对宽度和高度不是一个好主意
  • 如果您希望自己的设计具有响应性,请尽量避免绝对定位。否则,read this
  • 给予相对利润会使很多的事情复杂化。而是使元素的宽度响应而不是各自的边距。
  • 在您的完整内容周围放置一个包装器,以便您可以完全控制其定位和鼠标移动通常是明智的。

HTML

现在让我们来看看我写的新 HTML

<div id='content-wrapper'>
  <div id='top-wrapper'>
      <div class='top-inner-wrapper'>
          <div id='title'>Main Title</div>
          <div id='user-like-item'>User Name Type Thing</div>
      </div>     
  </div>
</div>    

<div class='top-inner-wrapper'>
    <div id='hidden-drop-down' style='display:none;'><br>You can still hover over me</div>
</div>
  • 正如您所看到的,我在contenttop-wrapper周围放了一个包装器。我这样做是因为我们需要跟踪鼠标移动,如下面的jQuery中所示。

  • 另外,我将top-inner-wrapper作为一个类,以便我可以将它(复杂的!!!)CSS属性应用到hidden-drop-down

CSS

body {
   width:100%;
   height:100%;    
}

*{padding:0;margin:0}
#top-wrapper{
    top:0;
    width:100%;
    background-color:#2d2d2d;
    min-height:50px;
}

.top-inner-wrapper{
    // just put the width at 100%. 
    // because a width of 70% is very complex to work with
    width:100%;
    margin:0 auto;
    color:white;
    border-right:1px solid white;
    border-left:1px solid white;
}

#title, #user-like-item{
    width:40%;
    float:left;
    font-family:segoe ui;
    font-size:1.3em;
    font-weight:lighter;
    // I changed from relative margin (10%) to absolute margin
    margin-left:20px;
}

#user-like-item{
    float:right;
    width:200px;
    font-size:.8em;
    margin-top:30px;
    // changed to color so I can track it's width
    background-color:yellow;
    // Relative margin: I don't like it but this is what you had
    margin-right:10%;
}

.highlighted-user{
 color:#fa3701;
    cursor:pointer;
}

#hidden-drop-down{
    // Now these changes are important

    // ABSOLUTE HEIGHT
    height:100px;
    // ABSOLUTE WIDTH
    width:200px;
    background-color:#e0e0e0;
    border:1px solid #2d2d2d;
    top:50px;
    // RELATIVE MARGIN: because you also did this at `#user-like-item`
    right:10%;
    margin-right:-1px;
    position:absolute;

    // float:right !!!
    float:right;
}

#content-wrapper {
    // always let the wrapper be 100%
    width:100%;

    // you can specify height of page here (or do auto if you actually have content)
    height:600px; 
    background-color:lightblue;
}

的jQuery

$(document).ready(function () {
    $("#user-like-item").hover( function () {
       $(this).addClass("highlighted-user");

        // if hover over #user-like-item: slide down
        $("#hidden-drop-down").slideDown(function()
        {
            // only slide up if mouse has entered #content-wrapper
            $("#content-wrapper").mouseenter(function()
            {
                 $("#hidden-drop-down").slideUp();                               
            });
            // only slide up if mouse has entered #top-wrapper
            $("#top-wrapper").mouseenter(function()
            {
                 $("#hidden-drop-down").slideUp();                               
            });
        });
    });
});

请注意,使用这个新的jQuery,隐藏的滑动div将立即像以前一样消失。这是因为您仍然希望用户能够阅读/单击div。我的意思是:如果它再次向上滑动,滑动div的用途是什么。

您可以找到我相应的jsFiddle by clicking this

我希望这可以帮助你。

祝你好运。