ट्विटर बूटस्ट्रैप नेबार ने टॉप ओवरलैपिंग साइट तय की


347

मैं अपनी साइट पर बूटस्ट्रैप का उपयोग कर रहा हूं और नौसर तय टॉप के साथ समस्या कर रहा हूं। जब मैं सिर्फ नियमित नावबार का उपयोग कर रहा हूं, तो सब कुछ ठीक है। हालाँकि, जब मैं इसे नौबर्स तय शीर्ष पर स्विच करने का प्रयास करता हूं, तो साइट पर अन्य सभी सामग्री ऊपर की तरफ शिफ्ट हो जाती है, जैसे कि नेवबार वहां नहीं है और नावबार इसे ओवरलैप करता है। यहाँ मूल रूप से मैं इसे कैसे रखा है:

.navbar.navbar-fixed-top
  .navbar-inner
    .container
.container
  .row
    //yield content

मैंने बूटस्ट्रैप उदाहरणों को ठीक से कॉपी करने की कोशिश की, लेकिन अभी भी यह समस्या केवल नेवर तय टॉप का उपयोग करते समय है। मैं क्या गलत कर रहा हूं?

जवाबों:


527

आपका उत्तर डॉक्स में सही है :

बॉडी पैडिंग आवश्यक

जब तक आप paddingशीर्ष पर नहीं जुड़ते हैं, तब तक निश्चित नावबार आपकी अन्य सामग्री को ओवरले कर देगा <body>। अपने स्वयं के मूल्यों को आज़माएं या नीचे हमारे स्निपेट का उपयोग करें। टिप: डिफ़ॉल्ट रूप से, नेवबार 50px उच्च है।

body { padding-top: 70px; }

कोर बूटस्ट्रैप सीएसएस के बाद इसे शामिल करना सुनिश्चित करें ।

और बूटस्ट्रैप 4 डॉक्स में ...

फिक्स्ड नेबर्स पोजीशन का उपयोग करते हैं: निश्चित, जिसका अर्थ है कि वे DOM के सामान्य प्रवाह से खींचे गए हैं और अन्य तत्वों के साथ ओवरलैप को रोकने के लिए कस्टम CSS (जैसे, पैडिंग-टॉप) की आवश्यकता हो सकती है।


16
लेकिन जब आप विंडो को कम से कम करते हैं तो नावबार
अरविंदं

5
यह संभवतः 40px के बाद दिखाई देता है क्योंकि आप इसे "मूल बूटस्ट्रैप CSS के बाद और वैकल्पिक उत्तरदायी CSS से पहले नहीं जोड़ते हैं।"
Collimarco

1
यह उत्तर सही है, लेकिन यह तभी अच्छी तरह से काम करता है जब आप एक उत्तरदायी स्टाइलिंग 40px पैडिंग करते हैं, दान या निक का उत्तर देखें।
टोनी बाथगेट

1
यदि आप पैडिंग (या कुछ और) जोड़ना नहीं चाहते हैं तो @ qub1n से उत्तर देखें।
स्कार्फमैन

2
@JerSchneid w3schools.com पर navbar-fixed-top के लिए उदाहरण समान व्यवहार दिखाता है। मैं इसे बग कहने के लिए इच्छुक हूं।
टोनी मार्टिन

125

जैसा कि अन्य लोगों ने कहा है कि शरीर में पैडिंग-टॉप को जोड़ना बहुत अच्छा काम करता है। लेकिन जब आप स्क्रीन को संकरा बनाते हैं (सेल फोन की चौड़ाई के लिए) तो नावबार और बॉडी के बीच एक गैप होता है। इसके अलावा, एक भीड़भाड़ वाला नावबार एक बहु-पंक्ति पट्टी पर लपेट सकता है, जिससे कुछ सामग्री फिर से लिखी जा सकती है।

इससे मेरे लिए इस प्रकार के मुद्दे हल हो गए

body { padding-top: 40px; }
@media screen and (max-width: 768px) {
    body { padding-top: 0px; }
}

यह 768px चौड़ाई (जो बूटस्ट्रैप के डॉक्स के अनुसार सेल फोन लेआउट कटऑफ है, जहां अंतर बनाया जाएगा) के तहत डिफ़ॉल्ट और 0px द्वारा 40px की पैडिंग करता है।


