html - CSS 宽度 :auto going full length when not supposed to

标签 html css

我的问题是,当我执行 width:auto 时,div 变为全长,但我只希望它变为其中的 div 的宽度。

HTML:

<div class="vidswraper">
<div>
<div class="videoimage">
<img src="images/icon1.jpg" height="100" width="100">
<p class="price">21.09</p>
</div>
</div>

<div>
<div class="videoimage">
<img src="images/icon2.jpg" height="100" width="100">
<p class="price">1.99</p>
</div>
</div>

<div>
<div class="videoimage">
<img src="images/logo.jpg" height="100" width="100">
<p class="price">12.12</p>
</div>
</div>

CSS:

.vidwraper {
   margin: 0 auto;
   width: auto;
   height: 110px;
}

当我检查元素时,它会向我显示:

Inspect

这意味着宽度没有覆盖 .vidswraper 中的 3 个 div。

注意:旁边的div是float:left;,宽度是width:110px

最佳答案

这是 block 的默认行为,它们想要填充所有可用空间。

相反,您似乎想要 shrink-to-fit algorithm .

有几种方法可以实现这一点:

  • 显示:表格

    请注意,它有一个 table 内部显示布局模型,如果内容是表格元素,这可能会出现问题。否则它们将被包裹在一个匿名表格单元格中。

  • 显示:内联 block

    这会产生行内级框而不是 block 级框的问题。如果您有多个,它们可能会水平堆叠而不是垂直堆叠。

  • display: inline-table, display: inline-flex, display: inline-grid

    这些与 display: inline-block 有同样的问题。此外,它们有一个既不是flow 也不是flow-root 的内部显示 Angular 色布局模型,这可能会有问题。

  • float :左

    这有盒子被带出流的问题。您可能需要使用 clearfix 或让父级建立 block 格式化上下文来解决此问题。

    此外,一堆 float 元素将水平堆叠。使用间隙来防止这种情况。

  • 宽度:适合内容

您可能还对 width: max-contentwidth: min-content 感兴趣。但是,与 width: fit-content 一起,它们可能尚未得到广泛支持。

或者,您可以尝试将您的元素放在一个特殊的布局模型中。例如,如果您将它放在一个 flex 容器中,它将变成一个 flex 元素,因此(默认情况下)不会增长以填充可用空间。

关于html - CSS 宽度 :auto going full length when not supposed to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34602050/

相关文章:

php - 从数据库中获取数据供前端使用

javascript - 如何使用 JavaScript 更改 <td> 的边框颜色?

javascript - 多个 jQuery 发布速度非常慢

javascript - 选择具有所有相同元素标签的子组

javascript - 如何在父级而不是子级上应用 CSS 转换?

html - CSS 和 Flexbox 布局问题

javascript - 如何将数据放入下拉框中并能够通过键入进行搜索?

javascript - ExtJs,从不同版本的 iframe 创建窗口,正确设置高度

html - 使用 Grunt 压缩 HTML 中的类名和 ID

javascript - 如何修复响应式数据表的最后一列