基本上我想将一个方形div对角分成两个,产生两个三角形。
每个三角形都必须响应悬停事件。
这就是我到目前为止所遇到的问题但是:如果你从div的一个角落直接到另一个角落,它不会重新触发悬停事件,因为事件被应用于div元素而不是。中的定义三角区域。
我愿意接受任何建议,我甚至不介意我是否需要从一个不同的角度来解决问题。必须有一个更简单的解决方案,至少我希望!
HTML
<div class="day_box">
</div>
CSS
html, body { margin: 0; }
.day_box, .upper_left_hover, .lower_right_hover, .full_day {
background: url(/images/corner-sprites.png);
border: 1px solid black;
width: 25px;
height: 25px;
float: left;
margin: 100px;
}
.upper_left_hover { background-position: 75px 0; }
.lower_right_hover { background-position: 50px 0; }
.full_day { background-position: 25px 0; }
JS
$(".day_box").hover(function(event){
var offset = $(this).offset();
var h = $(this).height() + offset.top;
if((h - event.pageY)>(event.pageX - offset.left)) {
console.log("Upper left");
$(this).toggleClass("upper_left_hover");
} else {
console.log("Lower right");
$(this).toggleClass("lower_right_hover");
}
});
答案 0 :(得分:2)
您可以像这样使用mousemove
事件(在离开广场时添加mouseout
以删除这两个类):
$(".day_box").mousemove(function(event){
var offset = $(this).offset();
var h = $(this).height() + offset.top;
if((h - event.pageY)>(event.pageX - offset.left)) {
console.log("Upper left");
$(this).removeClass("lower_right_hover");
$(this).addClass("upper_left_hover");
} else if ((h - event.pageY)<(event.pageX - offset.left)) {
console.log("Lower right");
$(this).removeClass("upper_left_hover");
$(this).addClass("lower_right_hover");
}
}).mouseout(function(event)
{
$(this).removeClass("lower_right_hover upper_left_hover");
});
答案 1 :(得分:2)
我改变你的小提琴以产生你想要的效果......我根本没有清理它(只是摆弄......哈哈)
使用右三角公式(here),我设置您在原始小提琴中设置的给定样式。它还会在调试div中抛出一些值,这样您就可以更清楚地看到它的运行情况。
答案 2 :(得分:0)