1
क्या यह समाधान कोर बूटस्ट्रैप सीएसएस और उत्तरदायी सीएसएस आयातों के बीच भी जाता है? मैं अभी भी अंतराल देख रहा हूं जब विंडो की चौड़ाई 980 से कम है। मैं उत्तरदायी सीएसएस ओवरराइड्स के बाद के आयात का अनुमान लगा रहा हूं। यदि मैं इस समाधान को उत्तरदायी सीएसएस आयात के तहत स्थानांतरित करता हूं, तो मुझे अभी भी बॉडी पैडिंग मिलती है, साथ ही मेनू बार में एक अतिरिक्त लाइन भी मिलती है ।
स्लॉथबियर

मैं ट्विटर बूटस्ट्रैप 2.3.2 का उपयोग कर रहा हूं। मैंने देखा कि डॉक्टर के पास अब 40px का सुझाव नहीं है, हालाँकि आवश्यकता अभी भी मौजूद है।
सुस्ती

1
एह, 40px सुझाव अभी भी है, यह बस चला गया। टिप्पणी स्पैम के लिए क्षमा करें।
सुस्ती

3
बूटस्ट्रैप द्वारा 3. + body { padding-top: 40px; }पर्याप्त है
औरलैब्स

8
यह समाधान सही रास्ते पर है। बस शरीर में गद्दी लगाना, जैसा कि प्रलेखित है, 3. + पर भी पर्याप्त नहीं है। मीडिया प्रश्नों के सही संयोजन के साथ वांछित प्रभाव प्राप्त किया जा सकता है क्योंकि ब्राउज़र पुन: आकार देने के साथ नेवबर लपेटता है। मेरे मामले में मुझे 1148px, 900px, और 768px चौड़ाई पर पैडिंग बदलने की आवश्यकता है।
जॉन मैक्कैन

34

आपके संदर्भ के लिए बहुत अधिक उपयोगी समाधान, यह मेरी सभी परियोजनाओं में सही काम करता है:

से अपनी पहली पंक्ति बदलें

.navbar.navbar-fixed-top

सेवा

.navbar.navbar-default.navbar-static-top

1
क्या आप अभी ट्रोल कर रहे हैं? या मैं कुछ देख रहा हूँ?
चिनो जूल

यह 10 उत्थान कैसे हुआ? navbar-default सिर्फ रंग और पृष्ठभूमि रंग जोड़ता है ...
Denny Mueller

2
नावबार-स्टेटिक-टॉप बदलाव है और इसने मेरे लिए काम किया। धन्यवाद!
केवंतानवेसी

1
नावबार-स्टेटिक-टॉप ने इसे मेरे लिए भी तय कर दिया। कम से कम घुसपैठ।
xpagesbeast

3
यह काम करता है अगर आपको स्क्रीन के शीर्ष पर हमेशा दिखाई देने वाले नेवबार की आवश्यकता नहीं है। नौबत-स्थैतिक-शीर्ष तय नहीं है, यह स्क्रीन के साथ स्क्रॉल करता है। यह अलग-अलग नावल
Victor Ionescu

26

यह समस्या ज्ञात है और ट्विटर बूटस्ट्रैप साइट में वर्कअराउंड है:

जब आप नेवबार को चिपकाते हैं, तो नीचे छिपे हुए क्षेत्र के लिए याद रखें। इसमें 40px या अधिक पैडिंग जोड़ें <body>। कोर बूटस्ट्रैप सीएसएस के बाद और वैकल्पिक उत्तरदायी सीएसएस से पहले इसे जोड़ना सुनिश्चित करें।

यह मेरे लिए काम किया:

body { padding-top: 40px; }

9
लेकिन जब आप विंडो को कम से कम करते हैं तो नावबार
अरविंदं

1
हां, यह समाधान मोबाइल स्क्रीन आकारों पर अच्छी तरह से काम नहीं करता है। वास्तव में मेरे फोन पर वाइड-स्क्रीन मोड में यह मूल रूप से साइट को बेकार कर देता है।
टोनी बाथगेट

वैकल्पिक उत्तरदायी CSS क्या है? मैंने कभी भी केवल एक (कोर) बूटस्ट्रैप सीएसएस का उपयोग किया है - मैं ऊपर 3.7.x संस्करण की बात कर रहा हूं; क्या यह अलग सीएसएस के संस्करण 3.7.x से पहले विभाजित हो गया था?
joedotnot

26

@ रेयान, तुम सही हो, हार्ड-कोडिंग कद यह कस्टम नेवबार के मामले में खराब काम करेगा। यह वह कोड है जो मैं बीएस 3.0.0 के लिए खुशी से उपयोग कर रहा हूं:

$(window).resize(function () { 
   $('body').css('padding-top', parseInt($('#main-navbar').css("height"))+10);
});

