Oll*_*nes 5 javascript jquery html5 html5-canvas
基本上我在我的页面上有几个画布图,我想要发生的是当jquery函数被激活时,画布图改变为我选择的颜色.我假设它涉及访问context.fillStyle的某种方式,它定义了原始颜色,但我不确定如何改变它.另外,是否可以在第一个实例中为画布绘制css样式,然后在处理jquery时更改该样式?
HTML
<canvas class="canvaslink" id="canvasId" width="50" height="50"></canvas>
<canvas class="canvaslink" id="canvasId2" width="50" height="50"></canvas>
Run Code Online (Sandbox Code Playgroud)
画布脚本
<script>
function drawSomething(canvas) {
var context = canvas.getContext("2d");
var width = 125; // Triangle Width
var height = 45; // Triangle Height
var padding = 5;
// Draw a path
context.beginPath();
context.moveTo(padding + width-125, height + padding); // Top Corner
context.lineTo(padding + width-90,height-17 + padding); // point
context.lineTo(padding, height-35 + padding); // Bottom Left
context.closePath();
// Fill the path
context.fillStyle = "#9ea7b8";
context.fill();
}
drawSomething(document.getElementById("canvasId"));
drawSomething(document.getElementById("canvasId2"));
</script>
Run Code Online (Sandbox Code Playgroud)
Jquery脚本
<script>
var counter = $('#counter div strong');
var counterH2 = $('h2 strong');
$('#box').click(function(){
$("#counter").css("display", "block");
var counterValue = counter.text();
counterValue = ++counterValue;
counter.text(counterValue);
counterH2.text(counterValue);
if (counterValue == 3){
alert("Thanks for visiting!");
$('body').css({"background-color":"#9ea7b8"});
$('body').css({"color":"#11112c"});
**//I'd like to change the canvas colour here!**
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
非常感谢
Dav*_*vid 14
这很简单:
document.getElementById("ID").style.background = 'color';
Run Code Online (Sandbox Code Playgroud)
Oll*_*nes -4
如果这有任何用处,这是我最终得到的解决方案:
首先是 HTML:
<canvas class="canvaslink" id="canvasId" width="50" height="50"></canvas>
<canvas class="canvaslink" id="canvasIda" width="50" height="50"></canvas>
<canvas class="canvaslink" id="canvasId2" width="50" height="50"></canvas>
<canvas class="canvaslink" id="canvasId2a" width="50" height="50"></canvas>
Run Code Online (Sandbox Code Playgroud)
我创建了重复的画布元素,并使用 CSS 来隐藏它们:
CSS:
#canvasIda, canvasId2a {
display:none;
}
Run Code Online (Sandbox Code Playgroud)
然后我对原来的Jquery脚本做了如下修改:
<script>
var counter = $('#counter div strong');
var counterH2 = $('h2 strong');
$('#box').click(function(){
$("#counter").css("display", "block");
var counterValue = counter.text();
counterValue = ++counterValue;
counter.text(counterValue);
counterH2.text(counterValue);
if (counterValue == 3){
$('body').css({"background-color":"#9ea7b8"});
$('body').css({"color":"#11112c"});
$('a').css({"color":"#11112c"});
//remove the previous canvas elements
element = document.getElementById("canvasId");
element2 = document.getElementById("canvasId2");
element.parentNode.removeChild(element);
element2.parentNode.removeChild(element2);
//function to draw new canvas elements with new desired colour
function drawSomething2(canvas) {
var context = canvas.getContext("2d");
var width = 125; // Triangle Width
var height = 45; // Triangle Height
var padding = 5;
// Draw a path
context.beginPath();
context.moveTo(padding + width-125, height + padding); // Top Corner
context.lineTo(padding + width-90,height-17 + padding); // point
context.lineTo(padding, height-35 + padding); // Bottom Left
context.closePath();
// Fill the path
context.fillStyle = "#11112c";
context.fill();
}
//draw the canvas elements
drawSomething2(document.getElementById("canvasIda"));
drawSomething2(document.getElementById("canvasId2a"));
//display the previously hidden elements containing the new canvas drawings
$('#canvasIda').css({"display":"block"});
$('#canvasId2a').css({"display":"block"});
}
});
Run Code Online (Sandbox Code Playgroud)
我相信很多人都能想出更有效的解决方案,但这确实有效,我没有抱怨。
| 归档时间: |
|
| 查看次数: |
35943 次 |
| 最近记录: |