的選擇部分我有這樣的HTML呈現向右指向一個簡單的箭頭標誌:修改光標屬性的元素
<!DOCTYPE html>
<html>
<head>
<style>
div { width: 0px; height: 0px; border-left: 20px solid black; border-top: 20px solid transparent; border-bottom: 20px solid transparent; border-right: 20px solid transparent; position: absolute; left: 35px; top: 53px; cursor: pointer; }
</style>
<body>
<div></div>
</body>
</html>
如果你懸停的話,光標變成指針。但是因爲它實際上是一個方形div
,即使您剛好位於div
的邊界內的箭頭之外,光標也會轉向指針。
所以我寫了這個Javascript的附加,只有當鼠標懸停在那個箭頭上時,光標才轉動指針。爲此,我計算了Firebug中三角形的三個頂點的座標(從頂部順時針方向(35,53)
,(55,73)
,(35,93)
)。然後我檢查這個點是否位於這三個頂點形成的三角形內。這是通過檢查每個邊的點和相對頂點是否位於該邊的同一側來實現的(如果是這樣,則通過將該點的座標替換爲該公式中的x
和y
而獲得的值的乘積將是積極的)。
<!DOCTYPE html>
<html>
<head>
<style>
div { width: 0px; height: 0px; border-left: 20px solid black; border-top: 20px solid transparent; border-bottom: 20px solid transparent; border-right: 20px solid transparent; position: absolute; left: 35px; top: 53px; }
.hoverclass { cursor: pointer; }
</style>
<script src="jquery.js">
</script>
<script>
$(document).ready(function(){
$("div").click(function(e) { alert(e.pageX + " " + e.pageY); });
function l1(x,y) { return y - x - 18; }
function l2(x,y) { return x+y-128; }
function l3(x,y) { return x-35; }
$("div").hover(function(e) {
var x = e.pageX;
var y = e.pageY;
if (l1(x,y)*l1(35,93) >= 0 && l1(x,y)*l1(35,93) >= 0 && l1(x,y)*l1(35,93) >= 0) {
$(this).addClass('hoverclass');
}
else { $(this).removeClass('hoverclass'); }
},
function() {
$(this).removeClass('hoverclass');
});
});
</script>
<body>
<div></div>
</body>
</html>
但是,結果是不可預測的。有時光標只能在三角形內部轉動指針,有時也會在外部(正如以前一樣),有時甚至根本不會。我懷疑這可能是由於hover
函數超時工作,可能暫時掛起腳本。有沒有其他方法可以實現這一點?
使用SVG創建箭頭。然後,您可以將CSS分配給該形狀,並且可以根據需要使用。 RaphaelJS將是一個很好的圖書館使用。 –
哦,不,我完全沒有任何知識!有沒有古老的jQuery/CSS方式? – SexyBeast
並非如你所見,HTML容器總是矩形的。圖像地圖可能有效,但這是一種非常陳舊的做任何事情的方法。 –