簡體   English   中英

如何在懸停時更改SVG的筆觸顏色?

[英]How to change stroke color of SVG on hover?

我有一個帶有svg徽標和繪圖動畫的網頁。

我想將懸停時的筆觸顏色從綠色更改為白色以實現此目的嗎?

我的徽標是“ V”形SVG

我想使用CSS在鼠標懸停時將筆划破折號顏色從綠色更改為白色

我嘗試添加div元素並向其添加懸停,但是它根本沒有用,任何幫助都將非常有用。

PS如果全屏查看會更好

 var words = document.getElementsByClassName('word'); var wordArray = []; var currentWord = 0; for (var i = 0; i < words.length; i++) { splitLetters(words[i]); } function changeWord() { var cw = wordArray[currentWord]; var nw = currentWord == words.length-1 ? wordArray[0] : wordArray[currentWord+1]; for (var i = 0; i < cw.length; i++) { animateLetterOut(cw, i); } for (var i = 0; i < nw.length; i++) { nw[i].className = 'letter behind'; nw[0].parentElement.style.opacity = 1; animateLetterIn(nw, i); } currentWord = (currentWord == wordArray.length-1) ? 0 : currentWord+1; } function animateLetterOut(cw, i) { setTimeout(function() { cw[i].className = 'letter out'; }, i*80); } function animateLetterIn(nw, i) { setTimeout(function() { nw[i].className = 'letter in'; }, 340+(i*80)); } function splitLetters(word) { var content = word.innerHTML; word.innerHTML =''; var letters = []; for (var i = 0; i < content.length; i++) { var letter = document.createElement('span'); letter.className = 'letter'; var char = content.charAt(i); if(char === " ") letter = document.createElement('br'); else letter.innerHTML = char; word.appendChild(letter); letters.push(letter); } wordArray.push(letters); } changeWord(); setInterval(changeWord, 4000); var i = 0; var txt = 'Hi , '; var speed = 100; function typeWriter() { if (i < txt.length) { document.getElementById("demo").innerHTML += txt.charAt(i); i++; setTimeout(typeWriter, speed); } } typeWriter() var j = 0; var txt1 = 'I\\'m Vivank a ,'; var speed = 100; function typeWriter1() { if (j < txt1.length) { document.getElementById("demo1").innerHTML += txt1.charAt(j); j++; setTimeout(typeWriter1, speed); } } typeWriter1() 
 :root { --mainColor: #fff; } body{ background-color: #252627; margin: 0px; width: 100%; height: 100%; overflow: hidden; } .page{ width: 100%; height: 100%; position: absolute; } .bglogo{ position: absolute; top:20%; right: 15vh; height: 65vh; width: 65vh; z-index: 0; } .home-page{ width: 100%; will-change: contents; height: 90%; min-height: 566px; position: absolute; opacity: 1; top: 5%; margin: 0 auto; z-index: 0; -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; transform-style: preserve-3d; } path { fill: #252627; stroke: #00ffdc; animation: my_animation 2s linear forwards, filling .2s linear 2s forwards; stroke-dasharray: 400; /* need to ... */ stroke-dashoffset: 400; /* ... match */ } @keyframes my_animation { to {stroke-dashoffset: 0} } @keyframes filling { to {fill: #ff0046} } @import url(https://fonts.googleapis.com/css?family=Open+Sans:600); body { font-family: 'Open Sans', sans-serif; font-weight: 600; font-size: 40px; } .text { position: absolute; left: 10%; top: 40%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); width: 40%; max-height: 90%; } p { display: inline-block; vertical-align: top; margin: 0; color: white; font-size: 64px; } .word { position: absolute; width: 100%; opacity: 0; white-space: nowrap; } .letter { display: inline-block; position: relative; float: left; transform: translateZ(25px); transform-origin: 50% 50% 25px; } .letter.out { transform: rotateX(90deg); transition: transform 0.32s cubic-bezier(0.55, 0.055, 0.675, 0.19); } .letter.behind { transform: rotateX(-90deg); } .letter.in { transform: rotateX(0deg); transition: transform 0.38s cubic-bezier(0.175, 0.885, 0.32, 1.275); } .wisteria { color: #8e44ad; } .belize { color: #2980b9; } .pomegranate { color: #c0392b; } .green { color: #16a085; } .midnight { color: #003366; } p { color: var(--mainColor); text-decoration: none; } p:hover { color: transparent; -webkit-text-stroke: 2px var(--mainColor); } @supports not(-webkit-text-stroke: 2px red) { p:hover { text-shadow: 3px 3px 0 var(--mainColor), -1px -1px 0 var(--mainColor), 1px -1px 0 var(--mainColor), -1px 1px 0 var(--mainColor), 1px 1px 0 var(--mainColor); } } .top-tags{ bottom: auto; top: 0px; } .tags{ color: #515152; position: absolute; bottom: 0px; left: 80px; font-size: 18px; font-family: 'La Belle Aurore', cursive; } .home-page #demo::before{ content: '<h1>'; font-family: 'La Belle Aurore', cursive; color: #515152; font-size: 18px; position: absolute; margin-top: -35px; } .home-page .word::after{ content: '</h1>'; font-family: 'La Belle Aurore', cursive; color: #515152; font-size: 18px; position: absolute; margin-top: 18px; margin-left: 20px; -webkit-animation: myanim2 1s 1.7s backwards; animation: myanim2 1s 1.7s backwards; } .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ } @keyframes myanim2 { 0% { opacity: 0;} 100% {opacity: 1;} } @-webkit-keyframes myanim2 { 0% { opacity: 0; } 100% {opacity: 1;} } 
 <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Vivank Sharma</title> <link rel="stylesheet" href="css/master.css"> <link rel="stylesheet" href="css/master_responsive.css"> <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> <link href="https://fonts.googleapis.com/css?family=La+Belle+Aurore" rel="stylesheet"> </head> <body class="noselect"> <div class="page"> <div class="bglogo"> <?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 89.999 89.999" style="enable-background:new 0 0 89.999 89.999;" xml:space="preserve"> <g> <path d="M89.551,24.201c-5.029,28.863-33.127,53.301-41.577,58.883c-8.454,5.582-16.163-2.236-18.96-8.148 c-3.201-6.738-12.793-43.285-15.307-46.311C11.195,25.596,3.656,31.65,3.656,31.65L0,26.768c0,0,15.307-18.623,26.957-20.951 c12.35-2.469,12.332,19.318,15.301,31.416c2.873,11.701,4.807,18.398,7.312,18.398c2.514,0,7.311-6.525,12.562-16.531 c5.264-10.016-0.225-18.857-10.505-12.568C55.738,1.395,94.578-4.65,89.551,24.201z" fill="#ff0043"/> </g> </svg> </div> <div class="home-page" style="opacity=1;"> <span class="tags top-tags"> &lt;html&gt;<br> &nbsp;&nbsp;&nbsp;&lt;body&gt; </span> <div class="text"> <p id="demo"></p><br> <p id="demo1"></p> <br> <p> <span class="word wisteria">wonderful developer</span> <span class="word belize">geek developer</span> <span class="word pomegranate">web developer</span> <span class="word green">android developer</span> <span class="word midnight">ML-AI developer</span> </p> </div> <span class="tags bottom-tags"> &nbsp;&nbsp;&nbsp;&lt;/body&gt;<br> &lt;/html&gt; </span> </div> </body> <script type="text/javascript" src="JS/typewriter.js"></script> </html> 

添加此CSS

.bglogo path:hover{
  stroke: #00f;
}
.bglogo{
z-index: 99;
}

 var words = document.getElementsByClassName('word'); var wordArray = []; var currentWord = 0; for (var i = 0; i < words.length; i++) { splitLetters(words[i]); } function changeWord() { var cw = wordArray[currentWord]; var nw = currentWord == words.length-1 ? wordArray[0] : wordArray[currentWord+1]; for (var i = 0; i < cw.length; i++) { animateLetterOut(cw, i); } for (var i = 0; i < nw.length; i++) { nw[i].className = 'letter behind'; nw[0].parentElement.style.opacity = 1; animateLetterIn(nw, i); } currentWord = (currentWord == wordArray.length-1) ? 0 : currentWord+1; } function animateLetterOut(cw, i) { setTimeout(function() { cw[i].className = 'letter out'; }, i*80); } function animateLetterIn(nw, i) { setTimeout(function() { nw[i].className = 'letter in'; }, 340+(i*80)); } function splitLetters(word) { var content = word.innerHTML; word.innerHTML =''; var letters = []; for (var i = 0; i < content.length; i++) { var letter = document.createElement('span'); letter.className = 'letter'; var char = content.charAt(i); if(char === " ") letter = document.createElement('br'); else letter.innerHTML = char; word.appendChild(letter); letters.push(letter); } wordArray.push(letters); } changeWord(); setInterval(changeWord, 4000); var i = 0; var txt = 'Hi , '; var speed = 100; function typeWriter() { if (i < txt.length) { document.getElementById("demo").innerHTML += txt.charAt(i); i++; setTimeout(typeWriter, speed); } } typeWriter() var j = 0; var txt1 = 'I\\'m Vivank a ,'; var speed = 100; function typeWriter1() { if (j < txt1.length) { document.getElementById("demo1").innerHTML += txt1.charAt(j); j++; setTimeout(typeWriter1, speed); } } typeWriter1() 
 :root { --mainColor: #fff; } body{ background-color: #252627; margin: 0px; width: 100%; height: 100%; overflow: hidden; } .page{ width: 100%; height: 100%; position: absolute; } .bglogo{ position: absolute; top:20%; right: 15vh; height: 65vh; width: 65vh; z-index: 99; } .home-page{ width: 100%; will-change: contents; height: 90%; min-height: 566px; position: absolute; opacity: 1; top: 5%; margin: 0 auto; z-index: 0; -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; transform-style: preserve-3d; } path { fill: #252627; stroke: #00ffdc; animation: my_animation 2s linear forwards, filling .2s linear 2s forwards; stroke-dasharray: 400; /* need to ... */ stroke-dashoffset: 400; /* ... match */ } .bglogo path:hover{ stroke: #fff; } @keyframes my_animation { to {stroke-dashoffset: 0} } @keyframes filling { to {fill: #ff0046} } @import url(https://fonts.googleapis.com/css?family=Open+Sans:600); body { font-family: 'Open Sans', sans-serif; font-weight: 600; font-size: 40px; } .text { position: absolute; left: 10%; top: 40%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); width: 40%; max-height: 90%; } p { display: inline-block; vertical-align: top; margin: 0; color: white; font-size: 64px; } .word { position: absolute; width: 100%; opacity: 0; white-space: nowrap; } .letter { display: inline-block; position: relative; float: left; transform: translateZ(25px); transform-origin: 50% 50% 25px; } .letter.out { transform: rotateX(90deg); transition: transform 0.32s cubic-bezier(0.55, 0.055, 0.675, 0.19); } .letter.behind { transform: rotateX(-90deg); } .letter.in { transform: rotateX(0deg); transition: transform 0.38s cubic-bezier(0.175, 0.885, 0.32, 1.275); } .wisteria { color: #8e44ad; } .belize { color: #2980b9; } .pomegranate { color: #c0392b; } .green { color: #16a085; } .midnight { color: #003366; } p { color: var(--mainColor); text-decoration: none; } p:hover { color: transparent; -webkit-text-stroke: 2px var(--mainColor); } @supports not(-webkit-text-stroke: 2px red) { p:hover { text-shadow: 3px 3px 0 var(--mainColor), -1px -1px 0 var(--mainColor), 1px -1px 0 var(--mainColor), -1px 1px 0 var(--mainColor), 1px 1px 0 var(--mainColor); } } .top-tags{ bottom: auto; top: 0px; } .tags{ color: #515152; position: absolute; bottom: 0px; left: 80px; font-size: 18px; font-family: 'La Belle Aurore', cursive; } .home-page #demo::before{ content: '<h1>'; font-family: 'La Belle Aurore', cursive; color: #515152; font-size: 18px; position: absolute; margin-top: -35px; } .home-page .word::after{ content: '</h1>'; font-family: 'La Belle Aurore', cursive; color: #515152; font-size: 18px; position: absolute; margin-top: 18px; margin-left: 20px; -webkit-animation: myanim2 1s 1.7s backwards; animation: myanim2 1s 1.7s backwards; } .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ } @keyframes myanim2 { 0% { opacity: 0;} 100% {opacity: 1;} } @-webkit-keyframes myanim2 { 0% { opacity: 0; } 100% {opacity: 1;} } 
 <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Vivank Sharma</title> <link rel="stylesheet" href="css/master.css"> <link rel="stylesheet" href="css/master_responsive.css"> <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> <link href="https://fonts.googleapis.com/css?family=La+Belle+Aurore" rel="stylesheet"> </head> <body class="noselect"> <div class="page"> <div class="bglogo"> <?xml version="1.0" encoding="iso-8859-1"?> <!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 89.999 89.999" style="enable-background:new 0 0 89.999 89.999;" xml:space="preserve"> <g> <path d="M89.551,24.201c-5.029,28.863-33.127,53.301-41.577,58.883c-8.454,5.582-16.163-2.236-18.96-8.148 c-3.201-6.738-12.793-43.285-15.307-46.311C11.195,25.596,3.656,31.65,3.656,31.65L0,26.768c0,0,15.307-18.623,26.957-20.951 c12.35-2.469,12.332,19.318,15.301,31.416c2.873,11.701,4.807,18.398,7.312,18.398c2.514,0,7.311-6.525,12.562-16.531 c5.264-10.016-0.225-18.857-10.505-12.568C55.738,1.395,94.578-4.65,89.551,24.201z" fill="#ff0043"/> </g> </svg> </div> <div class="home-page" style="opacity=1;"> <span class="tags top-tags"> &lt;html&gt;<br> &nbsp;&nbsp;&nbsp;&lt;body&gt; </span> <div class="text"> <p id="demo"></p><br> <p id="demo1"></p> <br> <p> <span class="word wisteria">wonderful developer</span> <span class="word belize">geek developer</span> <span class="word pomegranate">web developer</span> <span class="word green">android developer</span> <span class="word midnight">ML-AI developer</span> </p> </div> <span class="tags bottom-tags"> &nbsp;&nbsp;&nbsp;&lt;/body&gt;<br> &lt;/html&gt; </span> </div> </body> <script type="text/javascript" src="JS/typewriter.js"></script> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM