拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 CSS:可见性和不透明度的结合

CSS:可见性和不透明度的结合

白鹭 - 2022-02-23 1964 0 0

在我的项目中,我有一个按钮,我想在某些条件下显示和隐藏。当按钮被隐藏时,它仍然应该占用空间(意思是display: none;不是我想要的)但它不应该是可见的,并且用户不应该能够与之互动。改变可见性可以满足我的一切需求,但它会立即出现和消失,我希望有一个平稳的过渡。使用不透明度时,我可以设定过渡持续时间,但是当鼠标悬停在按钮上时,游标仍会变为指标。偶然地,我发现我可以简单地将这两件事结合起来得到想要的结果:当我点击示例中的按钮时,它会慢慢淡出,但一旦消失,我就无法再与它互动了。但是,我不明白为什么它会这样作业,因为可见性会立即改变,而且我也不知道它是否在所有主要浏览器中都这样作业。有人可以帮我回答这两个问题吗?

function hide() {
  document.querySelector("button").style.visibility = "hidden";
  document.querySelector("button").style.opacity = "0";
}
button {
  transition-duration: 1s;
}
<button onclick="hide()">This is a test.</button>

uj5u.com热心网友回复:

您可以使用不透明度和指标事件。另外请不要将 javascript 用于 css 内容。在我的示例中,我添加了一个类。

const button = document.querySelector('.js-disable')

button.addEventListener('click', function() {
  button.classList.add('button--is-disabled')
})
.button {
  background-color: #ededed;
  padding: .5rem 1rem;
  border: none;
}

.button--is-disabled {
  opacity: 0;
  pointer-events: none;
  transition: opacity 2s;
}
<button class="button js-disable">Click me</button>

uj5u.com热心网友回复:

问题基本上是:当可见性立即改变时,为什么这会起作用。

这实际上是不正确的。可见性是插值的,当您对所有内容都设定了过渡时,可见性将会过渡。

显然它不能有连续的值,但它会逐步“选择”可见或隐藏的值,这是您指定的两个端点。它改变的地方由计时功能决定。

所以,你的代码作业得很好。元素随着不透明度逐渐消失,并且在某个点(在缓动计时功能的情况下接近结束)它将从可见切换到隐藏。

参见例如MDN

可见性值在可见和不可见之间插值。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *