让div跟随另一个div的位置

时间:2015-04-02 04:17:59

标签: javascript jquery css

$('#notepad').hide();
$('#news').hide();
$('#todo').hide();

$('#notepadIcon').click(function(){
    $('#notepad').toggle();
});
$('#newsIcon').click(function(){
    $('#news').toggle();
});
$('#todoListIcon').click(function(){
    $('#todo').toggle();
});

$('button').click(function(){
    $('#todoListIcon').hide();
});
#todoListIcon,
#newsIcon,
#notepadIcon {
    font-size: 24px;
    cursor: pointer;
    margin-left: 100px;
    transition: 0.5s ease;
    display: inline-block;
    opacity: 0.8;
    color:#000;
}

#bottomRightIcons {
    bottom:15px;
    right:30px;
    position: fixed;
    display: inline-block;
}

#todo,
#news,
#notepad {
    width: 290px;
    height:250px;
    max-height: 350px;
    background-color:#000;
    position: fixed;
    bottom: 45px;
    right: 28px;
    border-radius: 3px;
}

#news {
    right: 152px;
}

#notepad {
    right: 277px;
}
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Hide todo</button>

<div id="bottomRightIcons">
        <div id="notepadIcon"><i title="Note Taker" class="fa fa-pencil-square-o"></i></div>
        <div id="newsIcon"><i title="News" class="fa fa-newspaper-o"></i></div>
        <div id="todoListIcon"><i title="Todo List" class="fa fa-th-list"><span id="notificationTodo" class="todoListNotification"></span></i></div>
    </div>

<div id="notepad"></div>
<div id="news"></div>
<div id="todo"></div>

首先,我决定制作一个fiddle来帮助展示我的问题。

正如您所看到的,当您打开其中一个菜单时,它们会显示在正确的位置,但是一旦您隐藏其中一个图标,它们就不会跟随图标的位置。

理想情况下,我希望菜单div作为下拉菜单,因为它跟随图标。

有什么想法吗?欣赏它。

1 个答案:

答案 0 :(得分:3)

现在的问题是菜单的值是固定的right,因此当您切换位置时它们保持不变。您需要在切换时重置菜单的位置。

我已将课程iconmenu添加到相应的div中。

<div id="bottomRightIcons">
  <div id="notepadIcon" class="icon"><i title="Note Taker" class="fa fa-pencil-square-o"></i></div>
  <div id="newsIcon" class="icon"><i title="News" class="fa fa-newspaper-o"></i></div>
  <div id="todoListIcon" class="icon"><i title="Todo List" class="fa fa-th-list"><span id="notificationTodo" class="todoListNotification"></span></i></div>
</div>

<div id="notepad" class="menu"></div>
<div id="news" class="menu"></div>
<div id="todo" class="menu"></div>

// JS

$('button').click(function(){    
    $('#todoListIcon').hide();
    resetPosition();
});


function resetPosition() {
    $('.icon').each(function(i){
        var obj = $(this);
        var left = obj.offset().left;
        var width = obj.width();
        var bodyWidth = $('body').width();
        var right = bodyWidth - (left + width);
        $('.menu').eq(i).css({'right':right+'px'});
    });
}

Fiddle Demo