$(window).load(function () { 
   $('body').css('padding-top', parseInt($('#main-navbar').css("height"))+10);         
}); 

3
parseIntऊंचाई के सीएसएस मूल्यों पर उपयोग करने के बजाय , मैंने बस इस्तेमाल किया $('#main-navbar').height(), लेकिन अन्यथा यह बहुत मददगार था और मेरे मुद्दे को हल किया, धन्यवाद।
टाइलेरवाल

जब तक आपका नौसिखिया तय ऊंचाई नहीं है, तब तक आपको यही चाहिए।
क्रेगप

21

मैं उपज कंटेनर से पहले यह डाल:

<div id="fix-for-navbar-fixed-top-spacing" style="height: 42px;">&nbsp;</div>

मुझे यह दृष्टिकोण पसंद है क्योंकि यह हैक को काम करने के लिए आवश्यक दस्तावेज बनाता है, साथ ही यह मोबाइल नौसेना के लिए भी काम करता है।

EDIT - यह बहुत बेहतर काम करता है:

@media (min-width: 980px) {
  body {
    padding-top: 60px;
    padding-bottom: 42px;
  }
}

16

समस्या नौसिखिया-निर्धारित-शीर्ष के साथ है, जो आपकी सामग्री को ओवरले करेगा जब तक कि शरीर-गद्दी निर्दिष्ट न हो। यहां उपलब्ध कोई समाधान 100% मामलों में काम नहीं करता है। पेज लोड होने के बाद JQuery समाधान पलक झपकते / पलटता है, जो अजीब लगता है।

मेरे लिए असली समाधान नौसेना-स्थिर-शीर्ष का उपयोग नहीं करना है, बल्कि नौबेर-स्टेटिक-टॉप का उपयोग करना है।

.navbar { margin-bottom:0px;} //for jumtron support, see http://stackoverflow.com/questions/23911242/gap-between-navbar-and-jumbotron

<nav class="navbar navbar-inverse navbar-static-top">
...
</nav>

1
हां, यह बेहतर है, क्योंकि प्रत्येक स्क्रीन आकार के लिए शरीर की गद्दी गतिशील है, उनका समाधान अच्छा नहीं है।
रोनेन फेस्टिंगर

लेकिन फिर नेवबार के ऊपर खाली सफेद जगह की एक पट्टी है।
user2075599

16

जैसा कि मैंने एक समान प्रश्न में पोस्ट किया है, मुझे अपनी वास्तविक निश्चित नौसेना पट्टी से ठीक पहले एक डमी नॉन-फिक्स्ड नेवी बार बनाने में अच्छी सफलता मिली है।

<nav class="navbar navbar-default"></nav> <!-- Dummy nav bar -->
<nav class="navbar navbar-default navbar-fixed-top"> <!-- Real nav bar -->
    <!-- Nav bar details -->
</nav>

रिक्ति सभी स्क्रीन आकारों पर शानदार काम करती है।


यह वही है जो हम करते हैं .. किसी भी जेएस कोड, अनुमान या किसी भी चीज़ के बिना शरीर की सामग्री को सही स्थान पर रखता है। ।
फ्रेडअर्स जूल

1
थोडा अधिक उत्थान के योग्य है, पूरी तरह से ठीक काम करता है, बदसूरत नरक के रूप में है, लेकिन केवल कोड: D
JRsz

धन्यवाद, यह शीर्ष पैडिंग या मार्जिन पिक्सल और सामान की तुलना में बहुत अधिक सुरुचिपूर्ण समाधान है ...
पेड्रो रीस

3
दुर्भाग्य से यह मोबाइल के लिए काम नहीं करता है, जब नौसेना 1 कॉलम में मिलती है।
पेड्रो रीस

16

बूटस्ट्रैप 4 के लिए समाधान, यह मेरी सभी परियोजनाओं में सही काम करता है:

से अपनी पहली पंक्ति बदलें

navbar-fixed-top

सेवा

sticky-top

बूटस्ट्रैप प्रलेखन संदर्भ

समय के बारे में उन्होंने यह सही किया: डी


कुछ लोग लिंक को देखने के लिए निश्चित टॉप का उपयोग कर सकते हैं क्योंकि आप पृष्ठ को नीचे स्क्रॉल करते हैं; हालांकि इस सुविधा यदि आप के बारे में है कि :) परवाह नहीं है उपयोगी हो सकता है
knowledge_is_power

यह भी ध्यान दें कि .sticky-top उपयोग की स्थिति: चिपचिपा है, जो हर ब्राउज़र में पूरी तरह से समर्थित नहीं है।
लाइव-लव

