दिलचस्प पोस्ट
__dirname और। / Node.js में क्या अंतर है? क्या यूटीसी डेलाइट सेविंग टाइम का पालन करता है? जावा में लाइनों के साथ ड्रा करें मेरे बास स्क्रिप्ट को मेरे सभी कार्यों के लिए पारित करने वाले सभी तर्कों को कैसे पारित किया जाए? क्यूमेक – आउटपुट में एक फाइल कॉपी कैसे करें क्या एक पृष्ठ को बंद करने के बाद भी एक स्क्रिप्ट चलती रहती है? वेब। Xml में संसाधन-रिफ में क्या उपयोग किया जाता है? एक कॉलम के MySQL राशि तत्व VB .NET में नियंत्रण कक्ष बनाने के लिए विंडोज फॉर्म सी # एप्लिकेशन में विन्यास फाइल रखने का सबसे सरल तरीका क्लिक करने पर छवि फ़ाइलों को डाउनलोड करने के लिए ब्राउज़र को बल दें क्या करता है। कंटेनर। \ 31 25 \ 25 सीएसएस में क्या मतलब है? घुमाएगी 3 डी शॉर्टहैंड स्ट्रिंग पर क्यों नहीं == काम करता है? स्विफ्ट में UIImageView ऑब्जेक्ट के लिए कोई कार्रवाई कैसे करें

एचटीएमएल / सीएसएस के साथ मैं बराबर ऊँचाई div (किनारे की तरफ) कैसे प्राप्त करूं?

मेरे कंटेनर के अंदर दो डिवाइसेस हैं एक बायीं ओर, एक दायीं ओर, एक तरफ से। मैं प्रत्येक एक समान ऊंचाई के बराबर कैसे बना सकता हूं, भले ही उनके पास अलग-अलग सामग्री है

उदाहरण के लिए, दाएं div में बहुत सारी सामग्री होती है, और बाएं div की ऊंचाई दोगुनी होती है, मैं बाएं div खंड को सही div की एक ही ऊंचाई तक कैसे कर सकता हूं?

यह पूरा करने के लिए कुछ जावास्क्रिप्ट (jQuery) कोड है?

वेब के समाधान से एकत्रित समाधान "एचटीएमएल / सीएसएस के साथ मैं बराबर ऊँचाई div (किनारे की तरफ) कैसे प्राप्त करूं?"

आप jQuery का उपयोग कर सकते हैं, लेकिन ऐसा करने के लिए बेहतर तरीके हैं।

इस प्रकार का प्रश्न बहुत ऊपर आता है और आम तौर पर 3 जवाब हैं …

1. सीएसएस का उपयोग करें

ऐसा करने के लिए यह 'सबसे अच्छा' तरीका है, क्योंकि यह सबसे अर्थपूर्ण शुद्ध दृष्टिकोण है (जे एस को सहारा देने के बिना), जो अपनी समस्याएं हैं। सबसे अच्छा तरीका display: table-cell का उपयोग करना display: table-cell और संबंधित मान आप अशुद्ध पृष्ठभूमि तकनीक (जो आप CSS3 के ग्रेडियेंट के साथ कर सकते हैं) का उपयोग करने की कोशिश कर सकते हैं।

2. टेबल्स का उपयोग करें

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

3. jQuery / जावास्क्रिप्ट का प्रयोग करें

जेएस अक्षम किए गए को छोड़कर, अधिक सिमेंटिक मार्कअप होने में यह लाभ, आप की इच्छा के प्रभाव को प्राप्त नहीं करेंगे।

यह शुद्ध सीएसएस के साथ करने का एक तरीका है, जैसा कि आप उदाहरण (जो कि आईई 7 और फ़ायरफ़ॉक्स में काम करता है) पर ध्यान देंगे, सीमाएं मुश्किल हो सकती हैं – लेकिन ये असंभव नहीं हैं, इसलिए यह सब निर्भर करता है कि आप क्या चाहते हैं कर। यह उदाहरण शरीर के एक सामान्य सीएसएस संरचना को ग्रहण करता है- आवरण> सामग्री कंटेनर> स्तंभ 1 और स्तंभ 2

