css转换而不覆盖先前的转换?

Har*_*rry 13 css transform css3

我有一个元素:

elem
   transform translateY(5px) scale(1.2) 
Run Code Online (Sandbox Code Playgroud)

现在悬停我希望它再向下移动5px

elem:hover
   transform translateY(5px)
Run Code Online (Sandbox Code Playgroud)

显然这会覆盖以前的转换.无论如何设置它移动额外的5而不知道前一个转换状态是什么?

谢谢.

Oll*_*ams 6

CSS 自定义属性又名 CSS 变量是唯一的答案(除了使用 Javascript)。

要添加到以前的值:

div {
  --translateX: 140;
  --trans: calc(var(--translateX) * 1px);
  transform: translateX(var(--trans)) scale(1.5);
}

div:hover {
  
 --translatemore: calc(var(--translateX) + 25);
 --trans: calc(var(--translatemore) * 1px);
}

div {
  transition: .2s transform;
  width: 50px;
  height: 50px;
  background: salmon;
}
Run Code Online (Sandbox Code Playgroud)

最终所有浏览器都将支持单独设置转换属性的能力。