【问题标题】:CSS floated div, not shrinking to contentCSS浮动div,不缩小到内容
【发布时间】:2012-04-26 00:11:36
【问题描述】:

这对我来说很奇怪,虽然我已经搜索过,但每个人似乎都有与我相反的问题(浮动 div 缩小)!

我有这个页面:http://www.tameside.gov.uk/test/news,它使用 PHP 为各种新闻故事生成顶部的 div,并且运行良好。然而,这些项目(浮动 div)位于一个向左浮动的 div 中,由于某种原因,它并没有缩小到这些项目(这是它唯一的内容)。

据我所知,浮动 div 总是缩小到它的内容,但这个特殊的 div 正在扩展到页面的 100%。我已将包含 div 的背景涂成灰色,以向您展示我的意思。

我希望它缩小到内容,以便我可以使用居中技巧,然后无论热门新闻中有多少 div,它都会使 div 居中。但是因为它没有缩小,所以这个技巧显然是行不通的。

每个新闻项目 div 的 CSS 如下:

.news-top-item {
    border-radius: 10px;
    border-color: #3f7dae;
    border-style: solid;
    border-width: 2px;
    float: left;
    width: 19%;
    text-align: center;
    margin-right: 0.5%;
    height: 13em;
    padding-top: 0.5em;
    cursor: pointer;
    position: relative;
}

他们还有一个跨度,里面附有一个小 CSS 以使整个东西成为一个链接:

.news-top-item span {
    display: inline;
    position:absolute;
    width:100%;
    height:100%;
    top:0;
    left: 0;
    z-index: 2;
    background-image: url('/tmbc_images/include/1pixel.gif');
    cursor: pointer;
}

我怀疑这会造成干扰,但以防万一。

外部的 div 只有 'float: left' 和应用到它的背景颜色。

任何帮助将不胜感激。

谢谢,

詹姆斯

【问题讨论】:

  • 是否有机会将(渲染的)HTML 和 CSS 的相关部分放入 JS Fiddle 中,如果需要,还可以包含 Lorem-ipsum-ed 内容?这样我们就可以使用它,并且在一个地方查看代码。
  • 嗨,这是 JS Fiddle:jsfiddle.net/W8Dn6,似乎也在做同样的事情。
  • 对,我已经将 top-news-item div 设置为固定宽度,并使用 JavaScript 动态设置包含 div 的宽度并使用 margin: auto 将其居中。我不知道为什么最初的想法不起作用,我希望使用这种方法:tightcss.com/centering/center_variable_width.htm 将其居中,因此不需要 JavaScript 并提供流畅的布局。但是由于某种原因,当我将顶部项目设置为固定宽度(并且浮动按预期包装)时,即使该方法也不起作用。如果有人可以让它与流式布局一起使用,我将不胜感激。

标签: css css-float


【解决方案1】:

您应该删除 float:left 并改用 display:inline-block

.news-top-item {
    border-radius: 10px;
    border-color: #3f7dae;
    border-style: solid;
    border-width: 2px;
    display:inline-block;
    width: 19%;
    text-align: center;
    margin-right: 0.5%;
    height: 13em;
    padding-top: 0.5em;
    cursor: pointer;
    position: relative;
}

并在包含的 div 中添加 text-align:center

【讨论】:

  • 嗨,我会试试这个,但如果我没记错的话,我认为 IE 7 不能识别 inline-block,我需要它在所有浏览器中工作,即使是糟糕的浏览器。
  • 嗨,我试过这个解决方案,它有点工作,虽然 div 不再水平对齐,但我认为我使用的“整个 div 链接”跨度一定会导致一些奇怪的行为。另外,我怀疑 IE 7 和 IE 9 兼容模式不理解。不幸的是,有些人仍在使用 IE 7 浏览我们的网站,并且由于 Microsoft 自动将所有内部页面设置为兼容模式,所有员工的 IE 都默认为兼容模式。因此,这不是我的解决方案。
  • 看看这里:browsershots.org/http://www.tameside.gov.uk/test/news 有什么用?然后将答案向上推以帮助他人;)
【解决方案2】:
width:100%;
height:100%;

是窗口大小的 100% ... 试试

width:auto;
height:auto;

【讨论】:

  • 你的意思是跨度?跨度只是 100% 的 div,它们的想法是使 div 链接。但他们不应该侵犯包含这些跨度的新闻项目 div。我会尝试为容器添加一个自动宽度,看看是否有帮助
  • 嗨,我尝试将 width: auto 添加到容器中,但这仅适用于 IE 9 兼容模式,因此恐怕不是解决方案。
【解决方案3】:

使用绝对单位而不是百分比来定义内部元素的度量:

.news-top-item {
    border-radius: 10px;
    border-color: #3f7dae;
    border-style: solid;
    border-width: 2px;
    float: left;
    width: 200px; /* <--- */
    text-align: center;
    margin-right: 2px; /* <--- */
    height: 13em;
    padding-top: 0.5em;
    cursor: pointer;
    position: relative;
}

【讨论】:

  • 嗨,谢谢你,出于某种原因,它有效。你知道为什么它适用于像素而不是百分比吗?理想情况下,我希望它是流动的,而不是固定的,所以如果有人可以让它与百分比一起工作,我会很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多