Add a link with a translate transirion
This commit is contained in:
15
src/atoms/LinkTranslate.svelte
Normal file
15
src/atoms/LinkTranslate.svelte
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<script>
|
||||||
|
import * as fn from '../functions'
|
||||||
|
|
||||||
|
export let href = ''
|
||||||
|
export let text = ''
|
||||||
|
export let target = ''
|
||||||
|
export let rel = ''
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<a {href} class="link-translate" {target} {rel}>
|
||||||
|
<slot />
|
||||||
|
<div class="text" data-text={text}>
|
||||||
|
<span>{text}</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
import { site, currentLocation } from '../store'
|
import { site, currentLocation } from '../store'
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
|
import LinkTranslate from '../atoms/LinkTranslate'
|
||||||
import Switcher from '../molecules/Switcher'
|
import Switcher from '../molecules/Switcher'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -15,12 +16,13 @@
|
|||||||
<ul class="footer__right">
|
<ul class="footer__right">
|
||||||
<li>
|
<li>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="/credits">Credits</a></li>
|
<li>
|
||||||
|
<LinkTranslate href="/credits" text="Credits" />
|
||||||
|
</li>
|
||||||
<li class="instagram">
|
<li class="instagram">
|
||||||
<a href="https://instagram.com/{$site.instagram}" target="_blank">
|
<LinkTranslate href="https://instagram.com/{$site.instagram}" text="Instagram" target="_blank">
|
||||||
<img src="/img/icons/instagram.svg" alt="Instagram">
|
<img src="/img/icons/instagram.svg" alt="Instagram">
|
||||||
<span>Instagram</span>
|
</LinkTranslate>
|
||||||
</a>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -63,3 +63,48 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Link with animated letters
|
||||||
|
.link-translate {
|
||||||
|
.text {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: attr(data-text);
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
opacity: 1;
|
||||||
|
transition: all 275ms $ease-cubic;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: inline-block;
|
||||||
|
transform: translateY(-75%);
|
||||||
|
opacity: 0;
|
||||||
|
transition: all 275ms $ease-cubic;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover
|
||||||
|
&:hover {
|
||||||
|
.text {
|
||||||
|
&:after {
|
||||||
|
transform: translateY(25%);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user