2008-09-26 14 views
29

मुझे उम्मीद है कि कोई मेरी मदद करने में सक्षम हो सकता है। मैंने अपने उदाहरण को सरल बनाने की कोशिश की है जितना मैं कर सकता हूं।अतिप्रवाह के साथ डीआईवी: ऑटो और 100% चौड़ी तालिका

मेरे पास एक बिल्कुल स्थित डीआईवी है, जो इस उदाहरण के लिए मैंने ब्राउज़र विंडो भर दी है। इस div में ओवरफ़्लो है: जब DIV प्रदर्शित करने के लिए सामग्री बहुत बड़ी होती है तो स्क्रॉल बार प्रदान करने के लिए ऑटो विशेषता।

डीआईवी के भीतर मेरे पास कुछ डेटा पेश करने के लिए एक टेबल है, और इसकी चौड़ाई 100% है।

जब सामग्री बहुत बड़ी लंबवत हो जाती है, तो मुझे लंबवत स्क्रॉल बार दिखाई देने की उम्मीद है और स्क्रॉल बार को समायोजित करने के लिए तालिका क्षैतिज रूप से थोड़ी कम हो जाती है। हालांकि आईई 7 में क्या होता है क्षैतिज स्क्रॉल बार भी प्रकट होता है, भले ही div में सभी सामग्री के लिए क्षैतिज रूप से पर्याप्त स्थान हो।

यह आईई विशिष्ट है - फ़ायरफ़ॉक्स पूरी तरह से काम करता है।

नीचे पूरा स्रोत। किसी भी मदद की बहुत सराहना की।

टोनी

<!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 runat="server"> 
    <title>Table sizing bug?</title> 
    <style> 
     #maxsize 
     { 
      position: absolute; 
      left: 5px; 
      right: 5px; 
      top: 5px; 
      bottom: 5px; 
      border: 5px solid silver; 
      overflow: auto; 
     } 
    </style> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="maxsize"> 
     <p>This will be fine until such time as the vertical size forces a 
      vertical scroll bar. At this point I'd expect the table to re-size 
      to now take into account of the new vertical scroll bar. Instead, 
      IE7 keeps the table the full size and introduces a horizontal 
      scroll bar. 
     </p> 
     <table width="100%" cellspacing="0" cellpadding="0" border="1"> 
     <tbody> 
      <tr> 
       <td>A</td> 
       <td>B</td> 
       <td>C</td> 
       <td>D</td> 
       <td>E</td> 
       <td>F</td> 
       <td>G</td> 
       <td>H</td> 
       <td>I</td> 
       <td>J</td> 
       <td>K</td> 
       <td>L</td> 
       <td>M</td> 
       <td>N</td> 
       <td>O</td> 
       <td>P</td> 
       <td>Q</td> 
       <td>R</td> 
      </tr> 
     </tbody> 
     </table> 

     <p>Resize the browser window vertically so this content doesn't 
      fit any more</p> 
     <p>Hello</p><p>Hello</p><p>Hello</p><p>Hello</p><p>Hello</p> 
     <p>Hello</p><p>Hello</p><p>Hello</p><p>Hello</p><p>Hello</p> 
    </div> 
    </form> 
</body> 
</html> 

03/16/10 जोड़ा ... सोचा था कि यह इंगित करने के लिए दिलचस्प हो सकता है कि एक टिप्पणी में यह सवाल ... को GWT के स्रोत कोड अंक http://www.google.com/codesearch/p?hl=en#MTQ26449crI/com/google/gwt/user/client/ui/ScrollPanel.java&q=%22hack%20to%20account%20for%20the%22%20scrollpanel&sa=N&cd=1&ct=rc&l=48

उत्तर

0

ऐसा लगता है कि यह आपकी समस्या को ठीक करना चाहिए, जब तक कि आप कंडीशन स्टेटमेंट से अवगत नहीं हैं। Fixing IE overflow

5

बदलें:

overflow: auto; 

रहे हैं:

overflow-y:hidden; 
overflow-x:auto; 
+1

यह विधि क्षैतिज स्क्रॉलबार को दबाती है, लेकिन यह आंतरिक तालिका की चौड़ाई को दोबारा नहीं हटाती है। तो जब लंबवत स्क्रॉलबार दिखाए जाते हैं, तो आंतरिक तालिका का किनारा काट दिया जाता है। यह आपके लेआउट में स्वीकार्य हो सकता है या नहीं भी हो सकता है। –

0

दुर्भाग्य से, यह IE के एक मोड़ है। फ़ायरफ़ॉक्स के समान काम करने के लिए शुद्ध एक्सएचटीएमएल और सीएसएस का उपयोग करने का कोई तरीका नहीं है।

आप खिड़की के आकार का पता लगाने के लिए जावास्क्रिप्ट का उपयोग करके इसे कर सकते हैं और तालिका की चौड़ाई गतिशील रूप से सेट कर सकते हैं। यदि आप वास्तव में उस मार्ग पर जाना चाहते हैं तो मैं उस पर अधिक जानकारी जोड़ सकता हूं।

