質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1191閲覧

【javascript 】IntersectionObserverで文字が表示されない

moriyuu

総合スコア5

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/06/20 02:28

文字が順番に表示できるアニメーションを作成していたのですが見本と見比べてもどこが間違ってるのかわかりません

どなたかわかる方ご教授よろしくお願いいたします

【HTML】

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css2?family=Teko:wght@500&display=swap" rel="stylesheet"> <link rel="stylesheet" href="style.css"> <title>Document</title> </head> <body> <section>
<div class="animate-title"> where you are.</div> </section> <section> <div class="animate-title">Use what you have.</div> </section> <section> <div class="animate-title">Do what you can.</div> </section> <script src="text-animation.js"></script> <script src="main.js"></script>
</body> </html>

【SCSS】

@import "mixin";

html {
font-family: "Teko", sans-serif;
}

body {
margin: 0;
}

section {
position: relative;
height: 100vh;
background-color: teal;

&:nth-child(2) {
background-color: rgb(138, 43, 201);
}
&:nth-child(3) {
background-color: orange;
}
}

.animate-title,
.tween-animate-title {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
opacity: 0;
font-size: 2em;

&.inview {
opacity: 1;

& .char { display: inline-block; }

}

& .char {
opacity: 0;
}
}

.animate-title.inview .char {
@include animation(
$name: kf-animate-chars,
$duration: 0.5s,
$timing-function: cubic-bezier(0.39, 1.57, 0.58, 1),
$fill-mode: both
);

@for $i from 1 through 30 {
&:nth-child(#{$i}) {
animation-delay: $i * 0.04s;
}
}
}

@keyframes kf-animate-chars {
0% {
opacity: 0;
transform: translateY(-50%);
}

100% {
opacity: 1;
transform: translateY(0);
}
}

【javascript (text-animation.js)】

class TextAnimation {
constructor(el) {
this.DOM = {};
this.DOM.el = el instanceof HTMLElement ? el : document.querySelector(el);
this.chars = this.DOM.el.innerHTML.trim().split("");
this.DOM.el.innerHTML = this._splitText();
}
_splitText() {
return this.chars.reduce((acc, curr) => {
curr = curr.replace(/\s+/, ' ');
return ${acc}<span class="char">${curr}</span>;
}, "");
}
animate() {
this.DOM.el.classList.toggle('inview');
}
}
class TweenTextAnimation extends TextAnimation {
constructor(el) {
super(el);
this.DOM.chars = this.DOM.el.querySelectorAll('.char');
}

animate() { this.DOM.el.classList.add('inview'); this.DOM.chars.forEach((c, i) => { TweenMax.to(c, .6, { ease: Back.easeOut, delay: i * .05, startAt: { y: '-50%', opacity: 0}, y: '0%', opacity: 1 }); }); }

}

【javascript (main.js)】

document.addEventListener('DOMContentLoaded', function () {
const cb = function (el, isIntersecting) {
if(isIntersecting) {
const ta = new TextAnimation(el);
ta.animate();
}
}
});

const so = new ScrollObserver('.animate-title', cb);

class ScrollObserver {
constructor(els, cb, options) {
this.els = document.querySelectorAll(els);
const defaultOptions = {
root: null,
rootMargin: '0px',
threshold: 0,
};
this.cb = cb;
this.options = Object.assign(defaultOptions, options);
this._init();
}//constructor
_init() {
const callback = function (entries, observer){
entries.forEach(entry => {
if(entry.isIntersecting) {
this.cb(entry.target, true);
observer.unobserve(entry.target);
}else {
this.cb(entry.target, false);
}
});
};
const io = new IntersectionObserver(callback.bind(this), this.options);
this.els.forEach(el => io.observe(el));
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

runnynose

2021/06/20 02:44

コードブロックを活用するだけで回答率上がると思いますよ! (クリップボードのコピー機能がつくので) エンジニア目指されているようだったので、アドバイスすると、IT業界はこういう気遣いが結構大事なのです^^
moriyuu

2021/06/20 20:51

runnynoseさん! ご教授ありがとうございます! 早速コードブロック使ってみました
Lhankor_Mhy

2021/06/21 01:57

編集が反映されていないようです。
guest

回答1

0

ベストアンサー

文法エラー出てませんか?

js

1document.addEventListener('DOMContentLoaded', function () { 2 const cb = function (el, isIntersecting) { 3 if (isIntersecting) { 4 const ta = new TextAnimation(el); 5 ta.animate(); 6 } 7 } 8}); // これは末尾では? 9 10const so = new ScrollObserver('.animate-title', cb); // これは宣言の後では? 11

投稿2021/06/21 01:56

Lhankor_Mhy

総合スコア36142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moriyuu

2021/06/21 12:22

Lhankor_Mhyさん ありがとうございます! うまく実装できました! Lhankor_Mhyさんの 貴重な時間を割いていただき 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問