我有一个元素:
elem
transform translateY(5px) scale(1.2)
现在当鼠标悬停时,我希望它向下移动额外的5像素。
elem:hover
transform translateY(5px)
显然,这将覆盖先前的转换。有没有办法在不知道之前的转换状态的情况下将其设置为额外移动5个单位?
谢谢。
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;
}
现在所有浏览器都支持分别设置变换属性的能力。
box.style.webkitTransform = matrix.translate(100, 0);
你只需要创建另一个div或span包装器,并将transform属性设置给它就可以了。
你可以使用嵌套元素,并针对每个变量独立增加翻译。
不过,这样很快就会变得混乱不堪。
CSS变量!https://jsfiddle.net/91q0s5h0/4/
div {
--translateX: 10px;
transform: translateX(var(--translateX)) scale(1.5);
}
div:hover {
--translateX: 5px;
}
#elem:hover { transform: add translateY(5px); }
的东西会很酷。不幸的是,目前还不存在这样的东西。 - Tamás Bolváriscale: 1.5; rotate: 45deg; translate: -50%;
等。但是,截至2023年3月17日,它们只在CanIUse上获得了88%的支持。 - Seanglescale: 1.5; rotate: 45deg; translate: -50%;
等等。但是截至2023年3月17日,它们在CanIUse网站上仅有88%的支持率。 - Seangle