2017-01-08 9 views
1

クリックしたときにリンクを持つキャンバスがありますが、キャンバスはボタン全体を覆っていません。これどうやってするの?これは私のキャンバスです:キャンバスカバーを上にするボタン

//Lets create a simple particle system in HTML5 canvas and JS 
 

 
//Initializing the canvas 
 
var canvas = document.getElementById("canvas"); 
 
var ctx = canvas.getContext("2d"); 
 

 
//Canvas dimensions 
 
var W = 500; var H = 500; 
 

 
//Lets create an array of particles 
 
var particles = []; 
 
for(var i = 0; i < 50; i++) 
 
{ 
 
\t //This will add 50 particles to the array with random positions 
 
\t particles.push(new create_particle()); 
 
} 
 

 
//Lets create a function which will help us to create multiple particles 
 
function create_particle() 
 
{ 
 
\t //Random position on the canvas 
 
\t this.x = Math.random()*W; 
 
\t this.y = Math.random()*H; 
 
\t 
 
\t //Lets add random velocity to each particle 
 
\t this.vx = Math.random()*20-10; 
 
\t this.vy = Math.random()*20-10; 
 
\t 
 
\t //Random colors 
 
\t var r = Math.random()*255>>0; 
 
\t var g = Math.random()*255>>0; 
 
\t var b = Math.random()*255>>0; 
 
\t this.color = "rgba("+r+", "+g+", "+b+", 0.5)"; 
 
\t 
 
\t //Random size 
 
\t this.radius = Math.random()*10+10; 
 
} 
 

 
var x = 100; var y = 100; 
 

 
//Lets animate the particle 
 
function draw() 
 
{ 
 
\t //Moving this BG paint code insde draw() will help remove the trail 
 
\t //of the particle 
 
\t //Lets paint the canvas black 
 
\t //But the BG paint shouldn't blend with the previous frame 
 
\t ctx.globalCompositeOperation = "source-over"; 
 
\t //Lets reduce the opacity of the BG paint to give the final touch 
 
\t ctx.fillStyle = "rgba(0, 0, 0, 0.3)"; 
 
\t ctx.fillRect(0, 0, W, H); 
 
\t 
 
\t //Lets blend the particle with the BG 
 
\t ctx.globalCompositeOperation = "lighter"; 
 
\t 
 
\t //Lets draw particles from the array now 
 
\t for(var t = 0; t < particles.length; t++) 
 
\t { 
 
\t \t var p = particles[t]; 
 
\t \t 
 
\t \t ctx.beginPath(); 
 
\t \t 
 
\t \t //Time for some colors 
 
\t \t var gradient = ctx.createRadialGradient(p.x, p.y, 0, p.x, p.y, p.radius); 
 
\t \t gradient.addColorStop(0, "white"); 
 
\t \t gradient.addColorStop(0.4, "white"); 
 
\t \t gradient.addColorStop(0.4, p.color); 
 
\t \t gradient.addColorStop(1, "black"); 
 
\t \t 
 
\t \t ctx.fillStyle = gradient; 
 
\t \t ctx.arc(p.x, p.y, p.radius, Math.PI*2, false); 
 
\t \t ctx.fill(); 
 
\t \t 
 
\t \t //Lets use the velocity now 
 
\t \t p.x += p.vx; 
 
\t \t p.y += p.vy; 
 
\t \t 
 
\t \t //To prevent the balls from moving out of the canvas 
 
\t \t if(p.x < -50) p.x = W+50; 
 
\t \t if(p.y < -50) p.y = H+50; 
 
\t \t if(p.x > W+50) p.x = -50; 
 
\t \t if(p.y > H+50) p.y = -50; 
 
\t } 
 
} 
 

 
setInterval(draw, 33); 
 
//I hope that you enjoyed the tutorial :)
button { 
 
    position: relative; 
 
} 
 

 
#submit { 
 
    position: absolute; 
 
\t left: 0; 
 
\t right: 0; 
 
\t top: 15%; 
 
\t margin-left: auto; 
 
    \t margin-right: auto; 
 
    color: white; 
 
}
<button align=center> 
 
    <canvas width="100" height="25" id="canvas"></canvas> 
 
    <span id="submit">Submit</span> 
 
</button>

私はあなたがボタンの幅と高さを変更すると思うだろうが、私はよく分かりません。助けて?

答えて

1

は、キャンバスの高さ以上のものです:height: 25px;

のような静的な数はここのjsフィドルです。また、ボタンの境界線に沿っていくつかのパディングがあります。ボタンに高さを指定していないため、さまざまなブラウザで異なるボタン高さがレンダリングされることがあります。キャンバスと同じ高さのボタンを作成する必要があります。height: 25px;ボタンからパディングとボーダーを削除します。以下はコードです。それは

//Lets create a simple particle system in HTML5 canvas and JS 
 

 
//Initializing the canvas 
 
