由VEGA BELOW解决.
HERE IS THE WORKING FIDDLE.我将整个帖子保留给未来的访问者,看看这个问题是如何解决的.
我正在尝试创建一个按钮,当它悬停时,会在下面的抽屉上显示一些信息.
我希望能够轻松地将其实现到页面中,因此我将其转换为jQuery小部件.我想根据按钮和/或抽屉上的内容进行调整,但现在没有这样做.用户应该能够将单个HTML div标签与隐藏数据放在一起,它才能正常工作.
理想情况下,按钮/抽屉的宽度将调整到两者之间的最大值,以便抽屉在处于关闭状态时完全隐藏.我只是不希望我的用户不得不设置固定宽度.
我需要帮助!
这是它的样子:
相关HTML(Fiddle中的完整HTML):
<div class="download" data-value="It's awesome!">Visit Website</div>
相关CSS(Fiddle中的完整CSS):
.button { position:absolute; padding:10px; } .drawer { Box-sizing:border-Box; z-index:-1; position:absolute; top:3px; left:3px; padding:6px 10px; text-align:center; -webkit-transition:0.3s left ease-in; }
相关的jQuery(Fiddle中的完整jQuery):
$(function() { $(".button").each(function() { $(this).append("<div class='drawer'>" + $(this).data('value') + "<div class='handle'>||</div></div>"); $(".drawer",this).css("width",$(".button").width()); }); $(".button").mouseenter(function() { $(".drawer",this).css("left",$(".button").outerWidth()); }).mouseleave(function() { $(".drawer","3px"); }); });
解决方法
你必须根据这个按钮计算宽度.见下文,
$(function() { $(".button").each(function() { $(this).append("<div class='drawer'>" + $(this).data('value') + "<div class='handle'>||</div></div>"); $(".drawer",this).width($(this).width()); //updated with this object }); $(".button").mouseenter(function() { $(".drawer",$(this).outerWidth()); //updated with this object }).mouseleave(function() { $(".drawer","3px"); }); });