कुंजी नीचे मार्जिन और उसके रद्द करने के पैडिंग है।

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Equal Height Columns</title> <style type="text/css"> <!-- * { padding: 0; margin: 0; } #wrapper { margin: 10px auto; width: 600px; } #wrapper #main_container { width: 590px; padding: 10px 0px 10px 10px; background: #CCC; overflow: hidden; border-bottom: 10px solid #CCC; } #wrapper #main_container div { float: left; width: 263px; background: #999; padding: 10px; margin-right: 10px; border: 1px solid #000; margin-bottom: -1000px; padding-bottom: 1000px; } #wrapper #main_container #right_column { background: #FFF; } --> </style> </head> <body> <div id="wrapper"> <div id="main_container"> <div id="left_column"> <p>I have two divs inside of a container. One on the left, one on the right, side by side. How am I able to make each one be of equal height, even though they have different content.</p> </div><!-- LEFT COLUMN --> <div id="right_column"> <p>I have two divs inside of a container. One on the left, one on the right, side by side. How am I able to make each one be of equal height, even though they have different content.</p> <p>&nbsp;</p> <p>For example, the right div has a lot of content, and is double the height of the left div, how do I make the left div stretch to the same height of the right div?</p> <p>&nbsp;</p> <p>Is there some JavaScript (jQuery) code to accomplish this?</p> </div><!-- RIGHT COLUMN --> </div><!-- MAIN CONTAINER --> </div><!-- WRAPPER --> </body> </html> 

यह है जो ऐसा लग रहा है:

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

आप इसे जेएस के साथ काम कर सकते हैं:

 <script> $(document).ready(function() { var height = Math.max($("#left").height(), $("#right").height()); $("#left").height(height); $("#right").height(height); }); </script> 

मैंने ऐसा करने के कई प्रयासों को देखा है, हालांकि कोई भी मेरी OCD जरूरतों को पूरा नहीं करता है आपको इसके आसपास अपना सिर प्राप्त करने के लिए एक दूसरे को समर्पित करना पड़ सकता है, हालांकि जावास्क्रिप्ट की तुलना में यह बेहतर है।

ज्ञात डाउनसाइड्स:

  • गतिशील चौड़ाई वाले कंटेनर के मामले में एकाधिक तत्व पंक्तियों का समर्थन नहीं करता है।
  • IE6 में काम नहीं करता है

आधार:

आधार लेआउट

  • लाल (सहायक) कंटेनर है कि आप सामग्री को मार्जिन सेट करने के लिए उपयोग करेंगे
  • हरे position: relative; overflow: hidden position: relative; overflow: hidden और (वैकल्पिक रूप से, यदि आप स्तंभों को केंद्रित करना चाहते हैं) text-align: center; font-size: 0; line-height: 0; text-align: center; font-size: 0; line-height: 0;
  • नीले display: block; float: left; display: block; float: left; या (वैकल्पिक रूप से, यदि आप स्तंभों को केंद्रित करना चाहते हैं) display: inline-block; vertical-align: top; display: inline-block; vertical-align: top;

अब तक सामान्य से कुछ भी नहीं जो तत्व नीले तत्व में है, आपको इस तत्व के साथ बिल्कुल तैनात तत्व जोड़ना होगा ( पीले ; ध्यान दें कि इस तत्व का z-index नीले बॉक्स की वास्तविक सामग्री से कम होना चाहिए) और top: 0; bottom: 0; सेट top: 0; bottom: 0; top: 0; bottom: 0; (बाएं या सही स्थिति सेट नहीं करें)

पूर्ण के साथ आधार

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

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

इसे प्राप्त करने के लिए, आपको padding-bottom तत्वों के लिए निश्चित ऊँचाई सामग्री के लिए padding-bottom ( ग्रीन हरा ) ईक को जोड़ने की आवश्यकता है।

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

फिर पीले रंग के तत्वों में एक और स्थिति पूरी तरह से तैनात होती है ( left: 0; bottom: 0; ) तत्व ( गहरा नीला )।

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

