我目前正在使用Javascript,HTML5和CSS3處理類似於http://www.beoplay.com/Products/BeoplayA9#under-the-hood的項目。我設法創建滑塊效果並將加號按鈕添加到多層畫布(4層:底層圖像,頂層圖像,文本顯示和箭頭滑塊)。我的問題是鼠標懸停在加號按鈕上並顯示文字圖層。我需要訪問底層才能訪問加號。我怎樣才能做到這一點?我在Javascript和HTML5方面全新。帆布分層
HTML代碼:
<div id="container">
<div id="arrow_container" ondrop="drop(event)" ondragover="allowDrop(event)">
<div id="arrow_button" draggable="true" ondragstart="drag(event)"></div>
</div>
<span class="text_box"></span>
<canvas id="top_canvas" onmouseover="displayInfo(event)"><img id="img_top" src="images/Technical_ONE_front.jpg" alt="device" /></canvas>
<canvas id="plus_canvas"><img id="img_plus" src="images/Plus.png" alt="plus" /></canvas>
<img id="img_bottom" src="images/Technical_ONE_back.jpg" alt="skeleton" />
</div>
的Javascript初始化代碼:
$("#arrow_button").css({"position":"relative", "top":"730px", "left":"497px"});
$("#top_canvas").css({"top":"5px"});
var canvas = document.getElementById("top_canvas");
var plus_canvas = document.getElementById("plus_canvas");
var ctx = canvas.getContext("2d");
var plus_ctx = plus_canvas.getContext("2d");
var top_img = document.getElementById("img_top");
var bottom_img = document.getElementById("img_bottom");
var plus_img = document.getElementById("img_plus");
canvas.width = plus_canvas.width = top_img.width;
canvas.height = plus_canvas.height = top_img.height;
ctx.fillStyle = "#FFFFFF";
plus_ctx.fillStyle = "#FFFFFF";
ctx.fillRect(canvas.width/2, 0, canvas.width, canvas.height);
plus_ctx.fillRect(0, 0, plus_canvas.width, plus_canvas.height);
ctx.beginPath();
ctx.moveTo(canvas.width/2, 0);
ctx.lineTo(canvas.width/2, canvas.height);
ctx.lineTo(canvas.width, canvas.height);
ctx.lineTo(canvas.width, 0);
plus_ctx.beginPath();
plus_ctx.moveTo(0, 0);
plus_ctx.lineTo(0, plus_canvas.height);
plus_ctx.lineTo(plus_canvas.width, plus_canvas.height);
plus_ctx.lineTo(plus_canvas.width, 0);
ctx.clip();
ctx.drawImage(top_img, 0, 0);
plus_ctx.drawImage(bottom_img, 0, 0);
for(var i = 0; i < 3; i++){
if(i == 0){
plus_ctx.drawImage(plus_img, 511, 344);
} else if(i == 1){
plus_ctx.drawImage(plus_img, 360, 348);
} else if(i == 2){
plus_ctx.drawImage(plus_img, 501, 621);
}
}
的Javascript代碼displayInfo:
var highlight_one = new Image();
var highlight_two = new Image();
var highlight_sound = new Image();
highlight_one.src = "../images/Highlight_one_over.png";
highlight_two.src = "../images/Highlight_two_over.png";
highlight_sound.src = "../images/Highlight_sound_over.png";
init();
if(e.clientX >= 511 && e.clientX <= 526 && e.clientY >= 344 && e.clientY <= 359){
plus_ctx.drawImage(highlight_one, 0, 0);
html = "<p>Blah Blah Blah</p>";
} else if(e.clientX >= 360 && e.clientX <= 375 && e.clientY >= 348 && e.clientY <= 363) {
plus_ctx.drawImage(highlight_sound, 0, 0);
html = "<p>La Di Da</p>";
} else if(e.clientX >= 501 && e.clientX <= 516 && e.clientY >= 621 && e.clientY <= 336) {
plus_ctx.drawImage(highlight_two, 0, 0);
html = "<p>Lorem Ipsum</p>";
}
$('.text_box').html(html);
CSS代碼:
* {margin:0}
#container{width:1024px; height:768px; position:relative}
#img_top, #top_canvas{position:absolute; z-index:3}
#img_plus, #plus_canvas{position:absolute; z-index:1}
#img_bottom, #img_top{width:1024px; height:768px}
.text_box{top:0; left:0; width:1024px; height:768px; padding:20px; position:absolute; z-index:2}
#arrow_container{position:absolute; width:1024px; height:768px; top:0; z-index:4}
#arrow_button{width:30px; height:30px; background-image:url("../images/arrows.png")}
圖像大小固定爲1024px 768像素。
將圖像標籤放在畫布標籤之外,並嘗試使用jquery和css創建和定位它們。也許你必須澄清這個問題,以確保人們得到你想要做的事情。 – cioddi
在該示例中,它顯示滾動加號按鈕時的信息。我將所有組件分爲4層。最底層是背景圖片和加號按鈕。我想從示例中爲這些按鈕創建相同的效果,並將信息顯示在底部第三層的文本區域圖層中。我的問題是我無法訪問按鈕,因爲其他圖層覆蓋按鈕。 –