当前位置: 首页 > 面试题库 >

如何将多个转换声明应用于一个元素?

余弘毅
2023-03-14
问题内容

我有一个包含两个类的元素,一个叫做“ rotate”,它将旋转元素360度,另一个叫做“ doublesize”,它将元素放大两倍于其正常大小:

.rotate {
    transform: rotate(0deg);
}

.rotate:hover {
    transform: rotate(360deg);
}

.doublesize {
    transform: scale(1);
}

.doublesize:hover {
    transform: scale(2);
}

我猜这是行不通的,因为这些类会覆盖彼此的transform属性?

我知道我可以很容易地在一条CSS规则中做到这一点,例如:

.doublerotatesize {
    transform: scale(1) rotate(0deg);
}

.doublerotatesize:hover {
    transform: scale(2) rotate(360deg);
}

但是我希望能够在可能的情况下分别应用每个类。


问题答案:

我猜这是行不通的,因为这些类会覆盖彼此的transform属性?

正确。作为级联工作方式的副作用,这是一个不幸的局限。

您将必须在一个transform声明中指定两个函数。您可以简单地将两个类选择器链接在一起,而不是为组合的转换创建新类:

.doublesize.rotate {
    -webkit-transform: scale(1) rotate(0deg);
}

.doublesize.rotate:hover {
    -webkit-transform: scale(2) rotate(360deg);
}

…但是正如您所看到的,问题出在transform属性而不是选择器中。

预计将在Transforms级别2中对此进行纠正,在该级别中,每个变换都已提升为自己的property,这将使您可以像单独组合CSS属性一样简单地声明它们来组合变换。这意味着您将能够简单地做到这一点:

/* Note that rotate: 0deg and scale: 1 are omitted
   as they're the initial values */

.rotate:hover {
    rotate: 360deg;
}

.doublesize:hover {
    scale: 2;
}

…并利用级联而不是受其阻碍。不需要专门的类名或组合的CSS规则。



 类似资料:
  • 这在这个回答中出现了,并且: 在Apple LLVM 9.1.0 CLANG-902-0.39.2中,的引用第一个并打印“1”。 GCC 8.2不接受此源文本。,抱怨:“错误:以前声明为'static‘的变量重新声明为'extern'”。 C 2018 6.2.2 4规定: 由于有两个先验声明,因此以下每个“if”子句的条件为真,第一个用于第一个先验声明,第二个用于第二个先验声明: ……如果前面声

  • 问题内容: 我可以将2个类应用于单个div或span或任何html元素吗?例如: 我尝试过,但在我的情况下,c2没有得到应用。我如何一次申请两个课程? 问题答案: 1)在class属性内使用多个类,以空格(ref)分隔: 2)要定位包含所有指定类的元素,请使用以下CSS选择器( 不带空格 )(ref):

  • 问题内容: 使用CSS,如何应用多个? 示例:在下面,仅应用平移,而不应用旋转。 问题答案: 您必须将它们放在这样的一行上: 当您有多个转换指令时,将仅应用最后一个。就像其他任何CSS规则一样。 请记住,从右到左应用了 多行转换指令。 这: 和: 会 不会 产生同样的结果:

  • 使用CSS,如何应用多个? 示例:在下面,只应用平移,而不应用旋转。

  • 问题内容: 我希望两个名称不同的类在CSS中具有相同的属性。我不想重复代码。 由于两个类都在做同一件事,因此我应该能够将其合并为一个。我怎样才能做到这一点? 问题答案: 是您要寻找的。

  • 问题内容: 最近,我注意到声明包含64个元素的数组比声明具有65个元素的相同类型的数组要快得多(> 1000倍)。 这是我用来测试的代码: 这将运行在大约6毫秒,如果我更换用它需要大约7秒。如果作业分布在越来越多的线程中,那么这个问题就会成倍地恶化,这就是我的问题所在。 不同类型的数组(例如或)也会发生此问题。大字符串不会发生此问题:,但将其更改为时确实会发生 我想知道为什么会这样,是否有可能规避