2011-04-05 84 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); 
} 
相关问题