gpt4 book ai didi

html - 悬停时使用动画颜色填充文本颜色动画

转载 作者:太空狗 更新时间:2023-10-29 12:30:10 24 4
gpt4 key购买 nike

我想在将鼠标悬停在标题上时填充标题的文本颜色,但文本总是会改变颜色,而且我不知道/认为你可以将背景的一部分设置为一种颜色,而另一种颜色不断变化.我添加了实现悬停但没有过渡的代码。

:root {
--txt-color: #fff;
--txt-box-bg: #424242;
--main-bg: #000;
/* front page title text */
--main-front-color: #00a8ff;
--second-front-color: #e84118;
--third-front-color: #fbc531;
}

* {
margin: 0px;
padding: 0px;
}


/* Text */

.head-text {
font-family: "IBM Plex Sans", sans-serif;
color: var(--txt-color);
}

.main-text {
font-family: "IBM Plex Mono" monospace;
color: var(--txt-color);
}


/* Allgin */

.center {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}


/* classes */

.front-page {
background-color: var(--main-bg);
color: #000;
animation: text-rainbow 13s linear infinite;
}

.full-page {
background-size: cover;
height: 100vh;
}


/* IDs */

#title-text {
position: absolute;
color: var(--main-bg);
font-weight: bold;
text-align: center;
font-size: 90px;
-webkit-text-stroke: 2px var(--main-front-color);
animation: stroke-rainbow 13s linear infinite;
}

#title-text:hover {
color: inherit;
}

@keyframes stroke-rainbow {
0% {
border-color: var(--main-front-color);
-webkit-text-stroke-color: var(--main-front-color);
}
25% {
border-color: var(--second-front-color);
-webkit-text-stroke-color: var(--second-front-color);
}
50% {
border-color: var(--third-front-color);
-webkit-text-stroke-color: var(--third-front-color);
}
75% {
border-color: var(--second-front-color);
-webkit-text-stroke-color: var(--second-front-color);
}
100% {
border-color: var(--main-front-color);
-webkit-text-stroke-color: var(--main-front-color);
}
}

@keyframes text-rainbow {
0% {
color: var(--main-front-color);
}
25% {
color: var(--second-front-color);
}
50% {
color: var(--third-front-color);
}
75% {
color: var(--second-front-color);
}
100% {
color: var(--main-front-color);
}
}
<div class="front-page full-page">
<span id="title-text" class="center head-text">Hi</span>
</div>

What I want

/* REQUIRES FALLBACK FOR FIREFOX */
* {
box-sizing: border-box;
}

html, body {
height: 100%;
}

nav {
display: flex;
height: 100%;
}

nav ul {
align-self: center;
}

a {
font: 300 42px/1.5 "Helvetica Neue", sans-serif;
margin-left: 80px;
color: #d7a150;
text-decoration: none;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-image: linear-gradient(to right, #283271, #283271 50%, #d7a150 50%);
background-size: 200% 100%;
background-position: 100%;
}

a:hover {
transition: all 0.3s cubic-bezier(0, 0, 0.23, 1);
background-position: 0%;
}
<nav>
<ul>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>

最佳答案

你可以考虑一个背景动画,你可以很容易地实现它。这个想法是使用 background-color 为文本着色然后有另一个背景层将在悬停时显示/显示这种着色:

:root {
--txt-color: #fff;
--txt-box-bg: #424242;
--main-bg: #000;
/* front page title text */
--main-front-color: #00a8ff;
--second-front-color: #e84118;
--third-front-color: #fbc531;
}

* {
margin: 0px;
padding: 0px;
}


/* Text */

.head-text {
font-family: "IBM Plex Sans", sans-serif;
color: var(--txt-color);
}

.main-text {
font-family: "IBM Plex Mono" monospace;
color: var(--txt-color);
}


/* Allgin */

.center {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}


/* classes */

.front-page {
background-color: var(--main-bg);
color: #000;
}

.full-page {
background-size: cover;
height: 100vh;
}


/* IDs */

#title-text {
position: absolute;
/*Color the text with background*/
background-clip: text;
color: transparent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
/**/
/*The animated layer*/
background-image:linear-gradient(#000,#000);
background-size:100% 100%;
background-position:right;
background-repeat:no-repeat;
/**/
transition:1s all;
font-weight: bold;
text-align: center;
font-size: 90px;
-webkit-text-stroke: 2px var(--main-front-color);
animation: stroke-rainbow 13s linear infinite,
text-rainbow 13s linear infinite;
}

#title-text:hover {
background-size:0% 100%;
}

@keyframes stroke-rainbow {
0% {
border-color: var(--main-front-color);
-webkit-text-stroke-color: var(--main-front-color);
}
25% {
border-color: var(--second-front-color);
-webkit-text-stroke-color: var(--second-front-color);
}
50% {
border-color: var(--third-front-color);
-webkit-text-stroke-color: var(--third-front-color);
}
75% {
border-color: var(--second-front-color);
-webkit-text-stroke-color: var(--second-front-color);
}
100% {
border-color: var(--main-front-color);
-webkit-text-stroke-color: var(--main-front-color);
}
}

@keyframes text-rainbow {
0% {
background-color: var(--main-front-color);
}
25% {
background-color: var(--second-front-color);
}
50% {
background-color: var(--third-front-color);
}
75% {
background-color: var(--second-front-color);
}
100% {
background-color: var(--main-front-color);
}
}
<div class="front-page full-page">
<span id="title-text" class="center head-text">Hi</span>
</div>

关于html - 悬停时使用动画颜色填充文本颜色动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53177191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com