前提・実現したいこと
web上のポスター作成アプリを作っています。
発生している問題・エラーメッセージ
powerpointなどのように、入力したテキストの色を変えられる機能を搭載したいです。
<font color = "ここを選択できる"></font> このような形になるのではないかと予測しました。
![
該当のソースコード
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>poster-create</title> <link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> <script src = "/send_url.js"></script> </head> <body> <header> <div class="container"> <div class="header-left"> </div> <div class="header-right"> <div id="humMenu"> <input id="humCheck" type="checkbox"> <label id="humOpen" for="humCheck"><span class = "fa fa-bars fa-2x"></span></label> <label id="humClose" for="humCheck"></label> <nav> <ul class="inner"> <li><a href="/">TOP</a></li> <li><a href="#">みる</a></li> <li><a href="#">・</a></li> <li><a href="#">・</a></li> <li><a href="#">・</a></li> </ul> </nav> </div> </div> </div> </header> <div class="action-wrapper"> <!-- <div id="sidebar"> <aside> <h3>制作順序</h3> <ul> <li>1.モデル選択</li> <li>2.テキスト挿入</li> <li>3.テキストの彩色</li> <li>4.画像挿入&保存</li> <li>5.お疲れ様でした</li> </ul> </aside> </div> --> <div class="container"> <div class="heading"> <h2>モデルをカスタマイズしよう。</h2> </div> <div class="edit"> <div style="margin-bottom: 1em"> <div class="FileBtn"> YOUR FILE <input type="file" id = "input"> </div> </div> <div> <img id="img"> </div> <script type="text/javascript"> document.querySelector('#input').addEventListener('change', (event) => { const file = event.target.files[0] // fileがundefinedの時にreader.readAsDataURL(file)がエラーになるため、 // !fileがfalseの場合にreturnする。 if (!file) return const reader = new FileReader() reader.onload = (event) => { document.querySelector('#img').src = event.target.result } reader.readAsDataURL(file) }) </script> <div class="stuff"> <div class="textBox"> <input class="text" id = "a" type="textbox" onkeyup="this.setAttribute('value', this.value);" value=""/> <input class="text" id = "b" type="textbox" onkeyup="this.setAttribute('value', this.value);" value=""/> <input class="text" id = "c" type="textbox" onkeyup="this.setAttribute('value', this.value);" value=""/> </div> </div> <canvas id="rectangle" width="700" height="550"></canvas> <script type="text/javascript"> //読み込み時に実行する onload = function() { /* 四角を描く */ var rect_canvas = document.getElementById("rectangle"); var rect_ctx = rect_canvas.getContext("2d"); var rect_up = rect_canvas.getContext("2d"); var rect_down = rect_canvas.getContext("2d"); rect_ctx.beginPath(); rect_up.beginPath(); rect_down.beginPath(); // 四角を描く(A4サイズ) rect_ctx.strokeRect(55, 20, 584.5, 413.5); rect_up.fillRect(95, 163, 500, 15); rect_down.fillRect(95, 288, 500, 15); } </script> </div> <div> <a href = "/poster-model-select" class="back">戻る</a> <a href = "#" class="save">保存</a> <a href = "/poster-finish" class = "next">次へ</a> </div> </div> </div> </body> </html>
<canvas id="rectangle" width="700" height="550"></canvas> <script type="text/javascript"> //読み込み時に実行する onload = function() { /* 四角を描く */ var rect_canvas = document.getElementById("rectangle"); var rect_ctx = rect_canvas.getContext("2d"); var rect_up = rect_canvas.getContext("2d"); var rect_down = rect_canvas.getContext("2d"); rect_ctx.beginPath(); rect_up.beginPath(); rect_down.beginPath(); // 四角を描く(A4サイズ) rect_ctx.strokeRect(55, 20, 584.5, 413.5); rect_up.fillRect(95, 163, 500, 15); rect_down.fillRect(95, 288, 500, 15); window.addEventListener('DOMContentLoaded', ()=>{ document.querySelector('#btn').addEventListener('click',()=>{ const ctx = document.getElementById('rectangle').getContext('2d'); ctx.font = "48px serif"; ctx.fillStyle = document.querySelector('#color').value; ctx.fillText(document.querySelector('.text').value, 10, 50); }); }); } </script> <div class="stuff"> <div class="textBox"> <input class="text" id = "a" type="text" onkeyup="this.setAttribute('value', this.value);" value=""/> <input class="text" id = "b" type="text" onkeyup="this.setAttribute('value', this.value);" value=""/> <input class="text" id = "c" type="text" onkeyup="this.setAttribute('value', this.value);" value=""/> </div> </div> <select id="color"> <option value="black">黒</optioin> <option value="red">赤</optioin> <option value="blue">青</optioin> <option value="yellow">黄色</optioin> </select> <input type="button" id="btn" value="テキスト設定"><br>
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/22 02:58 編集
2021/12/22 03:06
2021/12/22 03:25
2021/12/22 03:34 編集
2021/12/22 03:51 編集
2021/12/22 03:57 編集
2021/12/22 04:07 編集