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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

Q&A

解決済

2回答

2883閲覧

文字をゆっくり表示させるが、特定の文字にだけ余韻を持たせたい。

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2018/12/03 12:54

編集2018/12/05 10:48

いつもお世話になっております。

文字をゆっくりと表示させるためのjQueryを使用しているのですが、特定の文字にだけ余韻を持たせたいと考えています。
例えば「そうだ、京都、行こう。」であれば、句読点(、)の場合だけdelayを通常より多くしたいと考えています。
以下のようなコードの場合、句読点を判定するにはどのように指定すればいいでしょうか。

//jQuery $(function() { var $allMsg = $('h1'); var $wordList = $('h1').html().split(""); $('h1').text(""); $.each($wordList, function(idx, elem) { var newEL = $("<span/>").text(elem).css({ opacity: 0 }); newEL.appendTo($allMsg); newEL.delay(idx * 100);      newEL.animate({ opacity: 1 }, 1100); }); }); <!--html--> <h1>そうだ 京都、行こう。</h1>

また、まったく違った指定方法でも同じように動作するのものであれば構いません。
この指定方法だとすべて一定速度で表示されるため、どうにかして余韻を持たせられないかと試行錯誤しておりました。
どなたか教えて頂けると嬉しいです。

--追記

if文で指定したエレメントにdelayを増やすことはできましたが、続く要素が先に表示されてしまい、うまく余韻が持たせられない状態です。
現状は「そうだ京都行こう。」が先に表示され、句読点である「、」が最後にちょん、ちょん、と表示される状態です。
「そうだ、」で余韻1つ、「京都、」でまた余韻1つ、最後に「行こう。」で終わらせる方法を探しています。

どうぞよろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

↓ここが参考になるのでは。
テキストを1文字ずつフェードインさせる方法 - Qiita
elemに文字が入っていると思うのですが、何か障害がありますか?

コメントを受けて追記

delay()メソッドは、カッコの中の数字分だけアニメーションを遅らせる効果があります。
なので、句読点の場合だけ遅らせるには、カッコの中の数字を大きくすればいいです。

js

1$(function() { 2 var $allMsg = $('h1'); 3 var $wordList = $('h1').html().split(""); 4 $('h1').text(""); 5 $.each($wordList, function(idx, elem) { 6 var newEL = $("<span/>").text(elem).css({ opacity: 0 }); 7 newEL.appendTo($allMsg); 8 newEL.delay(idx * 100); 9 if (elem=='、') newEL.delay(1000); // ここ 10     newEL.animate({ opacity: 1 }, 1100); 11 }); 12});

コメントを受けて追記

遅延時間を累計すればいいと思いますよ。

js

1$(function() { 2 var $allMsg = $('h1'); 3 var $wordList = $('h1').html().split(""); 4 $('h1').text(""); 5 var i = 0; 6 $.each($wordList, function(idx, elem) { 7 var newEL = $("<span/>").text(elem).css({ opacity: 0 }); 8 newEL.appendTo($allMsg); 9 i += 100; 10 if (elem=='、') i += 1000; 11 newEL.delay(i); 12     newEL.animate({ opacity: 1 }, 1100); 13 }); 14});

投稿2018/12/03 12:58

編集2018/12/05 11:21
Lhankor_Mhy

総合スコア36115

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

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

退会済みユーザー

退会済みユーザー

2018/12/03 13:09

コメントありがとうございます。 はい、こちらの記事を参考にさせていただきました。 しかし、このコードで作動するのですが、句読点に差し掛かったときにだけ通常よりも遅延させたいと考えています。
Lhankor_Mhy

2018/12/03 13:13

繰り返しになりますが、elemに文字が入っていると思います。 そちらではダメでしたか? どのような問題が発生していますか?
退会済みユーザー

退会済みユーザー

2018/12/03 14:04 編集

こちらのコードは問題なく作動しておりすべての要素(文字)がspanで囲われております。 問題が発生しているのではありませんが、spanの内容が句読点<span>、</span>のときにだけ、より余韻を持たせて(delayを増やして)動作させる方法を探しています。
Lhankor_Mhy

2018/12/03 15:14

何度も繰り返して申し訳ないのですが、elemに文字が入っています。 当方では、elemを参照してdelayを大きくする方法で句読点だけ遅れて表示できることを確認しています。特段の問題を感じませんでした。 どうも、私と質問者では問題の認識に齟齬があるようです。繰り返しになりますが、現状で起きている具体的な問題をご提示いただけますか?
退会済みユーザー

退会済みユーザー

2018/12/05 08:45

なんどもお答えいただいて申し訳ないです。 もしかしたら、そのelemを参照する方法が僕には分からないのかもしれません。 具体的なコードがありましたら記入していただけると助かります。
Lhankor_Mhy

2018/12/05 09:06

if (elem=='、') { ... } のように書けばいいのかと思います。 これで分かりますでしょうか? ご質問者がご提示のコードを理解されている前提で回答申し上げていますが、そうではなくて意味が分からないコードをコピペしているだけなのであれば、もう少し丁寧に回答しますのでその旨をお知らせください。
退会済みユーザー

退会済みユーザー

2018/12/05 09:17

ありがとうございます!
退会済みユーザー

退会済みユーザー

2018/12/05 09:44

elemは参照できましたが、句読点で動きが止まってしまいました。 Lhankor_Mhyさんの方ではどのように指定されたのでしょうか? 分からないので詳しく教えていただけると嬉しいです。
退会済みユーザー

退会済みユーザー

2018/12/05 10:44

詳細にありがとうございます。 elemの取得とif文とdelayメソッドについての認識が深まりました。 度々申し訳ないのですが、この指定方法ですと「そうだ 京都 行こう。」が先に表示されてから、句読点がちょん、ちょん、と表示されるようになります。 「そうだ、」で余韻1つ、「京都、」でもう1つ、最後に「行こう。」で終わらせようと試してみましたが上手くいかずです。 また今回の場合ですと「、」や「う」が重複しているため、それぞれのエレメントごとに指定を分ける方法も試しましたが上手く動作しませんでした。 この場合ですとif文による指定方法を工夫する必要があるでしょうか? delayさせた要素が完了するまで、次の要素を表示させない方法はありますでしょうか。 長くなりましたが、お答えいただけますと嬉しいです。
退会済みユーザー

退会済みユーザー

2018/12/05 11:31

素晴らしい…このくらいはちゃちゃっと出来るように頑張ります。 長い間お付き合い頂いて本当に、本当に、本当にありがとうございました。
guest

0

$(function() {
var $allMsg = $('h1');
var $wordList = $('h1').html().split("");
$('').text("");

var i = 0; $.each($wordList, function(idx, elem) { var newEL = $("<span/>").text(elem).css({ opacity: 0 }); newEL.appendTo($allMsg); i += 200;

       if (elem=='京') i += 1000;
if (elem=='行') i += 1000;
newEL.delay(i);
newEL.animate({ opacity: 1 }, 1100);
});
});

投稿2018/12/05 11:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Lhankor_Mhy

2018/12/06 00:51

句読点の次の文字を遅らせたいなら、 i += 200; newEL.delay(i); if (elem=='、') i += 1000; とした方が、わかりやすいですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問