स्क्रॉल करने योग्य सामग्री के साथ फिक्स्ड हेडर, फुटर


86

मैं स्क्रॉल करने योग्य सामग्री के साथ फिक्स्ड हेडर, फुटर कैसे प्राप्त कर सकता हूं? कुछ इस पेज की तरह । मैं सीएसएस प्राप्त करने के लिए स्रोत को देख सकता हूं, लेकिन मैं केवल न्यूनतम सीएसएस और एचटीएमएल जानना चाहता हूं मुझे यह काम करने की आवश्यकता है।

यहां छवि विवरण दर्ज करें


1
इन क्वालीफायर के साथ एक ही सवाल: कोणीय, भौतिक ...
मोबिबोब

एक ही सवाल लेकिन एक साइडबार के साथ और जहां फूटर दिखाई नहीं देता है जब तक कि आप श्रृंखला को नीचे स्क्रॉल नहीं करते हैं और आप दाहिने हाथ की तरफ दो स्क्रॉलबार के साथ समाप्त नहीं होते हैं
सिमोन_वेवर

जवाबों:


132

कुछ इस तरह

<html>
  <body style="height:100%; width:100%">
    <div id="header" style="position:absolute; top:0px; left:0px; height:200px; right:0px;overflow:hidden;"> 
    </div> 
    <div id="content" style="position:absolute; top:200px; bottom:200px; left:0px; right:0px; overflow:auto;"> 
    </div> 
    <div id="footer" style="position:absolute; bottom:0px; height:200px; left:0px; right:0px; overflow:hidden;"> 
    </div>
  </body>
</html> 

डाउनवोट्स से संबंधित नहीं है, लेकिन मैं यहां पहुंच गया और यह मेरे लिए काम नहीं किया (और मैंने शैली की शाब्दिक प्रतिलिपि बनाई)। शायद jQuery मोबाइल चारों ओर गड़बड़ कर रहा है। लेकिन यहां तक ​​कि अगर यह काम किया है, मैं तय आयामों को परेशान करने के लिए पसंद नहीं है। मुझे लगता है कि HTML / css देशी UI घटकों से एक कदम पीछे है। मेरे द्वारा काम किए गए प्रत्येक मूल मंच में, स्क्रॉल करने योग्य कंटेनर बनाना केक का एक टुकड़ा था।
मिस्टर स्मिथ

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

@ जॉनहोर्त्सोक निश्चित रूप से यह JQM बुरा काम कर रहा था। हार्डकॉइड आयामों के लिए, मुझे जो पसंद नहीं है, वह पिक्सेल में पूर्ण ऊंचाई सेट करना है। मैंने जिन अन्य प्लेटफार्मों पर काम किया है, उनमें एक कंटेनर बनाना और इसे सभी ऊँचाई का उपयोग करने के लिए कहना संभव था।
मिस्टर स्मिथ

@ मिस्टर स्मिथ। आपको px में आयामों को हार्ड कोड करने की आवश्यकता नहीं है। यदि आप चाहें तो प्रतिशत का उपयोग कर सकते हैं, इसके अलावा आपको टैग पर शैली विशेषता के माध्यम से शैली सेट करने की आवश्यकता नहीं है, बल्कि आईडी को संदर्भित करते हुए बस एक सीएसएस शैली शीट सेट करें। मैंने जवाब में इस तरह से चीजों को किया, जिससे इसे समझना बहुत आसान हो गया।
जॉन हार्टसॉक

2
@ जॉनहोर्त्सक ने शायद इसलिए मना कर दिया क्योंकि यह इनलाइन सीएसएस है और इसकी व्याख्या नहीं है कि यह सिर्फ एक कॉपी और पेस्ट का उत्तर क्यों है
treyBake

63

यदि आप लचीले बक्से का समर्थन करने वाले ब्राउज़रों को लक्षित कर रहे हैं, तो आप निम्न कार्य कर सकते हैं .. http://jsfiddle.net/meyertee/AH3pE/

एचटीएमएल

<div class="container">
    <header><h1>Header</h1></header>
    <div class="body">Body</div>
    <footer><h3>Footer</h3></footer>
</div>

सीएसएस

.container {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
}

header {
    flex-shrink: 0;
}
.body{
    flex-grow: 1;
    overflow: auto;
    min-height: 2em;
}
footer{
    flex-shrink: 0;
}

अपडेट: लचीले बक्से के ब्राउज़र समर्थन के
लिए "क्या मैं उपयोग कर सकता हूं" देखें ।


मैं एक हेडर और फुटर का उपयोग कर रहा हूं, जिसकी एक चर ऊंचाई है और मुझे विश्वास है कि यह मेरे लिए चाल चलेगा। मैं नवीनतम ब्राउज़रों को भी सौभाग्य से लक्षित कर रहा हूं। धन्यवाद!
जिम्मी टाइरेल

महान! क्या .bodyक्षेत्र में इस तरह का एक और निर्माण करने का एक तरीका है ? जब मैं ऐसा करता हूं, तो बाहरी .containerस्क्रॉल दृश्य से बाहर निकल जाता है जैसे ही आंतरिक .body .bodyसभी तरह से नीचे स्क्रॉल किया जाता है।
philk

1
यह मेरी राय में सबसे अच्छा जवाब है और यह सबसे अच्छा जवाब होना चाहिए! धन्यवाद!
मिलाएं

अगर मैं गलत नहीं हूँ तो यह एक अलग सवाल का जवाब है? यहां स्क्रॉलबार पूरे पृष्ठ पर दिखाई देता है, जबकि जॉन द्वारा उत्तर में स्क्रॉलबार केवल मुख्य सामग्री पर दिखाई देता है (जो कि प्रश्न पूछता है)? कम से कम मैं वही देख रहा हूं जो फिडेल में देख रहा हूं।
19'19

