2011-09-21 161 views
2

今天我错过了一些明显的东西,请各位帮忙。显示DIV中隐藏DIV的部分

我在另一个DIV里面有一排水平的DIV。我希望第三个DIV显示为顶部DIV部分隐藏。但它并没有显示出来。

这里的CSS:

.outer { 
    background: #800; 
    height: 90px; 
    width: 300px; 
    overflow: hidden; 
    white-space: nowrap; 
} 
.label { 
    float: left; 
    display: block; 
    background: #888; 
    width: 75px; 
    height: 50px; 
    margin: 10px; 
    padding: 10px; 
    line-height: 50px; 
    font-size: 45px; 
    text-align: center; 
} 

这里的HTML:

<div class="outer"> 
    <div class="label">1</div> 
    <div class="label">2</div> 
    <div class="label">3</div> 
    <div class="label">4</div> 
</div> 

感谢您的帮助!

回答

3

我错过了今天很明显的东西,家伙 - 将不胜感激 请。

你错过了“明显”的事情是,第三和第四内部div s的下方下降,因为没有足够的水平空间。举例来说,如果我检查一下使用Chrome的开发工具:

解决这个问题的最简单的方法是从float: left(你已经拥有它!)切换为display: inline-block,与white-space: nowrap包含的元素上:

http://jsfiddle.net/rGfNY/

+0

想法不错,比我的工作defenately少,但不inline-block的给予的问题(在一些IE版本)? – Sander

+2

它的确如此,但我已经在我的演示中占了一席之地:) – thirtydot

+0

jsFiddle似乎很慢,所以'display:inline-block; *显示:内联;缩放:1'修复它旧版本的IE浏览器。 – thirtydot

2

你需要用他们在一个新的div,给DIV的宽度,(大于你的外层div),它会通过外div的溢出隐患被切断。

需要注意的是:内部div的宽度并不随内容而调整,要么你专门设置它非常高,要么你必须计算它的内容或者只是把它硬编码在CSS中,或使用JavaScript 。

HTML:

<div class="outer"> 
    <div class="inner"> 
     <div class="label">1</div> 
     <div class="label">2</div> 
     <div class="label">3</div> 
     <div class="label">4</div> 
    </div> 
</div> 

CSS:

.outer { 
    background: #800; 
    height: 90px; 
    width: 300px; 
    overflow: hidden; 
    white-space: nowrap; 
} 
.inner { 
    width: 460px; 
} 
.label { 
    float: left; 
    display: block; 
    background: #888; 
    width: 75px; 
    height: 50px; 
    margin: 10px; 
    padding: 10px; 
    line-height: 50px; 
    font-size: 45px; 
    text-align: center; 
} 

工作示例: http://jsfiddle.net/f2wpm/

+0

非常感谢,桑德,非常感谢。我接受了thirtydot的回答,因为它避免了创建另一个DIV。 – user114671

+1

在我眼里,这取决于你必须添加多余的div的次数..如果只有一次,我会选择div在黑客入侵的CSS,使其在IE中工作,但你当然也可以使用条件样式if你想让它在IE – Sander

+0

+1中工作。有道理! – user114671