सीएसएस डिव स्ट्रेच 100% पृष्ठ ऊंचाई


195

मेरे पास मेरे पृष्ठ के बाईं ओर एक नेविगेशन बार है, और मैं चाहता हूं कि यह पृष्ठ की ऊंचाई के 100% तक फैल जाए। न केवल व्यूपोर्ट की ऊंचाई, बल्कि आपके द्वारा स्क्रॉल किए जाने तक छिपे हुए क्षेत्रों सहित। मैं इसे पूरा करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना चाहता।

क्या यह HTML / CSS में किया जा सकता है?

जवाबों:


171

यहाँ एक समाधान मैं अंत में एक गतिशील पृष्ठभूमि के लिए एक कंटेनर के रूप में एक div का उपयोग करते समय आया।

  • z-indexगैर-पृष्ठभूमि उपयोगों के लिए निकालें ।
  • निकालें leftया rightपूर्ण ऊंचाई वाले कॉलम के लिए।
  • निकालें topया bottomएक पूर्ण चौड़ाई पंक्ति के लिए।

EDIT 1: नीचे सीएसएस को संपादित किया गया है क्योंकि यह एफएफ और क्रोम में सही ढंग से नहीं दिखा था। position:relativeHTML पर ले जाया गया और height:100%इसके बजाय शरीर सेट करें min-height:100%

संपादित करें 2: सीएसएस में अतिरिक्त टिप्पणियां जोड़ें। ऊपर कुछ और निर्देश जोड़े गए।

सीएसएस:

html{
    min-height:100%;/* make sure it is at least as tall as the viewport */
    position:relative;
}
body{
    height:100%; /* force the BODY element to match the height of the HTML element */
}
#cloud-container{
    position:absolute;
    top:0;
    bottom:0;
    left:0;
    right:0;
    overflow:hidden;
    z-index:-1; /* Remove this line if it's not going to be a background! */
}

HTML:

<!doctype html>
<html>
<body>
    <div id="cloud-container"></div>
</body>
</html>

क्यों?

html{min-height:100%;position:relative;}

इसके बिना क्लाउड-कंटेनर DIV को HTML के लेआउट संदर्भ से हटा दिया जाता है। position: relativeयह सुनिश्चित करता है कि DIV HTML बॉक्स के अंदर रहता है जब इसे खींचा जाता है ताकि bottom:0HTML बॉक्स के निचले हिस्से को देखें। आप height:100%क्लाउड-कंटेनर पर भी उपयोग कर सकते हैं क्योंकि यह अब HTML टैग की ऊंचाई को दर्शाता है न कि व्यूपोर्ट को।


यह बहुत अच्छा है, लेकिन अभ्यस्त केंद्र नहीं है। उसके लिए कोई फिक्स? मार्जिन: 0 ऑटो; काम नहीं कर रहा है।
क्रीम

बहुत बढ़िया जवाब। मैंने देखा कि आपको htmlतत्व पर न्यूनतम ऊंचाई (और न केवल ऊंचाई) का उपयोग करना होगा । ऐसा क्यों है?
हार्टलेसान

प्रयोग heightकह रहा है 'तुम इस लम्बे हो; न कम और न ज्यादा।' जिसका मतलब है कि यह व्यूपोर्ट की ऊंचाई होगी। हम चाहते हैं कि यह कम से कम व्यूपोर्ट या लंबा हो। min-heightयह अच्छी तरह से करता है।
कन्या

1
Z- इंडेक्स वहाँ है क्योंकि यह एक मूविंग बैकग्राउंड के लिए एक स्निपेट है जो मैंने किया था और मैं यह सुनिश्चित करना चाहता था कि डिव बैकग्राउंड में रहे। यह सामान्य तत्वों के लिए आवश्यक नहीं है।
कन्या

5
यह उत्कृष्ट है। मैं 15 साल से सीएसएस कर रहा हूं और इसने उस स्थिति को कभी भी क्लिक नहीं किया <html>और व्यूपोर्ट की स्थिति दो अलग चीजें थीं। धन्यवाद!
बेन हल

80

HTML5 के साथ, सबसे आसान तरीका बस करना है height: 100vh। जहां 'vh' ब्राउज़र विंडो की व्यूपोर्ट ऊंचाई के लिए है। ब्राउज़र और मोबाइल उपकरणों के आकार के लिए उत्तरदायी।


