我有一个元素在不同的场景下改变宽度.我已经设置了CSS,其中包含了宽度的过渡:

.element-class {
    transition: width 500ms ease 0ms;
}

但我只希望它在宽度减小的情况下进行这种过渡.当它增加时,我希望它立即改变(所以没有过渡).有没有可能告诉transition属性只在一种情况下工作?还是有别的办法?

我试着添加两个过渡属性,但它们不能同时应用(这是我所期望的,但我认为值得一试).

推荐答案

你可以将transition应用于类或伪元素,比如:hover,而不是应用于元素.

document.getElementById('toggle').addEventListener('click', () => {
  document.getElementById('square').classList.toggle('w-100');
})
#square {
  margin-top: 20px;
  border: 1px solid black;
  width: 50px;
  height: 50px;
}

#square:hover {
  background-color: orange;
  transition: background-color 500ms;
}

#square.w-100 {
  width: 100px;
  transition: width 500ms;
}
<button id="toggle">Toggle</button>
<div id="square"></div>

Css相关问答推荐

如何防止css边框缩小div?

如何使用遮罩创建手绘SVG动画

CSS Select 标签旁边的文本并输入

在R shiny中 Select DT表格值的背景 colored颜色 (无条件的自由 Select )

动态覆盖 Vuetify 类

如何在使用 bslib 5 的shiny 应用程序中使用样式参数排列 ui 元素

在 React Native 中创建背景

Material UI Modal 因背景而变暗

CSS 字符串变量的正确null值是多少?

nth-child 在一个页面上工作,但不在另一个页面上

CSS媒体查询仅针对iPad和iPad?

什么是 DOM 回流?

删除所有填充和边距表格 HTML 和 CSS

如何使用 Gulp 复制多个文件并保持文件夹 struct

溢出的文本可以居中吗?

为什么在 CSS3 中启用硬件加速会降低性能?

在 CSS3 中重新启动动画:比删除元素更好的方法吗?

为什么我的 div 边距重叠,我该如何解决?

是否可以在 CSS 中定义常量?

如何实现最大字体大小?