5

ठीक है, यह मुझे लंबे समय तक पीड़ा देता है। मैंने बहुत सारे डिज़ाइन किए हैं जिनके पास दाईं तरफ अतिरिक्त पैडिंग है, आईईएस को अपनी स्क्रॉलबार के लिए पूरी तरह से उपेक्षा करने की अनुमति है।

उत्तर है: घोंसले दो divs, उन्हें दोनों को देना है, आंतरिक को एक ओवरफ्लो सेट करें।

<!-- zoom: 1 is a proprietary IE property. It doesn't really do anything here, except give hasLayout --> 

<div style="zoom: 1;"> 
    <div style="zoom: 1; overflow: auto"> 
     <table style="width: 100%"... 
     ... 
     </table> 
    </div> 
</div> 

http://www.satzansatz.de/cssd/onhavinglayout.html
वहाँ जाओ लेआउट

+0

मुझे नहीं लगता कि यह महत्वपूर्ण है कि div में ओवरफ़्लो सेट है। – CaffGeek

+0

@ चाड: क्या आप कृपया एक पहेली प्रदान कर सकते हैं जो दिखाता है कि यह आंतरिक div पर अतिप्रवाह सेट के साथ काम करता है। क्योंकि मुझे यही चाहिए जबकि मैं इसे केवल दूसरे तरीके से काम करने के लिए प्राप्त कर सकता हूं। – raphinesse

33

होने मैं IE7 में अत्यधिक horizonal पट्टी के साथ एक समस्या थी के बारे में अधिक पढ़ने के लिए।मैं का उपयोग किया है डी कार्टर के समाधान slighty बदल

<div style="zoom: 1; overflow: auto;"> 
    <div id="myDiv" style="zoom: 1;"> 
     <table style="width: 100%"... 
     ... 
     </table> 
    </div> 
</div> 

IE ब्राउज़र की तुलना में कम 7 आप जोड़ना जरूरत में काम करने के लिए:

<!--[if lt IE 7]><style> #myDiv { overflow: auto; } </style><![endif]--> 
+0

यह मेरे लिए काम करता है। मेरे पास बाहरी div पर अधिकतम ऊंचाई है। –

+0

हे, जीडब्ल्यूटी इस उत्तर का उपयोग करता है और इसे अपने स्रोत कोड में इंगित करता है। :) http://www.google.com/codesearch/p?hl=hi#MTQ26449crI/com/google/gwt/user/client/ui/ScrollPanel.java&q=%22hack%20to%20account%20for%20the%22 % 20scrollpanel और sa = एन और सीडी = 1 और सीटी = आरसी और एल = 48 – Epaga

+0

@Epaga। धन्यवाद। जानना अच्छा है :) – cetnar

8

Eran गैल्पेरिन के समाधान तथ्य यह है कि बस क्षैतिज स्क्रॉल को बंद करने के लिए खाते में विफल रहता है अभी भी तालिका को लंबवत स्क्रॉलबार को अंडरलैप करने की अनुमति देगा। मुझे लगता है कि ऐसा इसलिए है क्योंकि आईई यह तय करने से पहले "100%" के अर्थ की गणना कर रहा है कि इसे लंबवत स्क्रॉलबार की आवश्यकता है, फिर उपलब्ध शेष क्षैतिज स्थान के लिए फिर से समायोजित करने में विफल रहा है। यह नाखून ऊपर

cetnar के समाधान है, हालांकि:

<div style="zoom: 1; overflow: auto;"> 
    <div id="myDiv" style="zoom: 1;"> 
     <table style="width: 100%"> 
     ... 
     </table> 
    </div> 
</div> 

यह IE6 पर ठीक से काम करता है और मेरे परीक्षणों में 7। मैं जो कह सकता हूं उससे, हैक वास्तव में IE6 पर आवश्यक नहीं दिखता है।

+11

2012 में दुर्भाग्य से किसी के लिए स्पष्टीकरण देने के लिए (या बाद में!): कुंजी में आपकी 100% चौड़ाई वाली तालिका है जिसमें हैलेआउट के साथ एक तत्व में लपेटा गया है (उदाहरण के लिए, जोएल के उदाहरण में #myDiv, div ज़ूम के साथ: 1 ट्रिगर ट्रिगर करने के लिए) ओवरफ्लो के साथ स्क्रॉलिंग तत्व के अंदर: ऑटो। यह आईई को लंबवत स्क्रॉलबार की चौड़ाई को ध्यान में रखते हुए तालिका की चौड़ाई को फिर से भरने का कारण बनता है। –

1

यदि यह शरीर टैग है जो क्षैतिज स्क्रॉल होने पर जोर देता है (मुझे लगता है क्योंकि मेरे पास बाल तत्व 100% पर सेट हैं) तो आप IE7 (या 8 संगतता मोड) में समस्या को ठीक करने के लिए इसे अपने सीएसएस में जोड़ सकते हैं:

html{overflow-x:hidden;} 
संबंधित मुद्दे