2012-12-05 65 views
30

के साथ एक तत्व के सापेक्ष स्थिति के बाद दिखाई देने वाले व्हाइटस्पेस को कैसे हटाएं, मैं इस समस्या के लिए दूर और व्यापक देख रहा हूं और अंत में Google के पेज # 10 पर कुछ अस्पष्ट मंच पर समाधान मिला। समाधान उत्तर में हैसीएसएस

समस्या होती है निम्न: सीएसएस के साथ एक तत्व को सापेक्ष स्थिति के बाद मुझे तत्व कहां था ... मुझे सफेद जगह नहीं चाहिए!

.thetext 
 
    { 
 
     width:400px; 
 
     background:yellow; 
 
     border: 1px dashed red; 
 
     margin:50px; 
 
     padding:5px; 
 
     font-weight:bold; 
 
    } 
 
    .whiteblob 
 
    { 
 
     position:relative; 
 
     top:-140px; 
 
     left:70px; 
 
     width:200px; 
 
     height:50px; 
 
     border: 4px solid green; 
 
     background:white; 
 
     font-size:2.5em; 
 
     color:red; 
 
     
 
    } 
 
    .footerallowedwhitespaceinblue 
 
    { 
 
     height:10px; 
 
     background-color:blue; 
 
    } 
 
    .footer 
 
    { 
 
     background-color:grey; 
 
     height:200px; 
 
    }
<div class="thetext"><script type="text/javascript">for(c=0;c<50;c++){document.write("Lorem ipsum dolor est, ");}</script> 
 
    </div> 
 
    <div class="whiteblob"> 
 
     &nbsp;buy this! 
 
    </div> 
 
    <div class="footerallowedwhitespaceinblue"> 
 
    </div> 
 
    <div class="footer"> 
 
     The whitespace above is way to big! The buy this still takes up space whilst it is moved. 
 
    </div>

JSFiddle: http://jsfiddle.net/qqXQn/

आप उदाहरण में देख सकते हैं, इसमें केवल रिक्त स्थान मैं चाहता हूँ 50px के अंतर से thetext ब्लॉक की वजह से खाली स्थान के है; और footerallowedwhitespaceinblue द्वारा रिक्ति (बनाया नीला तो यह दिखाई दे रहा है)। समस्या यह है कि ... व्हाइटस्पेस अब बहुत बड़ा है क्योंकि "इसे खरीदें" div अभी भी अपेक्षाकृत स्थानांतरित होने के बाद भी स्थान लेता है।

मैं इसे कैसे हल करूं?

उत्तर

40

आप इसे नकारात्मक मार्जिन लागू करके आसानी से हल कर सकते हैं जो तत्व की चौड़ाई या ऊंचाई के बराबर है।

शीर्ष पर स्थित 100px ऊंचाई के तत्व के लिए आप मार्जिन-तल लागू करेंगे: -100 पीएक्स;

नीचे की ओर स्थित 100px ऊंचाई के तत्व के लिए आप मार्जिन-टॉप लागू करेंगे: -100 पीएक्स;

बाईं ओर स्थित 100px चौड़ाई के तत्व के लिए आप मार्जिन-दाएं लागू करेंगे: -100 पीएक्स;

दाईं ओर स्थित 100px चौड़ाई के तत्व के लिए आप मार्जिन-बाएं लागू करेंगे: -100 पीएक्स;

कटौती & पेस्ट सीएसएस के टुकड़े:

.top 
    { 
    postion:relative; 
    top:-100px; 
    height:25px; 
    margin-bottom:-25px; 
    } 
.bottom 
    { 
    postion:relative; 
    top:100px; 
    height:25px; 
    margin-top:-25px; 
    } 
.left 
    { 
    postion:relative; 
    left:-100px; 
    width:25px; 
    margin-right:-25px; 
    } 
.right 
    { 
    postion:relative; 
    left:100px; 
    width:25px; 
    margin-left:-25px; 
    } 

और reworked उदाहरण कोड तो हो जाता है:

.thetext 
 
{ 
 
    width:400px; 
 
    background:yellow; 
 
    border: 1px dashed red; 
 
    margin:50px; 
 
    padding:5px; 
 
    font-weight:bold; 
 
} 
 
.whiteblob 
 
{ 
 
    position:relative; 
 
    top:-140px; 
 
    left:70px; 
 
    width:200px; 
 
    height:50px; 
 
    margin-bottom:-50px; 
 
    border: 4px solid green; 
 
    background:white; 
 
    font-size:2.5em; 
 
    color:red; 
 
    
 
} 
 
.footerallowedwhitespaceinblue 
 
{ 
 
    height:10px; 
 
    background-color:blue; 
 
} 
 
.footer 
 
{ 
 
    background-color:grey; 
 
    height:200px; 
 
}
<div class="thetext"><script type="text/javascript">for(c=0;c<50;c++){document.write("Lorem ipsum dolor est, ");}</script> 
 
