| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | <template>  <a :class="className" class="link--mallki" href="#">    {{ text }}    <span :data-letters="text" />    <span :data-letters="text" />  </a></template><script>export default {  props: {    className: {      type: String,      default: ''    },    text: {      type: String,      default: 'vue-element-admin'    }  }}</script><style>/* Mallki */.link--mallki {  font-weight: 800;  color: #4dd9d5;  font-family: 'Dosis', sans-serif;  -webkit-transition: color 0.5s 0.25s;  transition: color 0.5s 0.25s;  overflow: hidden;  position: relative;  display: inline-block;  line-height: 1;  outline: none;  text-decoration: none;}.link--mallki:hover {  -webkit-transition: none;  transition: none;  color: transparent;}.link--mallki::before {  content: '';  width: 100%;  height: 6px;  margin: -3px 0 0 0;  background: #3888fa;  position: absolute;  left: 0;  top: 50%;  -webkit-transform: translate3d(-100%, 0, 0);  transform: translate3d(-100%, 0, 0);  -webkit-transition: -webkit-transform 0.4s;  transition: transform 0.4s;  -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);  transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);}.link--mallki:hover::before {  -webkit-transform: translate3d(100%, 0, 0);  transform: translate3d(100%, 0, 0);}.link--mallki span {  position: absolute;  height: 50%;  width: 100%;  left: 0;  top: 0;  overflow: hidden;}.link--mallki span::before {  content: attr(data-letters);  color: red;  position: absolute;  left: 0;  width: 100%;  color: #3888fa;  -webkit-transition: -webkit-transform 0.5s;  transition: transform 0.5s;}.link--mallki span:nth-child(2) {  top: 50%;}.link--mallki span:first-child::before {  top: 0;  -webkit-transform: translate3d(0, 100%, 0);  transform: translate3d(0, 100%, 0);}.link--mallki span:nth-child(2)::before {  bottom: 0;  -webkit-transform: translate3d(0, -100%, 0);  transform: translate3d(0, -100%, 0);}.link--mallki:hover span::before {  -webkit-transition-delay: 0.3s;  transition-delay: 0.3s;  -webkit-transform: translate3d(0, 0, 0);  transform: translate3d(0, 0, 0);  -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);  transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);}</style>
 |