Heim > Web-Frontend > CSS-Tutorial > Hauptteil

So erzielen Sie mit CSS und D3 einen herzförmigen Animationseffekt aus Text (mit Code)

不言
Freigeben: 2018-08-18 11:10:30
Original
2587 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung von CSS und D3, um einen herzförmigen Animationseffekt aus Text zu erzielen (mit Code). Freunde in Not können sich darauf beziehen es hilft.

Effektvorschau

So erzielen Sie mit CSS und D3 einen herzförmigen Animationseffekt aus Text (mit Code)

Quellcode-Download

https:/ /github.com/comehope/front-end-daily-challenges

Codeinterpretation

Dom definieren, der Container enthält 3 Unterelemente, eines in jedem Unterelement Element Wort:

<div>
    <span>aaa</span>
    <span>bbb</span>
    <span>ccc</span>
</div>
Nach dem Login kopieren

Zentrierte Anzeige:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: black;
}
Nach dem Login kopieren

Containergröße definieren:

.love {
    width: 450px;
    height: 450px;
}
Nach dem Login kopieren

Textstil festlegen:

.love {
    position: relative;
}

.love span {
    position: absolute;
    left: 0;
    color: goldenrod;
    font-size: 20px;
    font-family: sans-serif;
    text-shadow: 0 0 1em white;
}
Nach dem Login kopieren

Animation der Textbewegung nach links und definieren rechts:

.love span {
    animation: x-move 10s ease-in-out infinite alternate;
}

@keyframes x-move {
    to {
        left: 450px;
    }
}
Nach dem Login kopieren

Definieren Sie die Indexvariable des Unterelements und stellen Sie die Animationsverzögerung so ein, dass jedes Wort der Reihe nach eingeht:

.love {
    --particles: 3;
}

.love span {
    animation-delay: calc(20s / var(--particles) * var(--n) * -1);
}

.love span:nth-child(1) {
    --n: 1;
}

.love span:nth-child(2) {
    --n: 2;
}

.love span:nth-child(3) {
    --n: 3;
}
Nach dem Login kopieren

Fügen Sie den Animationseffekt von Text hinzu, der sich entlang der Herzform bewegt:

.love span {
    animation: 
        x-move 10s ease-in-out infinite alternate,
        y-move 20s linear infinite;
}

@keyframes y-move {
    0% { transform: translateY(180px); }
    10% { transform: translateY(45px); }
    15% { transform: translateY(5px); }
    18% { transform: translateY(0); }
    20% { transform: translateY(5px); }
    22% { transform: translateY(35px); }
    24% { transform: translateY(65px); }
    25% { transform: translateY(110px); }
    26% { transform: translateY(65px); }
    28% { transform: translateY(35px); }
    30% { transform: translateY(5px); }
    32% { transform: translateY(0); }
    35% { transform: translateY(5px); }
    40% { transform: translateY(45px); }
    50% { transform: translateY(180px); }
    71% { transform: translateY(430px); }
    72.5% { transform: translateY(440px); }
    75% { transform: translateY(450px); }
    77.5% { transform: translateY(440px); }
    79% { transform: translateY(430px); }
    100% { transform: translateY(180px); }
}
Nach dem Login kopieren

Als nächstes verwenden Sie d3, um Dom-Elemente und CSS-Variablen stapelweise zu verarbeiten.
Stellen Sie die d3-Bibliothek vor:

<script></script>
Nach dem Login kopieren

Deklarieren Sie ein Array mit mehreren Wörtern:

const words = ['aaa', 'bbb', 'ccc'];
Nach dem Login kopieren

Verwenden Sie d3, um Dom-Elemente zu erstellen:

d3.select('.love')
    .selectAll('span')
    .data(words)
    .enter()
    .append('span')
    .text((d) => d);
Nach dem Login kopieren

Verwenden Sie d3, um Werte zuzuweisen zu CSS-Variablen:

d3.select('.love')
    .style('--particles', words.length)
    .selectAll('span')
    .data(words)
    .enter()
    .append('span')
    .style('--n', (d, i) => i + 1)
    .text((d) => d);
Nach dem Login kopieren

Löschen Sie die relevanten Dom-Elemente in der HTML-Datei und die relevanten CSS-Variablen in der CSS-Datei.

Ändern Sie die Array-Elemente in das Wort „love“ in verschiedenen Sprachen:

const words = [
    '愛', 'Love', 'Amour', 'Liebe', 'Amore',
    'Amor', 'Любовь', 'الحب', 'प्यार', 'Cinta',
    'Αγάπη', '사랑', 'Liefde', 'Dashuri', 'Каханне',
    'Ljubav', 'Láska', 'Armastus', 'Mahal', 'אהבה', 
    'Szerelem', 'Grá', 'Mīlestība', 'Meilė', 'Любов', 
    'Љубовта', 'Cinta', 'عشق', 'Dragoste', 'Láska', 
    'Renmen', 'ፍቅር', 'munaña', 'Sevgi', 'Љубав', 
    'karout', 'amà', 'amôr', 'kærleiki', 'mborayhu', 
    'Upendo', 'sòòyayyàà', 'ljubav', 'Սեր', 'сүю', 
    'сүйүү', 'tia', 'aroha', 'KHAIR', 'प्रेम', 
    'kjærlighet', 'munay', 'jecel', 'Kärlek', 'soymek', 
    'Mahal', 'ярату', 'محبت', 'sopp', 'uthando', 
    'ความรัก', 'Aşk', 'Tình yêu', 'ליבע'];
Nach dem Login kopieren

Legen Sie abschließend einen speziellen Textstil für das erste Wort fest:

.love span:first-child {
    color: orangered;
    font-size: 3em;
    text-shadow: 
        0 0 0.1em black,
        0 0 1em white;
    z-index: 1;
}
Nach dem Login kopieren

Verwandte Empfehlungen:

So verwenden Sie CSS und D3, um einen überlappenden Schwarz-Weiß-Animationseffekt zu erzielen

So verwenden Sie reines CSS, um einen Animationseffekt ohne DOM-Elemente zu erzielen

So verwenden Sie reines CSS, um einen bewegten Animationseffekt für weiße Kaninchen zu erzielen

Das obige ist der detaillierte Inhalt vonSo erzielen Sie mit CSS und D3 einen herzförmigen Animationseffekt aus Text (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!