51

दृष्टिकोण 1 - फ्लेक्सबॉक्स

यह ज्ञात और अज्ञात दोनों ऊंचाई तत्वों के लिए बहुत अच्छा काम करता है। बाहरी डिव को सेट करना height: 100%;और डिफ़ॉल्ट marginको रीसेट करना सुनिश्चित करें bodyब्राउज़र समर्थन तालिका देखें ।

jsFiddle

html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  height: 100%;
  display: flex;
  flex-direction: column;
}
.header, .footer {
  background: silver;
}
.content {
  flex: 1;
  overflow: auto;
  background: pink;
}
<div class="wrapper">
  <div class="header">Header</div>
  <div class="content">
    <div style="height:1000px;">Content</div>
  </div>
  <div class="footer">Footer</div>
</div>

दृष्टिकोण 2 - सीएसएस तालिका

ज्ञात और अज्ञात दोनों ऊंचाई तत्वों के लिए। यह IE8 सहित विरासत ब्राउज़रों में भी काम करता है।

jsFiddle

दृष्टिकोण 3 - calc()

यदि शीर्ष लेख और पाद लेख निश्चित ऊंचाई हैं, तो आप CSS का उपयोग कर सकते हैं calc()

jsFiddle

दृष्टिकोण 4 - सभी के लिए%

यदि शीर्ष लेख और पाद लेख ऊँचाई ज्ञात हैं, और वे प्रतिशत भी हैं, तो आप केवल सरल गणित कर सकते हैं जो उन्हें 100% ऊँचाई पर एक साथ बनाते हैं।

jsFiddle


7

अब हमें CSS ग्रिड मिल गई है। 2019 में आपका स्वागत है।

/* Required */
body {
   margin: 0;
   height: 100%;
}

#wrapper {
   height: 100vh;
   display: grid;
   grid-template-rows: 30px 1fr 30px;
}

#content {
   overflow-y: scroll;
}

/* Optional */
#wrapper > * {
   padding: 5px;
}

#header {
   background-color: #ff0000ff;
}

#content {
   background-color: #00ff00ff;
}

#footer {
   background-color: #0000ffff;
}
<body>
   <div id="wrapper">
      <div id="header">Header Content</div>
      <div id="content">
         Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
      </div>
      <div id="footer">Footer Content</div>
   </div>
</body>


1
आपको शरीर की ऊंचाई की आवश्यकता नहीं है। बस रैपर की ऊंचाई 100vh पर सेट करें, और यह यहां और जंगली दोनों पर काम करेगा।
हेनरिक Erzinger

5

2013 तक: यह मेरा दृष्टिकोण होगा। jsFiddle:


एचटीएमएल

<header class="container global-header">
    <h1>Header (fixed)</h1>
</header>

<div class="container main-content">
    <div class="inner-w">
        <h1>Main Content</h1>
    </div><!-- .inner-w -->
</div> <!-- .main-content -->

<footer class="container global-footer">
    <h3>Footer (fixed)</h3>
</footer>


एससीएसएस

// User reset

* { // creates a natural box model layout
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing: border-box; 
} // asume normalize.css


// structure

.container {
    position: relative;
    width: 100%;
    float: left;
    padding: 1em;
}


// type

body {
    font-family: arial;   
}

.main-content {
    h1 {
        font-size: 2em;
        font-weight: bold;
        margin-bottom: .2em;
    }
} // .main-content


// style

    // variables
    $global-header-height: 8em;
    $global-footer-height: 6em;

.global-header {
    position: fixed;
    top: 0; left: 0;
    background-color: gray;
    height: $global-header-height;
}

.main-content {
    background-color: orange;
    margin-top: $global-header-height;
    margin-bottom: $global-footer-height;
    z-index: -1; // so header will be on top
    min-height: 50em; // to make it long so you can see the scrolling
}

.global-footer {
    position: fixed;
    bottom: 0;
    left: 0;
    height: $global-footer-height;
    background-color: gray;
}

मैं 2016 के रूप में फ्लेक्स-बॉक्स का उपयोग करने की संभावना रखता हूं। यह हमेशा संदर्भ पर निर्भर करता है। मुश्किल हालात! :)
sheriffderek

5

यहाँ मेरे लिए क्या काम किया है। मुझे एक मार्जिन-बॉटम जोड़ना था ताकि पाद मेरी सामग्री को न खाए:

header {
  height: 20px;
  background-color: #1d0d0a;
  position: fixed;
  top: 0;
  width: 100%;
  overflow: hide;
}

content {
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 100px;
  margin-top: 20px;
  overflow: auto;
  width: 80%;
}

footer {
  position: fixed;
  bottom: 0px;
  overflow: hide;
  width: 100%;
}

0

यह सीएसएस ग्रिड का उपयोग करके मेरे लिए ठीक काम करता है। प्रारंभ में कंटेनर को ठीक करें और फिर overflow-y: auto;केंद्र सामग्री के लिए दें जिसमें स्क्रॉल करना होगा और हेडर और फुटर के अलावा।

.container{
  height: 100%;
  left: 0;
  position: fixed;
  top: 0;
  width: 100%;
  display: grid;
  grid-template-rows: 5em auto 3em;
}

header{
   grid-row: 1;  
    background-color: rgb(148, 142, 142);
    justify-self: center;
    align-self: center;
    width: 100%;
}

.body{
  grid-row: 2;
  overflow-y: auto;
}

footer{
   grid-row: 3;
   
    background: rgb(110, 112, 112);
}
<div class="container">
    <header><h1>Header</h1></header>
    <div class="body">
      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</div>
    <footer><h3>Footer</h3></footer>
</div>

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