【发布时间】:2019-02-12 03:55:57
【问题描述】:
我想设置一个固定的<div>,包含一个图标,当悬停在上面时会从右向左展开(<div> 展开,而不是图标),在左边显示一段文字图标的一侧。图标的位置保持不变。这是一个草图,可以帮助说明我想做的事情:
在悬停时更改<div> 的大小没有问题,我只需添加一个宽度更大的类(包括为展开动画制作的过渡)。但我在元素的定位上挣扎。我将图标和文本(在<span> 内)放在单独的<div> 中,并尝试使用flex 安排所有内容。在展开/悬停状态下,事情看起来应该是这样,但是一旦 <div> 再次缩小,包含图标和文本的两个 div 尝试共享剩余的小空间,因此图标被切断,文本被压扁了。
如果有人能帮我弄清楚如何按照我想要的方式进行设置,我将不胜感激。
这是我到目前为止得到的一个 jsFiddle:Button-GrowOnHover
加上代码本身:
$(document).ready(function() {
var button = $("#myButton");
button.mouseenter(function() {
$(this).addClass("grow");
});
button.mouseleave(function() {
$(this).removeClass("grow");
});
});
.button-container {
position: fixed;
top: 5%;
right: 5%;
width: 100px;
padding: 5px;
background-color: tomato;
display: flex;
justify-content: space-between;
overflow: hidden;
transition: width 1s;
}
.button-container.grow {
width: 300px
}
.button-text-container {
display: flex;
align-items: center;
justify-content: center;
background-color: lightblue;
}
.button-icon-container {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="button-container" id="myButton">
<div class="button-text-container">
<span>Here comes some text.</span>
</div>
<div class="button-icon-container">
<img src="https://placeholder.pics/svg/100x100/7AFFA6/000000/ICON">
</div>
</div>
【问题讨论】:
-
您可以只使用 CSS 来实现您所需要的。
-
尝试添加 .button-text-container {min-width:0;}
标签: jquery css flexbox hover expand