2011-04-05 138 views
2

我有一個包含一些文本的div。這個div曾經是position:fixed,但由於某些原因,我需要它是position:absolute當從固定位置改變爲絕對位置時,爲什麼div元素的大小會發生變化?

但是,將其從固定改爲靜態時,其大小會發生變化(fixed顯示期間的「自動調整大小」很不錯,應該保留)。

這裏有一個小例子:http://jsfiddle.net/ThiefMaster/yBRa9/3/

我正在尋找一種方法來保持position:absolute沒有元素縮小到儘可能低的尺寸。

使用JavaScript它是easy to achieve,但如果它可以做到沒有額外的JS它會很好。

+0

您是否在尋找調整劃分的基礎上,裏面的內容? – Starx 2011-04-05 09:34:37

+0

我希望div的大小與'position:fixed'相同 - – ThiefMaster 2011-04-05 09:36:21

回答

3

Here Check it.我用了一個跨度inline-block,似乎做你想要什麼(當然,如果我理解你的問題正確)

+0

不幸的是,當彈出窗口被絕對定位時,這是行不通的,我認爲這是OP所要求的。 – 2011-04-05 09:51:42

+1

@Paul,即使有'position:absolute',跨度表現方式也是一樣。 – Starx 2011-04-05 09:57:30

+1

它似乎工作。至少對於我的測試用例。不幸的是,我的應用程序中的一個更復雜的對話框仍然是壞的,但希望我能得到解決 - 如果不是,我將不得不使用JS來設置寬度:/ – ThiefMaster 2011-04-05 09:57:46

1

具有絕對定位的元素不會繼承父級的寬度。你將不得不設置widthmin-width

+0

這個CSS用於各種對話框。設置所有這些寬度將是非常有用的。我需要根據其內容動態調整大小。 – ThiefMaster 2011-04-05 09:31:13

+0

開發人員必須做的工作?天堂得罪了*咧嘴*。我過去常用的一個技巧是:在圖塊的頂部放置一個圖片,寬度爲300px ... height 1px,透明GIF ...這會強制最小寬度成爲某種東西合理的,但如果那裏的東西比這個大,它可以擴大以適應它。如果你不關心IE6的兼容性,你可以使用最小寬度。 – 2011-04-05 09:32:59

+0

因爲這個原因,我可以使用'min-width'。我有這種修復,它適用於小對話。但是一些較大的對話框仍然被破壞 - 我不想設置較高的「最小寬度」,因爲這會使較小的對話框看起來很醜。 – ThiefMaster 2011-04-05 09:35:44

0

我面臨同樣的問題。我讀了Teneff的答案,並通過設置寬度:100%來修復它。由於我是新人,如果這是做事情的最佳方式,不信任。這裏有一個例子:

HTML:

<div id="slider"> 
<div class="slide"> 
        <div class="slide-copy"> 
         <h2>Slide</h2> 
         <p>Sliding time</p>      
        </div> 
        <img src="http://images.clipartpanda.com/spring-clip-art-spring-clip-art.jpg" alt="an image"> 
       </div> 
</div> 

CSS:

#slider { 
    width: 940px; 
    height: 350px; 
    position: relative; 
    overflow: hidden; 
    float: left; 
    padding: 3px; 
    border: #666 solid 2px; 
    border-radius: 5px; 
} 

.slide-copy { 
    position: absolute; 
    bottom: 0px; 
    left:0; 
    padding: 20px; 
    background: #7f7f7f; 
    background: rgba(0,0,0,0.5); 
} 
相關問題