2013-02-13 372 views
0

我有以下几点:如何调整子元素的宽度而不调整CSS中父元素的宽度?

<div class="parent"> 
    <div class="sizer" /> 
    <div class="child" /> 
</div> 

.sizer { 
width: 200px; 
} 

.child { 
position: relative; 
width: 400px; 
} 

不准我明确设置宽度的父母,和我不允许孩子设置为position:absolute

使用CSS,有没有其他方法可以将宽度.child设置为400,而不会将宽度为.parent的宽度从200扩展到400?

+0

如果你不能设置一个宽度上的父,它是如何得到它的宽度开始? – 2013-02-13 20:30:57

+0

你问是否孩子的宽度可以超过父母的宽度? – JSW189 2013-02-13 20:31:17

+0

@ JSW189 - 是的,没有设置父母的宽度,也没有设置孩子的位置:绝对 – user1031947 2013-02-13 20:33:21

回答

2

如果父级具有设置的宽度,那么即使孩子的宽度超过父级的宽度,它也不会扩展为子级的宽度。请参阅this JS Fiddle example

.parent { 
    width: 300px; 
    height: 50px; 
} 

.child { 
    width: 400px; 
    height: 50px; 
    position: relative; 

} 

enter image description here


UPDATE

我想知道是否有任何形式的黑客攻击,让我这样做不会对家长设置宽度

有n没有父母具有某种类型的宽度或宽度属性的方式来实现这一点。如果您只是反对在父级上使用width属性,则可以使用几个宽度类似的替代方法。

正如cimmanon在下面的评论中解释的,您可以将.parent设置为max-width。它不一定是100%;只要小于孩子的宽度,任何最大宽度都可以。 See this JS Fiddle example,或者看看这个代码:

.parent { 
    max-width: 200px; 
} 

.child { 
    width: 400px; 
} 

或者,你可以使用position:absolute并设置leftright性能。 See this JS Fiddle example,或者看看这个代码:

.parent { 
    position:absolute; 
    left:0; 
    right:0; 
} 

但要记住,这些都是只有两个许多可能的替代品。希望这可以帮助!

+0

我想知道是否有任何形式的黑客,允许我做到这一点没有设置父宽度 – user1031947 2013-02-13 20:35:44