我试图通过下面的一个例子将放大镜转换为带有css动画的十字图标。这是我第一次使用动画,我不知道如何把手柄放在放大镜下面。这是fiddle。这是原版的demo。这是html:
<div id="magnifier">
<div class="magnifier-icon">
<span class="magnifier-handle"></span>
<span class="magnifier-handle-x"></span>
</div>
</div>这是css:
// vars
$color-white: #fff; // icon color
$color-bg: #b0e1be; // background color
$animation: .5s; // animation speed
$scale: 0.1; // icon scale 68/68 default
$dimensions-open: 28px;
$dimensions-close: 36px;
*, *:before, *:after {
box-sizing: border-box;
}
// spacing + background-color
body {
background: $color-bg;
padding: 40px;
font-family: roboto, sans-serif;
}
.magnifier-icon {
display: block;
position: relative;
cursor: pointer;
opacity: 1;
transition: opacity 2s;
&:before {
content: "";
display: block;
border: 3px solid $color-white;
width: $dimensions-open;
height: $dimensions-open;
border-radius: $dimensions-open*.5;
animation: open $animation ease 0s 1 forwards;
}
&.is-open:before {
animation: close $animation*.5 ease $animation*.5 1 forwards;
}
}
.magnifier-handle,
.magnifier-handle-x {
content: "";
display: block;
width: 25px;
height: 3px;
transform: rotate(45deg);
background: $color-white;
position: absolute;
top: 85px;
left: 45px;
animation: x-stroke-out $animation ease 0s 1 forwards;
.is-open & {
animation: x-stroke-in $animation ease 0s 1 forwards;
}
}
.magnifier-handle-x {
animation: x-stroke-turn-out $animation ease 0s 1 forwards;
.is-open & {
animation: x-stroke-turn $animation ease 0s 1 forwards;
}
}
@keyframes close {
0% { border-radius: $dimensions-open*.5; width: $dimensions-open; height: $dimensions-open; }
80% { border-radius: $dimensions-close*.5; width: $dimensions-close; height: $dimensions-close; }
100% { border-radius: $dimensions-close*.5; width: $dimensions-close; height: $dimensions-close; }
}
@keyframes open {
0% { border-radius: $dimensions-close*.5; width: $dimensions-close; height: $dimensions-close; }
20% { border-radius: $dimensions-close*.5; width: $dimensions-close; height: $dimensions-close; }
100% { border-radius: $dimensions-open*.5; width: $dimensions-open; height: $dimensions-open; }
}
@keyframes x-stroke-in {
0% { top: 45px; left: 35px; }
80% { top: 33px; left: 15px; width: 40px; height: 4px; }
100% { top: 33px; left: 15px; width: 40px; height: 4px; }
}
@keyframes x-stroke-out {
100% { top: 45px; left: 35px; }
30% { top: 33px; left: 15px; width: 40px; height: 4px; }
0% { top: 33px; left: 15px; width: 40px; height: 4px; }
}
@keyframes x-stroke-turn {
0% { top: 45px; left: 35px; }
70% { top: 33px; left: 15px; height: 4px; transform: rotate(45deg); }
85% { transform: rotate(145deg); }
100% { top: 33px; left: 15px; height: 4px; width: 40px; transform: rotate(135deg); }
}
@keyframes x-stroke-turn-out {
100% { top: 45px; left: 35px; }
30% { top: 33px; left: 15px; height: 4px; transform: rotate(45deg); }
15% { transform: rotate(145deg); }
0% { top: 33px; left: 15px; height: 4px; width: 40px; transform: rotate(135deg); }
}我如何做到这一点,我已经尝试通过更改top和left属性magnifier-handle-x的值,但没有帮助。
发布于 2017-08-28 16:49:59
根据更新后的fiddle https://jsfiddle.net/j624wsas/16/更改一些@keyframes css代码。
https://stackoverflow.com/questions/45914567
复制相似问题