माना जाता है कि यदि इन बक्से ( पीले ) को सक्रिय हाइपरलिंक्स होना था और आपको कोई शैली थी जिसे आप मूल ब्लू बॉक्स पर लागू करना चाहते थे, तो आप आसन्न भाई चयनकर्ता का प्रयोग करेंगे:

 yellow:hover + blue {} 

यहां एक कोड और डेमो है :

HTML:

 <div id="products"> <ul> <li class="product a"> <a href=""> <p class="name">Ordinary product description.</p> <div class="icon-product"></div> </a> <p class="name">Ordinary product description.</p> </li> <li class="product b"> <a href=""> <p class="name">That lenghty product description or whatever else that does not allow you have fixed height for these elements.</p> <div class="icon-product"></div> </a> <p class="name">That lenghty product description or whatever else that does not allow you have fixed height for these elements.</p> </li> <li class="product c"> <a href=""> <p class="name">Another ordinary product description.</p> <div class="icon-product"></div> </a> <p class="name">Another ordinary product description.</p> </li> </ul> </div> 

एससीएसएस / कम:

 #products { ul { position: relative; overflow: hidden; text-align: center; font-size: 0; line-height: 0; padding: 0; margin: 0; li { display: inline-block; vertical-align: top; width: 130px; padding: 0 0 130px 0; margin: 0; } } li { a { display: block; position: absolute; width: 130px; background: rgba(255,0,0,.5); z-index: 3; top: 0; bottom: 0; .icon-product { background: #ccc; width: 90px; height: 90px; position: absolute; left: 20px; bottom: 20px; } .name { opacity: 1; } } .name { position: relative; margin: 20px 10px 0; font-size: 14px; line-height: 18px; opacity: 0; } a:hover { background: #ddd; text-decoration: none; .icon-product { background: #333; } } } } 

ध्यान दें, डेमो एक वैकल्पिक हल का उपयोग कर रहा है जिसमें z-index को ठीक करने के लिए डेटा-दोहराव शामिल है। वैकल्पिक रूप से, आप pointer-events: none उपयोग कर सकते हैं pointer-events: none IE और IE के लिए जो भी समाधान

यहां एक छोटा सीएसएस डिस्प्ले के साथ बहुत आसान समाधान है: तालिका

 <div id="main" class="_dt-no-rows"> <div id="aside" contenteditable="true"> Aside <br> Here's the aside content </div> <div id="content" contenteditable="true"> Content <br> geht's pellentesque wurscht elementum semper tellus s'guelt Pfourtz !. gal hopla <br> TIP : Just clic on this block to add/remove some text </div> </div> 

यहां सीएसएस है I

 #main { display: table; width: 100%; } #aside, #content { display: table-cell; padding: 5px; } #aside { background: none repeat scroll 0 0 #333333; width: 250px; } #content { background: none repeat scroll 0 0 #E69B00; } 

इसकी तरह ये देखो

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

अच्छा, मैं jQuery का एक टन नहीं करता, लेकिन सीएसएस / जावास्क्रिप्ट की दुनिया में मैं ऑब्जेक्ट मॉडल का इस्तेमाल करता हूं और एक बयान लिखता हूं:

 if(leftDiv.style.height > rightDive.style.height) rightDiv.style.height = leftDiv.style.height; else leftDiv.style.height = rightDiv.style.height) 

यहां एक jQuery प्लगइन भी है जिसे समान हीइट्स कहा जाता है जिसे मैंने कुछ सफलता के साथ उपयोग किया है।

मुझे यकीन नहीं है कि मैं जो प्रयोग कर रहा हूं वह ऊपर वर्णित फिलामेंट समूह से है, या यदि यह पहला गुगल परिणाम होता है … तो एक जावा प्लगइन संभवतः सबसे आसान, सबसे लचीला तरीका है चले जाओ।