39
बिंदु को पूरी तरह से याद करना। ओपी पृष्ठ की ऊंचाई के लिए पूछ रहा है, खिड़की / व्यूपोर्ट की ऊंचाई नहीं।
ग्रेग

9
दस्तावेज़ की ऊँचाई, व्यूपोर्ट ऊँचाई नहीं।
पंकबिट

7
ऊपर के रूप में एक ही टिप्पणी
ericn

11
मैंने जल्दबाजी में सवाल को गलत बताया और इस उत्तर को उपयोगी पाया। उसी गलती को करने के लिए धन्यवाद, जो मैंने किया था, लेकिन अब मैं यह सुझाव देना चाहूंगा कि उस चेतावनी को शामिल करने के लिए संशोधित किया जाए।
ड्यूरेटे

वैसे, मैंने इसे देखा, वहाँ भी है vw
एरोन फ्रेंके

14

मुझे एक समान समस्या थी और समाधान यह करना था:

#cloud-container{
    position:absolute;
    top:0;
    bottom:0;
}

मैं एक पृष्ठ-केंद्रित div चाहता था जिसकी ऊँचाई पृष्ठ की ऊँचाई 100% हो, इसलिए मेरा कुल समाधान था:

#cloud-container{
    position:absolute;
    top:0;
    bottom:0;
    left:0;
    right:0; 
    width: XXXpx; /*otherwise div defaults to page width*/
    margin: 0 auto; /*horizontally centers div*/
}

आपको एक मूल तत्व (या केवल 'शरीर') बनाने की आवश्यकता हो सकती है position: relative;


16
हर कोई इसे क्यों कह रहा है cloud-container?
विल्फ

यह एक अच्छा है! ऊंचाई तय करने को नजरअंदाज करना वास्तव में एक शानदार विचार है और मैंने अभी तक इसके साथ कोई बग नहीं देखा है। इसे प्यार करना। चुम्मा ! टिप मैन के लिए धन्यवाद!
डेन्चेज

13

आप अशुद्ध कॉलम का उपयोग करके धोखा दे सकते हैं या आप कुछ सीएसएस ट्रिकरी का उपयोग कर सकते हैं


1
ध्यान दें कि सीएसएस चालबाजी से आपको समान ऊंचाई वाले कॉलम मिलेंगे, लेकिन 100% ऊंचाई वाले कॉलम नहीं।
thedz

यदि नव बार सामग्री की ऊंचाई तक फैलता है, जो पृष्ठ की ऊंचाई निर्धारित करता है, तो यह आपको 100% ऊंचाई देगा।
रयान डोहर्टी

1
-1 यह सुनिश्चित करने के लिए कि नेव बार हमेशा पर्याप्त ऊंचा होने के लिए 100% सुरक्षित रास्ता नहीं प्रदान करता है।
आरोन दिगुल्ला

