我有以下情况:

.demand-2 {
    width: 29%;
}
.demand-3 {
    width: 43%;
}

一个divdemand-2的组合应该只有它的母组合width29%.

现在,有一个按钮可以将所有框增加到width100%.通过以下CSS,我确保过渡顺利:

maxLevelOff {
    animation-duration: 1s;
    animation-name: maxOff;
    animation-fill-mode: forwards;
}
@keyframes maxOff {
    from {
        width: 29;
    }
    to {
        width: 100%;
    }
}

但是,正如你所看到的,这非常好,因为我必须硬编码,所以只需要demand-2美元.

我现在的问题是,有没有一种方法可以动态地做到这一点?否则我就得为所有不同的widths个角色制作一个动画,这看起来很乏味.

推荐答案

作为替代,您也可以使用css转换.当宽度改变时,它会平滑地调整到新的宽度.你只需要在你想要.full-width%宽度的.demand上加一个.full-width的类.

我在下面提供了一个简单的演示.如果你点击按钮一次,宽度就会扩大,如果你再次点击,宽度就会恢复到原来的宽度.

let button = document.querySelector('button');

button.addEventListener('click', () => {
  let demand = document.querySelectorAll('.demand');
  demand.forEach(el => {
    if(el.classList.contains('full-width')) el.classList.remove('full-width')
    else el.classList.add('full-width')
  });
});
.demand {
  height: 100px;
  transition: width 0.3s ease-in;
}

.demand-2 {
  background: blue;
  width: 29%;
}

.demand-3 {
  background: red;
  width: 49%;
}

.demand-4 {
  background: green;
  width: 69%;
}

.demand.full-width {
  width: 100%;
}
<div class="demand demand-2"></div>
<div class="demand demand-3"></div>
<div class="demand demand-4"></div>
<button>Click</button>

Html相关问答推荐

卸载伪元素 destruct 了CSS

<;img>;和具有负边距的元素的堆叠顺序

正文不能填满浏览器100%的高度

如何在排序上重用参数?

根据屏幕大小拆分长行列表

在WooCommerce单一产品页面上使产品图片库粘滞(固定)

我正在try 向列表中的图像添加悬停,以放大图像并将div的不透明度设置为1而不是0

从网页中提取URL

HTML 重定向到当前服务器

使单行路径的 svg 填充父级的 100% 宽度

动态计算高度时 Div 不保持 1/1 纵横比

如何在 Flex 对齐内容框下显示隐藏按钮和文本

两个span,一个在div居中,好像没有另一个,另一个在右边

是否可以为长 huxtable 固定头部?

使用 css 将内容居中并向左对齐?

如何使用 CSS 和 HTML 将文本放入图像中?

在 SQL 中合并 HTML 表中的单元格

Bootstrap 5 英雄

我如何让这个动画播放,然后停止,然后在设定的时间后再次播放? (CSS)

使用 htmloutput 在shiny 的应用程序中呈现文本