質問するログイン新規登録
JavaScript

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

HTML

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

CSS

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

Q&A

解決済

1回答

201閲覧

動画(JavaScriptで連続秒針のように滑らかに回転させる)をぼかし、画像とテキストはぼかさない

noutore

総合スコア15

JavaScript

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2025/08/19 05:17

0

0

実現したいこと

1)動画(time.js)をぼかす
2)動画は連続秒針のように滑らかに回転させる
3)画像とテキストはぼかさない

以前(2024/07/20)、teratailで相談させていただいた「光の三原色が構成するアナログ時計」https://teratail.com/questions/a7buymi3o102tb で動く3つの円(赤・青・緑)の輪郭をぼかし、その上に重ねる画像(title.png)とテキストはぼかしたくない。
2週間、Google検索していろいろと試してみましたができません。
ご教授の程、宜しくお願い致します。

発生している問題・分からないこと

最初JavaScript側で「ばかし」を設定すると動作が重く「連続秒針」にならなかった。
そこで別の方法を考えました。スタイルシートを使用して「ばかし」を設定すると「連続秒針」はできているのですが、「ばかし」たくない画像(title.pngは下記補足に添付)とテキストもボケてします。

エラーメッセージ

error

1エラーメッセージはありません

該当のソースコード

HTML

1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5 6<script type="text/javascript"> 7$(function () { 8 sizing(); 9 $(window).resize(function() { 10 sizing(); 11 }); 12}); 13function sizing(){ 14 .attr({height:$("#wrapper").height()}); 15 .attr({width:$("#wrapper").width()}); 16} 17</script> 18<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.js"></script> 19<script src="time.js"></script> <!-- アナログ時計読み込み --> 20</head> 21 22<body marginheight="0" style="filter:blur(10px);position:relative;z-index:0;background-color: black;"> 23 24<div style="filter:blur(0);position:absolute;z-index:1;margin: 30px auto auto 30px;"><img src="title.png" width="569" height="112"><br> 25テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</div> 26 27</body> 28</html>

time.js

1const circleSize = 640; 2 3function setup() { 4 createCanvas(windowWidth, windowHeight); 5 background(0); 6 noStroke(); 7} 8 9function draw() { 10 translate(width/2, height/2); 11 rotate(-HALF_PI); 12 13 blendMode(BLEND); 14 background(0); 15 blendMode(DIFFERENCE); 16 fill(255); 17 showTime(); 18} 19 20function showTime() { 21 let d = new Date(); 22 let hours = d.getHours(); 23 let minutes = d.getMinutes(); 24 let seconds = d.getSeconds(); 25 let milliseconds = d.getMilliseconds(); 26 //print(hours + ":" + minutes + ":" + seconds + "." + milliseconds); 27 28 let s = seconds + (milliseconds / 1000); 29 let m = minutes + (s / 60); 30 let h = hours + (m / 60); 31 32 push(); 33 fill(0, 0, 255); 34 rotate(h / 12 * TWO_PI); 35 circle(width/5, 0, circleSize); 36 pop(); 37 38 push(); 39 fill(255, 0, 0); 40 rotate(m / 60 * TWO_PI); 41 circle(width/5, 0, circleSize); 42 pop(); 43 44 push(); 45 fill(0, 255, 0); 46 rotate(s / 60 * TWO_PI); 47 circle(width/5, 0, circleSize); 48 pop(); 49}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

1)JavaScriptでは shadowBlur = 3; を試した結果、動作が重くなった
2)スタイルシートでは filter: blur を試した結果、画面全体がボケてしまう

補足

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

bodyではなくcanvasにfiilterすればよいだけでは?

html

1<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.2.0/p5.js"></script> 2<style> 3body{ 4position:relative; 5z-index:0; 6background-color: black; 7} 8canvas{ 9 filter:blur(10px); 10} 11</style> 12<script> 13const circleSize = 640; 14function setup() { 15 createCanvas(windowWidth, windowHeight); 16 background(0); 17 noStroke(); 18} 19 20function draw() { 21 translate(width/2, height/2); 22 rotate(-HALF_PI); 23 24 blendMode(BLEND); 25 background(0); 26 blendMode(DIFFERENCE); 27 fill(255); 28 showTime(); 29} 30 31function showTime() { 32 let d = new Date(); 33 let hours = d.getHours(); 34 let minutes = d.getMinutes(); 35 let seconds = d.getSeconds(); 36 let milliseconds = d.getMilliseconds(); 37 //print(hours + ":" + minutes + ":" + seconds + "." + milliseconds); 38 39 let s = seconds + (milliseconds / 1000); 40 let m = minutes + (s / 60); 41 let h = hours + (m / 60); 42 43 push(); 44 fill(0, 0, 255); 45 rotate(h / 12 * TWO_PI); 46 circle(width/5, 0, circleSize); 47 pop(); 48 49 push(); 50 fill(255, 0, 0); 51 rotate(m / 60 * TWO_PI); 52 circle(width/5, 0, circleSize); 53 pop(); 54 55 push(); 56 fill(0, 255, 0); 57 rotate(s / 60 * TWO_PI); 58 circle(width/5, 0, circleSize); 59 pop(); 60} 61</script> 62<div style="filter:blur(0);position:absolute;z-index:1;margin: 30px auto auto 30px;"> 63<img src="https://placehold.jp/ff0000/00000/569x112.png?text=test"><br> 64テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</div>

投稿2025/08/19 07:47

yambejp

総合スコア118071

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問