मृत लिंक: ((((
JBis

9

यह तालिका का उपयोग करके सरल है:

<html>

<head>
    <title>100% Height test</title>
</head>

<body>
    <table style="float: left; height: 100%; width: 200px; border: 1px solid red">
        <tbody>
            <tr>
                <td>Nav area</td>
            </tr>
        </tbody>
    </table>
    <div style="border: 1px solid green;">Content blabla... text
        <br /> text
        <br /> text
        <br /> text
        <br />
    </div>
</body>

</html>

जब DIV पेश किया गया था, तो लोग तालिकाओं से इतना डरते थे कि गरीब DIV रूपक हथौड़ा बन गया।


6
जबकि DIV और द्रव शैली महान हैं, मुझे लगता है कि CSS अभी भी उसी तरह से स्क्रीन लेआउट के सार को कैप्चर करने में विफल है जिस तरह से टेबल लेआउट के सार को प्राप्त करता है। ... और टेबल लेआउट अभी भी चीजों को करने का एक स्वीकार्य तरीका है।
जेफ मीटबॉल यांग

9
सारणी डेटा के लिए तालिकाएँ होती हैं, पृष्ठ लेआउट नहीं। कहा जा रहा है कि, सीएसएस के पास कुछ बड़ी कमियां हैं, जब यह उम्र-पुराने 100% ऊंचाई के सवाल पर आता है। मुझे यह स्वीकार करना होगा कि मैंने इस समाधान का उपयोग तंग समय सीमा पर किया है, लेकिन यह हमेशा ऐसा महसूस करता था कि मैं हार मान रहा हूं।
स्कॉट ग्रीनफ़ील्ड

6
@ संकेत: मैंने एक बार तीन प्रमुख ब्राउज़रों में 100% ऊंचाई के डिज़ाइन को प्राप्त करने की कोशिश में तीन सप्ताह बर्बाद कर दिए हैं। मैं वास्तव में "टेबल खराब हैं" बकवास अब नहीं सुन सकता :-( यहां तक ​​कि मेरे ज्ञान के साथ, DIVs का उपयोग करना बहुत जटिल है।
हारून डिगुल्ला

1
उचित योजना यह सुनिश्चित करती है कि तालिकाओं पर कोई निर्भरता आवश्यक नहीं है। अब 2012 में, इंडस्ट्रीज़ के साथ IE6 / 7 से आगे बढ़ने के साथ, मैं 100% ऊंचाई के लिए तालिकाओं का उपयोग करने के खिलाफ दृढ़ता से सलाह देता हूं!
वेल विक्टस

4
आपको <table> का उपयोग करने की आवश्यकता नहीं है, आप <div style = "display: table;" : डी
विल्फ

8

स्थिति का पूर्ण उपयोग करें। ध्यान दें कि यह नहीं है कि हम आम तौर पर कैसे स्थिति का उपयोग करने के लिए उपयोग किए जाते हैं जो मैन्युअल रूप से चीजों को बिछाने या अस्थायी संवाद करने की आवश्यकता होती है। जब आप विंडो या सामग्री का आकार बदल लेंगे तो यह अपने आप खिंच जाएगा। मेरा मानना ​​है कि इसके लिए मानक मोड की आवश्यकता है लेकिन IE6 और इसके बाद के संस्करण में काम करेगा।

बस अपनी सामग्री के साथ आईडी को cont thecontent ’के साथ बदलें (चित्रण के लिए निर्दिष्ट ऊँचाई है, आपको वास्तविक सामग्री पर ऊँचाई निर्दिष्ट करने की आवश्यकता नहीं है।

<div style="position: relative; width: 100%;">
      <div style="position: absolute; left: 0px; right: 33%; bottom: 0px; top: 0px; background-color: blue; width: 33%;" id="navbar">nav bar</div>
      <div style="position: relative; left: 33%; width: 66%; background-color: yellow;" id="content">
         <div style="height: 10000px;" id="thecontent"></div>
      </div>
</div>

जिस तरह से यह काम करता है वह यह है कि बाहरी डिव नेव बार के लिए एक संदर्भ बिंदु के रूप में कार्य करता है। बाहरी div 'सामग्री' div की सामग्री से फैला है। नौसेना बार अपने माता-पिता की ऊंचाई तक खुद को फैलाने के लिए पूर्ण स्थिति का उपयोग करता है। क्षैतिज संरेखण के लिए हम सामग्री को स्वयं को नावबार की उसी चौड़ाई से ऑफसेट करते हैं।

यह CSS3 फ्लेक्स बॉक्स मॉडल के साथ बहुत आसान बना दिया गया है, लेकिन यह IE में अभी तक उपलब्ध नहीं है और इसमें से कुछ खुद के हैं।


हाय tstanis, मैं IE6 पर परीक्षण किया और नावबार खिंचाव नहीं था । फ़ायरफ़ॉक्स पर, क्रोम हालांकि यह बहुत काम करता है।
लुकास कुम्हार

IE6 पर, एक तालिका या जावास्क्रिप्ट या एक ब्राउज़र स्विच का उपयोग करें जब तक कि आपने इससे पहले एक दर्जन बार ऐसा नहीं किया हो।
आरोन दिगुल्ला

6

मैं आपके समान समस्या में भाग गया। मैं एक DIVपृष्ठभूमि बनाना चाहता था , क्यों, क्योंकि जावास्क्रिप्ट के माध्यम से div में हेरफेर करना आसान है। वैसे भी तीन चीजें मैंने उस div के लिए css में कीं।

सीएसएस:

{    
position:absolute; 
display:block; 
height:100%; 
width:100%; 
top:0px; 
left:0px; 
z-index:-1;    
}

6

यदि आप अधिक आधुनिक ब्राउज़रों को लक्षित कर रहे हैं, तो जीवन बहुत सरल हो सकता है। प्रयत्न:

.elem{    
    height: 100vh;
 }

यदि आपको पृष्ठ के 50% पर इसकी आवश्यकता है, तो 100 को 50 के साथ बदलें।


3
यह मानता है कि पृष्ठ की ऊँचाई स्क्रीन की ऊँचाई के समान है। पृष्ठ अक्सर स्क्रीन की ऊंचाई से बहुत अधिक लंबा हो सकता है, इसलिए हम नीचे स्क्रॉल करते हैं।
तिवदेव

5

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

<!DOCTYPE html>
<html>
	<head>
		<style>
			html, body {
			    margin: 0px 0px;
			    height 100%;
			}
          
            div.full-page {
                position: fixed;
                top: 0;
                bottom: 0;
                width: 100%;
                height: 100%;
                background-color: #000;
                opacity:0.8;
                overflow-y: hidden;
                overflow-x: hidden;
            }
          
            div.full-page div.avoid-content-highlight {
                position: relative;
                width: 100%;
                height: 100%;
            }
          
            div.modal-popup {
                position: fixed;
                top: 20%;
                bottom: 20%;
                left: 30%;
                right: 30%;
                background-color: #FFF;
                border: 1px solid #000;
            }
		</style>
		<script>
		
			// Polling for the sake of my intern tests
			var interval = setInterval(function() {
				if(document.readyState === 'complete') {
					clearInterval(interval);
					isReady();
				}    
			}, 1000);
			
			function isReady() {
				document.getElementById('btn1').disabled = false;
				document.getElementById('btn2').disabled = false;
				
				// disable scrolling
                document.getElementsByTagName('body')[0].style.overflow = 'hidden';
			}
			
			function promptModalPopup() {
                document.getElementById("div1").style.visibility = 'visible';
                document.getElementById("div2").style.visibility = 'visible';
				
				// disable scrolling
                document.getElementsByTagName('body')[0].style.overflow = 'hidden';
            }
          
            function closeModalPopup() {
                document.getElementById("div2").style.visibility = 'hidden';  
                document.getElementById("div1").style.visibility = 'hidden';
				
				// enable scrolling
                document.getElementsByTagName('body')[0].style.overflow = 'scroll';
            }
		</script>
		
	</head>
	<body id="body">
		<div id="div1" class="full-page">
			<div class="avoid-content-highlight">
                
            </div>
		</div>
        <button id="btn1" onclick="promptModalPopup()" disabled>Prompt Modal Popup</button>
		<div id="demo">
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
			<h2>Original content</h2>
		</div>
        <div id="div2" class="modal-popup">
            I am on top of all other containers
            <button id="btn2" onclick="closeModalPopup()" disabled>Close</button>
        <div>
	</body>
</html>

सौभाग्य ;-)



1

 
           document.body.onload = function () {
                var textcontrol = document.getElementById("page");
                textcontrol.style.height = (window.innerHeight) + 'px';
            }
<html>
<head><title></title></head>
<body>

<div id="page" style="background:green;">
</div>
</body>
</html>


कृपया अपने उत्तर में कुछ स्पष्टीकरण जोड़ें, यह दर्शाता है कि यह क्या करता है और यह समस्या को कैसे हल करता है
हमारे आदमी को केले में

div "पृष्ठ" किसी भी मंच से 100% ऊंचाई। बस js स्क्रिप्ट को <script> </ script> टैग में कॉपी करें और HTML कोड में पेस्ट करें।
reaw_ni

0

सरल, बस इसे एक टेबल डिव में लपेटो ...

HTML:

<div class="fake-table">
   <div class="left-side">
     some text
   </div>
   <div class="right-side">
     My Navigation or something
   </div>
</div>

सीएसएस:

<style>

 .fake-table{display:table;width:100%;height:100%;}
 .left-size{width:30%;height:100%;}
 .left-size{width:70%;height:100%;}

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