2012-05-08 77 views
1

我真的堅持這一個,不知道如何解決這個問題,我使用jQuery〜通常沒有太多的問題。但是,因爲我不寫JS,所以我被困住了:( 我搜索了並且搜索了答案,並嘗試了太多的方法,並且沒有得到任何地方...... :(我敢打賭,我錯過了一些非常明顯或者簡單的東西,希望有人可以幫助...show/hide()更改塊級元素的寬度/行爲?

好的 - 問題: 我有一個網站爲我的網頁設計課程,它顯示了左側欄中的主導航對於最小的屏幕(即低於420px寬度) - 我想要隱藏菜單,而不是使用jQuery toggle()函數根據需要顯示/隱藏菜單的'視圖菜單'鏈接

最初,我通過一個簡單的直接切換 - 除了一旦顯示並隱藏菜單後菜單仍然隱藏的問題一個小屏幕。如果窗口調整大小 - 它將保持隱藏狀態。

那是我着手解決這個問題,在這裏提它,我可能會去錯了路完全這裏〜懷疑我是否以正確的方式做這個:'(

現在 - 我我使用JS來隱藏所有屏幕上的「視圖菜單」鏈接,只顯示在小於420像素的屏幕上,我還添加了resize()函數以允許更多的動態行爲 所有內容都按預期顯示隱藏我的菜單 - 但....

切換鏈接本身設置爲顯示:塊 - 當窗口加載低於420px時,它會按照預期顯示:設置爲塊(跨越完整寬度的一個很好的固體活動e鏈接),文字居中。 但是,當我以較大的窗口大小加載頁面,然後調整到420px寬度以下時 - 切換鏈接似乎變爲內聯?不再是全角,文字看起來是左對齊的,因爲元素不再是全角...?!

我試着在CSS設置寬度,試圖通過調整大小()元件復位,通過JS通過分配100%的寬度....沒有什麼工作 - 我敢肯定,我失去了一些東西....

我真的很感激任何指針或想法〜覺得我失去了一些東西非常基本的這裏....

網站:webeyedea.info

這裏是我的JS代碼,鏈接下面的jQuery :

// check for window size size on page load and show relevant content only 
$(function() { 
    if ($(window).width() > 420) { 
     $('#toggle-nav').hide(); 
     $('nav ul').show(); 
    } 
    else { 
     $('#toggle-nav').show(); 
     $('nav ul').hide(); 
    } 
}); 
// check for window resize - show nav again for larger screens after hiding 
$(window).resize(function() { 
    if ($(window).width() > 420) { 
     $('#toggle-nav').hide(); 
     $('nav ul').show(); 
    } 
    else { 
     $('#toggle-nav').show(); 
     $('nav ul').hide(); 
    } 
}); 

// show menu (smallest screens) 
$('nav #toggle-nav').click(function() { 
    $('nav ul').slideToggle('slow', function() { 
     // Animation complete. 
    }); 
    $('ul').addClass('view'); 
}); 

UPDATE:SEE JSFIDDLE

+0

我已經設置了的jsfiddle這個現在,因爲它可能會更容易看到了什麼錯誤 - 在窗口大小調整[切換菜單(http://jsfiddle.net/eyedea/HWmp3/1/) - 顯示內聯得到應用,覆蓋從我的CSS顯示塊 - 當加載窗口,這不會發生一個小屏幕的大小... – prisca

回答

1

當您在元素上調用.show()它的顯示屬性設置爲先前的值,如果不存在的話,我相信它需要這可能是你的情況inline默認瀏覽器的價值。嘗試將其明確設置爲block

+0

謝謝,安德烈 - 試過...好吧,我嘗試通過CSS,設置寬度顯示塊+甚至在100%中添加 - 沒有運氣:( 然後我試圖通過JS設置寬度爲100% - 沒有運氣要麼;( – prisca

1

我不知道什麼是在這裏做什麼,因爲我沒有移動來測試它,但你可以嘗試與顯示器之間切換一個CSS功能,以取代你的隱藏/顯示:none和顯示:塊?

像這樣:

$('#toggle-nav').css('display','none'); 
$('#toggle-nav').css('display','block'); 
+0

感謝回去我,亞歷山大 - 我想這可能是最好的都顯示,並通過JS隱藏 - 以確保菜單將保持可見,如果JS被禁用? – prisca

+0

亞歷山大,啊,......還沒有嘗試過 - 謝謝你的片段。 但它沒有工作:(當我更換Ÿ顯示和隱藏的#撥動導航 - 當窗口大小調整到更大尺寸的菜單中再次保持隱藏... – prisca

+0

我告訴你這是與該代碼:PI因爲我從我的工作中寫下了這個代碼,所以我不太確定爲你編寫整個代碼。我知道它是display:none和block :)享受! – Alexandre

0

見我的修訂小提琴 http://jsfiddle.net/HWmp3/9/ 我測試了在iPhone模擬器和它的作品。我的測試是將代碼複製到本地文件並進行測試。我把所有的JS的document.ready內

請確保您有元在頭

<meta name = "viewport" content = "width=device-width, initial-scale=1.0"> 
+0

謝謝,黃ism〜試過,並沒有任何區別... :(我真的不明白這一點 - 除了內聯樣式被應用的事實,將我的鏈接設置爲內聯,請參閱快速[截圖](http://screencast.com/t/6DXc9ouurdz) 如果頁面加載在最小的屏幕 - 沒有內聯CSS,所有罰款... :( – prisca

+0

你改變了什麼嗎?我剛剛在FF中檢查網站,當我調整它顯示內聯CSS爲塊和它正在工作,因爲你想 – Huangism

+0

是的,我做了 - 我一直在努力解決這個與各種組合 - 沒有運氣....我可以得到它的桌面瀏覽器的工作 - 但iPhone上的切換失敗:(所以仍然沒有解決方案,工作正常... – prisca

0

差不多!不解決

一個解決方案,通過此感謝弗拉德Radulescu(上Forrst)〜jsfiddle fork

$('a#toggle-nav').css('display','none'); 

// Show the menu if Window width is less than 420 
$(window).resize(function() { 
    if ($(window).width() > 420) {      
     $('#toggle-nav').css('display','none'); 
     $('nav ul').show();     
    } 
    else { 
     $('#toggle-nav').css('display','block'); 
     $('nav ul').hide(); 
    }    
}); 

// Slide the Menu on smaller screens 
$('nav #toggle-nav').click(function() { 
     $('nav ul').slideToggle('slow');     
}); 
+0

哦,我想這就是亞歷山大的意思,但他沒有提供完整的代碼 – Huangism

+0

好,它不能正常工作還是..... 我是一半這裏要感謝你的提示 - 但上述版本在窗口大小調整時工作正常 - 當窗口以小屏幕大小加載時,即<420像素,無法正常工作。 ,並沒有對iPhone(手機只有我可以在目前試驗)工作 - 肘杆顯示出來,顯示/隱藏破:( – prisca

+0

一個問題,我看到上面的代碼馬上就是顯示沒有在外部聲明,並且您可能會將其放在第一個函數之後,其中> 420。所以它會隱藏它,當你開始小於420 – Huangism

相關問題