css中的转换和目标

时间:2013-09-29 12:09:35

标签: css css-transitions

我正在创建一个带有一些CSS动画的页面(由于我的一些客户不想要JavaScript重型网站)。所以我有一个我想要动画的元素,但是根据点击的按钮有三种不同的方式:

示例:

<a href="#element">One animation</a>
<a href="#element">Second animation</a>
<a href="#element">Third animation</a>

<div id="element"></div>

我选择元素的方式是:target。但是,如何使用以下三种不同的方式为同一元素设置动画:target?

这是我现在用于测试目的的CSS:

#element{
height: 10px;
width: 10px;
border-radius: 0px;
background-color: red;
position: absolute;
left: 440px;
top: 300px;
-webkit-transition-property: height, width, background-color,;
-webkit-transition-duration: 5s;
-webkit-transition-timing-function:ease-out;
}

#element:target{
height: 300px;
width: 500px;
border-radius: 0px;
background-color: blue;
position: absolute;
left: 200px;
top: 200px;
}

所以我基本上希望在同一个元素上有3种不同的:目标样式。这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用css adjacent(+)选择器执行此操作:

<强> HTML:

<a id='first' href="#first">One animation</a>
<a id='second' href="#second">Second animation</a>
<a id='third' href="#third">Third animation</a>

<div id="element" class="force-repaint"></div>

<强> CSS:

#element{
    height: 300px;
    width: 300px;
    border-radius: 0px;
    background-color: red;
    position: absolute;
    left: 300px;
    top: 50px;
    -webkit-transition-property: height, width, background-color,;
    -webkit-transition-duration: .2s;
    -webkit-transition-timing-function:ease-out;
}

#first:target + #second + #third + #element { 
    background: yellow;
}

#second:target + #third + #element{
    background: green;
}

#third:target + #element{
    background: purple;
}

.force-repaint { -webkit-animation: bugfix infinite 1s; }
@-webkit-keyframes bugfix { from { fill: 0; } to { fill: 0; } }

正在使用 DEMO

答案 1 :(得分:0)

  

所以我基本上希望在同一个元素上有3种不同的:目标样式。这可能吗?

不,这是不可能的 - 不是直接的。

  

但是如何使用以下三种不同的方式为同一元素设置动画:target?

使用三个不同的目标。

您可以将要转换的实际元素放入多个嵌套容器元素中,如下所示:

<div id=target1>
  <div id=target2>
    <div id=target3>
      <element>

然后让你的三个链接分别指向其中一个目标ID,并使用CSS中的后代组合器为每个案例应用所需的转换,

#target1 element { … }
#target2 element { … }
#target3 element { … }