html - 宽度为零的按钮仍会影响 Safari 中父级的宽度

标签 html css safari

我正在尝试根据悬停状态更改某些 button 的宽度。也就是说,它们的初始宽度应为 0,悬停时应自动宽度。

.parent {
  float: left;
  border: 2px solid darkblue;
}

.child {
  float: left;
  width: 0px;
  padding: 0;
  margin: 0;
  border: none;
  overflow: hidden;
}

.parent:hover .child {
  width: auto;
}
<div class="parent">
  <button class="child">a</button>
  <button class="child">b</button>
  <button class="child">c</button>
</div>

JSFiddle

这在大多数浏览器上都按预期工作(来自 Firefox 的屏幕截图):

Non-hovered in Firefox

但是,Safari 似乎仍在考虑(零宽度,不可见)按钮宽度来计算父级的宽度:

Non-hovered in Safari

我遗漏了 Safari 的异常渲染是否有原因,或者这可能只是一个错误?

最佳答案

是的,这似乎是一个错误。 Safari 的 Web Inspector 说每个按钮的宽度确实为零,所以很明显问题不是按钮。也许 Safari 正在根据每个按钮中的内容计算包含 block 的宽度,而不考虑宽度声明或其他内容。

设置 max-width 而不是 width 似乎可行,这只会让这一切变得更加奇怪:

.parent {
  float: left;
  border: 2px solid darkblue;
}

.child {
  float: left;
  max-width: 0;
  padding: 0;
  margin: 0;
  border: none;
  overflow: hidden;
}

.parent:hover .child {
  max-width: none;
}
<div class="parent">
  <button class="child">a</button>
  <button class="child">b</button>
  <button class="child">c</button>
</div>

关于html - 宽度为零的按钮仍会影响 Safari 中父级的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679813/

相关文章:

javascript - 使用 jquery 将子 li 动态添加到 ul

javascript - 当元素是 col-sm-6 或 col-sm-4 的一部分时,我可以调整它吗?

javascript - TextEdit:简单的 JS 代码片段抛出异常

loops - 你如何在 AppleScript 中循环访问菜单?

html - IIS 8 - 使用 SSL 证书时找不到 default.html

html - CSS 溢出不适用于转换

css - IE 8 行高问题

css - 如何从流程中删除元素?

javascript - Safari 和 WKWebview 中的不同滚动行为

html - 如果超出范围,则将输入类型 ="number"限制为其最小值或最大值