我想寫一個jQuery腳本,它會從我的CSS類元素中找到到瀏覽器窗口右邊緣的距離,然後根據右側的可用空間將子菜單下拉菜單定位到右側或左側。還需要恢復到overout的默認設置。這是我迄今爲止的,但它沒有正確計算。如何根據到窗口邊緣的距離使我的子菜單位置動態?
$(document).ready(function(){
$('#dnnMenu .subLevel').hover(function(){
if ($(window).width() - $('#dnnMenu .subLevel').offset().left - '540' >= '270')
{
$('#dnnMenu .subLevelRight').css('left', '270px');}
else {$('#dnnMenu .subLevelRight').css('left', '-270px');}
});
$(document).ready(function() {
function HoverOver() {
$(this).addClass('hover');
}
function HoverOut() {
$(this).removeClass('hover');
}
var config = {
sensitivity: 2,
interval: 100,
over: HoverOver,
timeout: 100,
out: HoverOut
};
$("#dnnMenu .topLevel > li.haschild").hoverIntent(config);
$(".subLevel li.haschild").hover(HoverOver, HoverOut);
});
基本上我試圖採取當前窗口的寬度,減去到第一電平的子菜單的瀏覽器的左邊緣的距離,再減去兩個元件一起的寬度將等於540px,以計算當第一級子菜單懸停時,距窗口右邊緣的距離。如果我的第一級子菜單元素右側的距離小於540px,則第二級子菜單css屬性將更改爲左側而不是右側。我也知道,鼠標懸停後需要恢復默認設置,以便重新計算菜單結構中其他位置的距離,並且仍然有足夠空間的第二級子菜單仍然顯示在第一級的右側。這裏是問題的元素的CSS。
#dnnMenu .subLevel{
display: none;
position: absolute;
margin: 0;
z-index: 1210;
background: #639ec8;
text-transform: none;}
#dnnMenu .subLevelRight{
position: absolute;
display: none;
left: 270px;
top: 0px;}
該網站還沒有生活,我試圖創建一個jsfiddle,但它看起來不正確。任何幫助將不勝感激!
最好的問候, 馬里奧
我想了解更多關於W3C上css hierachy和position屬性的信息。有很多事情可以避免你從這件作品中獲得,而且有很多網站對此有很大的幫助。我不認爲你會找到確切的答案。也許你需要訪問Code Review堆棧交換站點 –
以及我不知道.offset()。剩下的事情就是它測量的是沒有幫助我的父元素。我能夠通過爲每個菜單項創建2px高透明div id來實現這一目標。由於必須跨越它們才能進入子菜單,因此可以計算到瀏覽器窗口邊緣的距離。 –