इसका उपयोग jquery दस्तावेज़ तैयार फ़ंक्शन में करें। यह देखते हुए कि दो डिवाईज़ "आईडी" "सही" और "सही" हैं।

 var heightR = $("#right").height(); var heightL = $("#left").height(); if(heightL > heightR){ $("#right").css({ height: heightL}); } else { $("#left").css({ height: heightR}); } 

हालांकि कई लोग इस प्रकार की चीज़ के लिए जावास्क्रिप्ट का उपयोग करने से असहमत हैं, लेकिन यहां एक ऐसी विधि है, जिसका इस्तेमाल मैं केवल जावास्क्रिप्ट का उपयोग करने के लिए करता था:

 var rightHeight = document.getElementById('right').clientHeight; var leftHeight = document.getElementById('left').clientHeight; if (leftHeight > rightHeight) { document.getElementById('right').style.height=leftHeight+'px'; } else { document.getElementById('left').style.height=rightHeight+'px'; } 

"बायीं" और "दाएं" के साथ आईडी के दो डिवेल टैग

सादे जावास्क्रिप्ट में मैं यही उपयोग करता हूं:

लंबे लगता है, लेकिन बहुत सीधी है!

 function equalizeHeights(elements){ //elements as array of elements (obtain like this: [document.getElementById("domElementId"),document.getElementById("anotherDomElementId")] var heights = []; for (var i=0;i<elements.length;i++){ heights.push(getElementHeight(elements[i],true)); } var maxHeight = heights[biggestElementIndex(heights)]; for (var i=0;i<elements.length;i++){ setElementHeight(elements[i],maxHeight,true); } } function getElementHeight(element, isTotalHeight){ // isTotalHeight triggers offsetHeight //The offsetHeight property is similar to the clientHeight property, but it returns the height including the padding, scrollBar and the border. //http://stackoverflow.com/questions/15615552/get-div-height-with-plain-javascript { isTotalHeight = typeof isTotalHeight !== 'undefined' ? isTotalHeight : true; } if (isTotalHeight){ return element.offsetHeight; }else{ return element.clientHeight; } } function setElementHeight(element,pixelHeight, setAsMinimumHeight){ //setAsMinimumHeight: is set, we define the minimum height, so it can still become higher if things change... { setAsMinimumHeight = typeof setAsMinimumHeight !== 'undefined' ? setAsMinimumHeight : false; } var heightStr = "" + pixelHeight + "px"; if (setAsMinimumHeight){ element.style.minHeight = heightStr; // pixels }else{ element.style.height = heightStr; // pixels } } function biggestElementIndex(arr){ //http://stackoverflow.com/questions/11301438/return-index-of-greatest-value-in-an-array var max = arr[0]; var maxIndex = 0; for (var i = 1; i < arr.length; i++) { if (arr[i] > max) { maxIndex = i; max = arr[i]; } } return maxIndex; } 

मैं प्रारंभिक उत्तर से सहमत हूं, लेकिन समान स्थितियों के साथ जेएस समाधान () विधि कुछ परिस्थितियों में काम नहीं करता है, कल्पना करें कि आपके पास एक-दूसरे के पास उत्पाद है यदि आप इसे केवल माता-पिता के कंटेनर में लागू करने के लिए होते हैं, तो वे समान ऊंचाई पर होंगे, लेकिन यदि कोई दो पंक्ति में फिट नहीं है तो उत्पाद नाम अनुभाग अलग-अलग हो सकते हैं, यह वह जगह है जहां मैं नीचे का सुझाव देता हूं

https://jsfiddle.net/0hdtLfy5/3/

 function make_children_same_height(element_parent, child_elements) { for (i = 0; i < child_elements.length; i++) { var tallest = 0; var an_element = child_elements[i]; $(element_parent).children(an_element).each(function() { // using outer height since that includes the border and padding if(tallest < $(this).outerHeight() ){ tallest = $(this).outerHeight(); } }); tallest = tallest+1; // some weird shit going on with half a pixel or something in FF and IE9, no time to figure out now, sowwy, hence adding 1 px $(element_parent).children(an_element).each(function() { $(this).css('min-height',tallest+'px'); }); } }