var canvas = document.getElementById("canvas"); 
 
var ctx = canvas.getContext("2d"); 
 

 
//Canvas dimensions 
 
var W = 500; var H = 500; 
 

 
//Lets create an array of particles 
 
var particles = []; 
 
for(var i = 0; i < 50; i++) 
 
{ 
 
\t //This will add 50 particles to the array with random positions 
 
\t particles.push(new create_particle()); 
 
} 
 

 
//Lets create a function which will help us to create multiple particles 
 
function create_particle() 
 
{ 
 
\t //Random position on the canvas 
 
\t this.x = Math.random()*W; 
 
\t this.y = Math.random()*H; 
 
\t 
 
\t //Lets add random velocity to each particle 
 
\t this.vx = Math.random()*20-10; 
 
\t this.vy = Math.random()*20-10; 
 
\t 
 
\t //Random colors 
 
\t var r = Math.random()*255>>0; 
 
\t var g = Math.random()*255>>0; 
 
\t var b = Math.random()*255>>0; 
 
\t this.color = "rgba("+r+", "+g+", "+b+", 0.5)"; 
 
\t 
 
\t //Random size 
 
\t this.radius = Math.random()*10+10; 
 
} 
 

 
var x = 100; var y = 100; 
 

 
//Lets animate the particle 
 
function draw() 
 
{ 
 
\t //Moving this BG paint code insde draw() will help remove the trail 
 
\t //of the particle 
 
\t //Lets paint the canvas black 
 
\t //But the BG paint shouldn't blend with the previous frame 
 
\t ctx.globalCompositeOperation = "source-over"; 
 
\t //Lets reduce the opacity of the BG paint to give the final touch 
 
\t ctx.fillStyle = "rgba(0, 0, 0, 0.3)"; 
 
\t ctx.fillRect(0, 0, W, H); 
 
\t 
 
\t //Lets blend the particle with the BG 
 
\t ctx.globalCompositeOperation = "lighter"; 
 
\t 
 
\t //Lets draw particles from the array now 
 
\t for(var t = 0; t < particles.length; t++) 
 
\t { 
 
\t \t var p = particles[t]; 
 
\t \t 
 
\t \t ctx.beginPath(); 
 
\t \t 
 
\t \t //Time for some colors 
 
\t \t var gradient = ctx.createRadialGradient(p.x, p.y, 0, p.x, p.y, p.radius); 
 
\t \t gradient.addColorStop(0, "white"); 
 
\t \t gradient.addColorStop(0.4, "white"); 
 
\t \t gradient.addColorStop(0.4, p.color); 
 
\t \t gradient.addColorStop(1, "black"); 
 
\t \t 
 
\t \t ctx.fillStyle = gradient; 
 
\t \t ctx.arc(p.x, p.y, p.radius, Math.PI*2, false); 
 
\t \t ctx.fill(); 
 
\t \t 
 
\t \t //Lets use the velocity now 
 
\t \t p.x += p.vx; 
 
\t \t p.y += p.vy; 
 
\t \t 
 
\t \t //To prevent the balls from moving out of the canvas 
 
\t \t if(p.x < -50) p.x = W+50; 
 
\t \t if(p.y < -50) p.y = H+50; 
 
\t \t if(p.x > W+50) p.x = -50; 
 
\t \t if(p.y > H+50) p.y = -50; 
 
\t } 
 
} 
 

 
setInterval(draw, 33);
button { 
 
    position: relative; 
 

 
} 
 
button { 
 
    padding: 0px; 
 
    border: 0px; 
 
    margin:0px; 
 
    height:25px; 
 
} 
 

 

 
#submit { 
 
    position: absolute; 
 
\t left: 0; 
 
\t right: 0; 
 
\t top: 15%; 
 
\t margin-left: auto; 
 
    \t margin-right: auto; 
 
    color: white; 
 
}
<button align=center> 
 
    <canvas width="100" height="25" id="canvas"></canvas> 
 
    <span id="submit">Submit</span> 
 
</button>

+0

感謝を役に立てば幸い!私はそれを私の答えとしてマークします! –

+0

なぜそれは中心に整列していませんか? –

+0

私はさまざまなブラウザが異なるレンダリングを持っていると述べました。したがって、独自のスタイルを提供していない場合、ブラウザは自動的にそのデフォルトに応じてボタンをレンダリングします。したがって、それは中心に整列しません。 – Manish

0

ボタン要素にはパディングと境界線があります。

あなたのCSSにこれを追加します。

button { 
padding: 0px; 
border: 0px; 
} 

あなたがボタンの高さを設定する必要がある場合がありますので、あなたはまた、このような状況ではいくつかのブラウザ上のボタンの下にある小さなバーを取得しますあなたのボタンの高さと https://jsfiddle.net/wgsge7b9/

関連する問題