14

पिछले सभी समाधान हार्ड-कोड 40 पिक्सल विशेष रूप से एक फैशन या किसी अन्य में एचटीएमएल या सीएसएस में। क्या होगा अगर नावबार में एक अलग फ़ॉन्ट-आकार या एक छवि है? क्या होगा अगर मेरे पास पहली जगह में शरीर के गद्दी के साथ गड़बड़ न करने का एक अच्छा कारण है? मैं इस समस्या का हल खोज रहा हूँ, और यहाँ पर मैं आया हूँ:

$(document).ready(function(){
    $('.contentwrap') .css({'margin-top': (($('.navbar-fixed-top').height()) + 1 )+'px'});
    $(window).resize(function(){
        $('.contentwrap') .css({'margin-top': (($('.navbar-fixed-top').height()) + 1 )+'px'});
});

आप इसे '1' समायोजित करके ऊपर या नीचे ले जा सकते हैं। यह मेरे लिए काम करने से पहले, आकार बदलने के बाद और नावबार में सामग्री के आकार की परवाह किए बिना काम करता है।

मैं उत्सुक हूं कि दूसरे इस बारे में क्या सोचते हैं: कृपया अपने विचार साझा करें। (इसे दोहराया नहीं जाएगा, btw के रूप में फिर से परिभाषित किया जाएगा।) jQuery का उपयोग करने के अलावा, क्या कोई अन्य कारण समस्या इस तरह से नहीं हैं? मैं भी इसे इस तरह से एक माध्यमिक नावबार के साथ काम कर रहा हूँ:

$('.contentwrap') .css({'margin-top': (($('.navbar-fixed-top').height())
        + $('.admin-nav').height() + 1 )+'px'});

PS: ऊपर बूटस्ट्रैप 2.3.2 है - क्या यह 3.x में काम करेगा जब तक जेनेरिक क्लास के नाम रहेंगे ... वास्तव में, यह बूटस्ट्रैप से स्वतंत्र काम करना चाहिए, है ना?

संपादित करें: यहां एक पूर्ण jquery फ़ंक्शन है जो गतिशील आकार के दो स्टैक्ड, उत्तरदायी फिक्स्ड नेबर्स को संभालता है। इसके लिए 3 html वर्गों की आवश्यकता होती है (या आईडी का उपयोग कर सकते हैं): उपयोगकर्ता-शीर्ष, व्यवस्थापक-शीर्ष, और Contentwrap:

$(document).ready(function(){

    $('.admin-top').css({'margin-top':($('.user-top').height()+0)+'px'});
    $('.contentwrap') .css({'padding-top': (
        $('.user-top').height()
         + $('.admin-top').height()
         + 0 )+'px'
    });

    $(window).resize(function(){
        $('.admin-top').css({'margin-top':($('.user-top').height()+0)+'px'});
        $('.contentwrap') .css({'padding-top': (
            $('.user-top').height()
             + $('.admin-top').height()
             + 0 )+'px'
        });
});

सिर्फ FYI करें मैं इसका उपयोग कर रहा हूं और यह बहुत अच्छा काम करता है, लेकिन किसी विषम कारण के लिए अगर मेरे पास दो नाव, एक सामान्य आकार और एक छोटी स्क्रीन है तो यह केवल बड़े पर काम करता है?
शरारती शरारती

@LiamDawe शायद आपके पास पृष्ठ पर एक से अधिक '.user-top' (उदाहरण के लिए) है, जिस स्थिति में .height () भ्रमित हो सकती है ...?
रयान

14

बस के fixed-topसाथ बदल जाते हैं sticky-top। इस तरह आपको गद्दी की गणना नहीं करनी होगी।
और यह काम करता है !!


Also note that .sticky-top uses position: sticky, which isn’t fully supported in every browser.देखें - getbootstrap.com/docs/4.5/compenders/navbar/#placement
अभिलाष किशोर

11

मेन्यू-बार में रैपिंग लाइन्स को संभालने के लिए, इस तरह से नेवबर को एक आई डी लगाइए:

<div class="navbar navbar-default navbar-fixed-top" role="navigation" id="topnavbar">

और इस छोटी सी स्क्रिप्ट को इस तरह से जोड़कर सिर में लगाएं:

<script>
    $(document).ready(function(){
        $(document.body).css('padding-top', $('#topnavbar').height() + 10);
        $(window).resize(function(){
            $(document.body).css('padding-top', $('#topnavbar').height() + 10);
        });
    });
</script>

इस तरह, शरीर के शीर्ष-पैडिंग स्वचालित रूप से समायोजित हो जाते हैं।


मुझे आपके उदाहरण में ऊंचाई का दूसरा संदर्भ $ ('# टॉपनंबर') होना चाहिए। ऊंचाई () और फिर इसने मेरे लिए पूरी तरह से काम किया। धन्यवाद!
notruthless

1
टिप्पणी के लिए धन्यवाद! मैंने जवाब में तय किया।
ओलिवर कोनिग

यह सबसे अच्छा समाधान है जो मैं पीसी, आईओएस, एंड्रॉइड - सभी उपकरणों पर काम करता हूं। अन्य सभी या तो हार्ड-कोडेड पिक्सेल मान हैं या बहुत लंबे हैं और सभी उपकरणों पर काम नहीं करते हैं।
ऑक्युलर मैन

अच्छा समाधान है। मैं कुछ छोटे ऑफसेट कर रहा था जो गणना में ध्यान में नहीं लिए जा रहे थे। मुझे लगता है कि यह इसलिए था क्योंकि मेरे नेविगेशन बार में कुछ मार्जिन था। मैंने इसे ध्यान में रखने के लिए हाइटहाइट () कॉल के लिए ऊँचाई () कॉल को बदलने का विकल्प चुना।
लियोनार्डो सांतोस

4

बूटस्ट्रैप 3. के लिए, मैं नेवबर-फिक्स्ड-टॉप को ठीक करने के लिए CSS का उपयोग करूंगा और https://github.com/twbs/bootstrap/issues/1768 के आधार पर एंकर जंप ओवरलैप्ड समस्या

/* fix fixed-bar */
body { padding-top: 40px; }
@media screen and (max-width: 768px) {
  body { padding-top: 40px; }
}

/* fix fixed-bar jumping to in-page anchor issue */
*[id]:before { 
  display: block; 
  content: " "; 
  margin-top: -75px; 
  height: 75px; 
  visibility: hidden; 
}

एक ही मुद्दा, अच्छा जवाब।
मैकग्राडी

2

इस कक्षा का उपयोग नौसेना टैग के अंदर करें

वर्ग = "नावबार नौबस्ता-विस्तार-एलजी नवबर-लाइट बीजी-लाइट स्टिकी-टॉप "

बूटस्ट्रैप 4 के लिए


मुझे कभी नहीं पता चलेगा कि इसे क्यों उखाड़ा गया, क्योंकि यह मेरे और अन्य सभी लोगों के लिए काम कर रहा था।
किंजिनथेनोर्थ

यह सही है। एकमात्र मुद्दा यह है कि डॉक्स में, यह कहता है ".sticky-top उपयोगिता सीएसएस की स्थिति का उपयोग करती है: चिपचिपा, जो सभी ब्राउज़रों में पूरी तरह से समर्थित नहीं है"
जोस


0

निक बस्बी के जवाब के आगे, अगर आपको रेल में एचएएमएल का उपयोग करके यह समस्या आती है और आपने रॉबर्टो बैरोस को यहां लागू किया है:

मैंने "bootstrap_and_overrides.css" में आवश्यकता को प्रतिस्थापित किया:

= ट्विटर-बूटस्ट्रैप-स्टेटिक / बूटस्ट्रैप.css.erb की आवश्यकता है

(देखें https://github.com/seyhunak/twitter-bootstrap-rails/issues/91 )

... आपको आवश्यक विवरण से पहले शरीर सीएसएस लगाने की आवश्यकता है:

@import "twitter/bootstrap/bootstrap";
body { padding-top: 40px; }
@import "twitter/bootstrap/responsive";
=require twitter-bootstrap-static/bootstrap.css.erb

यदि आवश्यकता विवरण शरीर सीएसएस से पहले है, तो यह प्रभावी नहीं होगा।


0

मैं यह करूँगा:

// add appropriate media query if required to target mobile nav only
.nav { overflow-y: hidden !important }

यह सुनिश्चित करना चाहिए कि नेवल ब्लॉक पेज डाउन नहीं करता है और पेज कंटेंट को कवर करता है।


-4

मैंने अभी एक में नेवले को लपेटा है

<div width="100%">
<div class="nav-? ??">
...
</nav>
</div>

कोई फैंसी हैकर्स pocus नहीं है, लेकिन यह काम किया ..


आपका उत्तर अस्पष्ट है और समस्या का समाधान करने में विफल है। क्या nav-? ??प्रतिनिधित्व करता है ?
विखंडन विंडो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.