我试图使一个联系人图标,当按下移动到一边,揭示联系人信息。我想文本保持中心和联系人信息淡入。到目前为止,我有这个:
<div class="contacts">
<div class="contactIcon">ICON<span class="contactInfo"> (+xx)xxxxxxx</span></div>
<div class="contactIcon">ICON<span class="contactInfo"> (+xx)xxxxxxx</span></div>
</div>
let contactIcon = document.querySelectorAll('.contactIcon');
for (let i = 0; i < contactIcon.length; i++) {
contactIcon[i].addEventListener('click', function () {
let contactInfo = contactIcon[i].querySelector('.contactInfo');
if (contactInfo.style.display == 'none') {
contactInfo.style.visibility = 'visible'
contactInfo.style.display = 'inline';
contactInfo.style.maxWidth ='100px';
}
else {
contactInfo.style.visibility = 'hidden';
contactInfo.style.display = 'none';
contactInfo.style.maxWidth = '0';
}
});
.contactIcon {
overflow: hidden;
}
.contactInfo {
visibility: hidden;
display: none;
opacity: 1;
max-width: 500px;
transition: visibility 0s, opacity 0.3s, max-width 0.6s linear;
}
代码在一定程度上可以工作,图标移动以允许空间,但没有动画,我不知道为什么,我试过切换一个'.hide'类,但也不能让它工作。此外,它需要2次点击,使内容出现,我也很难理解。
2条答案
按热度按时间huus2vyu1#
后一个问题很容易回答:
contactInfo.style.display == 'none'
只检测内联样式,所以你必须从css中删除display:none;
并将其附加到htmlspan
。至于动画,display: none
破坏了这里的一切,选择opacity
或width
使元素在视觉上消失。p.s.我附上了inline style,让你看看,它是如何被
contactInfo.style.opacity == "0"
检测到的,这里是没有inline style的更好方法:dw1jzc5e2#
试试这个