</div> 
 
<div class="whiteblob"> 
 
    &nbsp;buy this! 
 
</div> 
 
<div class="footerallowedwhitespaceinblue"> 
 
</div> 
 
<div class="footer"> 
 
</div>

http://jsfiddle.net/qqXQn/1/

+1

बिल्कुल मैं देख रहा हूं, आपके उत्तर के लिए धन्यवाद :-) – olo

+1

यह इतना उपयोगी है, मुझे अपने div (स्थिति: रिश्तेदार) – user256604

3

यहाँ एक है उदाहरण। इस मामले में, ऑब्जेक्ट को दाईं ओर ले जाया गया था और उसके बाद नकारात्मक शीर्ष मान का उपयोग किया गया था। अपने पीछे की मार्जिन स्पेस को समाप्त करने के लिए एक समान नकारात्मक-मार्जिन मान जोड़ना आवश्यक है।

position:relative; 
width:310px; 
height:260px; 
top:-332px; 
margin-bottom:-332px; 
left:538px; 
-1

बाहरी div को "स्थिति: रिश्तेदार" div के रूप में सेट करें जिसे आप "स्थिति: पूर्ण" के रूप में स्थानांतरित करना चाहते हैं और शीर्ष और बाएं मान सेट करें। यह बाहरी div (पृष्ठ नहीं) के सापेक्ष आइटम को स्थिति में रखेगा। सापेक्ष स्थिति अंतराल छोड़ देता है। पूर्ण नहीं है।

+0

के नीचे व्हाइटस्पेस/पैडिंग से छुटकारा पाने के लिए बिल्कुल वांछित है, निरपेक्ष गतिशील पृष्ठ के साथ समस्याएं देता है प्रवाह लेआउट। पाठ एक पूर्ण स्थानित आइटम के आसपास प्रवाह नहीं होगा। यह एक अपेक्षाकृत तैनात आइटम के आसपास होगा। – Tschallacka

-2

ऊंचाई 0: height:0px; पर सेट करें।

अब यह div कहीं भी रखा जा सकता है।

0

सेट इस कोड की तरह माता-पिता फ़ॉन्ट आकार के सापेक्ष elememt शीर्ष: जेड टेम्पलेट में

एचटीएमएल:

div.dialog(id='login') 
     div.dialog-header 
      span.title login 
      a.dialog-close(href="") X 
      hr 
     div.dialog-body 
      p hello this is body 
      hr 
     div.dialog-footer 
      p this is footer 

और सीएसएस:

.dialog 
    { 
     height: 100%; 
     position: absolute; 
     top: -100%; 
     right: 50%; 
     left: 50%; 
     bottom: 100%; 
     border: 2px solid rgba(255, 255, 255,1); 
     border-radius: 3px; 
     font-size: 14px; 

    } 
.dialog-body{ 
     position: relative; 
     background-color: #F99; 
     height: 80%; 
     top: -14px; 
    } 
    .dialog-header{ 
     position: relative; 
     height: 10%; 
     background-color: #F9F9F9; 

    } 
    .dialog-footer{ 
     position: relative; 
     height: 10%; 
     top: -28px; 
     background-color: #F9fdf9; 

    } 

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

2

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

+1

खैर मैं शापित हो जाऊंगा ... – Tschallacka

+1

हाँ ... यह उन चीजों के लिए काम नहीं करता है जिन्हें आप तैरना नहीं चाहते हैं। – Tschallacka

2

यदि आप पर्याप्त बहादुर हैं, तो आप अपेक्षाकृत स्थान पर overflow:hidden; और bottom negative margin डाल सकते हैं, और यह स्पेसिंग बचे हुए स्थान को हटा देगा :) यानी उत्तरदायी साइट पर।

लेकिन जांचें कि यह आवश्यक सामग्री को छिपाता नहीं है।

-1

यह मेरे लिए काम नहीं करता है, जिसमें एक-दूसरे के रिश्तेदार पदों से 4 अलग-अलग इंटरलाक्ड होते हैं।

वर्तमान में, यह अनुकूलित है (http://christ.eye-of-revelation.org/index.html 2 पृष्ठ देखें) लेकिन सभी मामलों में वे उजागर करने के लिए उपयोग किया जाता है: मैं इसे, काम भी जोड़ने और का स्थान बदलने के लिए हर एक नहीं मिल सका मीडिया या खिड़की के आकार के अनुसार छवि का एक क्षेत्र ...

समाधान वैश्विक और अधिक आसान था; यह दो पृष्ठों को अनुकरण और स्वैप करने के लिए दो अलग-अलग ब्लॉक के लिए भी प्रयोग किया जाता था: सभी समस्याओं को एक क्षेत्र में चौड़ाई और ऊंचाई में परिभाषित किया जाता है, और बस इसकी शैली = "अतिप्रवाह: छुपा;"

उम्मीद है कि इससे मदद मिल सकती है।