【问题标题】:Div width inheriting strangely with position fixeddiv宽度奇怪地继承了位置固定
【发布时间】:2015-10-30 04:09:05
【问题描述】:

我正在尝试创建一个带有播放按钮、进度条和停止按钮的音频播放器。我希望它固定在页面底部。

为此,我有以下 CSS:

.player-container {
    height: 100px; 
    background-color: #505050; 
    position: fixed;
    bottom: 0;
    width: inherit;
}

现在,奇怪的是宽度发生了什么变化。播放器容器包含在 Bootstrap 容器中。它通常从正确的位置开始,但根据浏览器的宽度,它似乎全部很小 - 或者它似乎是正常长度,加上填充的大小,这真的很奇怪。

这里是 HTML:

<div class="container">
  <div class="test"></div>
  <div class="player-container" ng-show="showPlayer" ng-controller="PlayerController">
    <span class="glyphicon glyphicon-play music-control"></span>
      <div class="seekBase" seek-track></div>
    <span class="glyphicon glyphicon-stop music-control" stop-music ng-click="stopClicked()"></span>
  </div>
</div>

我创建了一个 plnkr 来显示正在发生的事情,使用不同的颜色背景让一切变得非常清晰: http://plnkr.co/edit/MU4aK6Wf4UUmQh4egqU7

“位置:固定”是否导致这一切变得疯狂?明信片上的想法......

【问题讨论】:

  • .containerwidth是哪个?
  • 容器的宽度由我认为的引导 css 决定。
  • 如果您检查宽度的 CSS 值到 100%,问题就解决了
  • 100% 的宽度只会让它在整个屏幕上移动 - 它不会在容器所在的位置停止。见这里:plnkr.co/edit/M3tIGPSgJ4CwE0CE0GjX

标签: html css twitter-bootstrap


【解决方案1】:

inherit 关键字将指定值和计算值设置为父元素上相同属性的计算值。

问题是引导程序可能会根据浏览器的宽度将一些width 设置为父.container(通过使用min-width @media 查询)。

当浏览器很窄时,父.container 没有width 的级联值。因此,由于width 不是继承属性,因此指定值为auto。对于widthauto 计算为auto。然后,inherit 使.player-container 也有一个auto width。所以width: inherit 在这种情况下不会影响.player-container

如果您希望在浏览器不窄时出现这种行为,请删除 width: inherit 并使其成为 auto

但是,当浏览器更宽时,.container 的宽度可能类似于750px970px1170px。在这种情况下,.player-container 将继承相同的宽度。

如果您希望在浏览器狭窄时出现这种行为,请使用width: 100%

【讨论】:

  • 好的 - 所以我应该对特定尺寸使用媒体查询,并在其中相应地设置宽度。这对奇怪的填充问题没有帮助。没有设置任何宽度的红色“测试”div 得到父元素的宽度减去填充。但是,当我做另一个 div 并给它一个绿色背景并使用 width:inherit 时,它会得到完整元素的大小,包括填充。即使我将填充设置为继承,它仍然会获得背景颜色!见这里:plnkr.co/edit/261SeCOsNgd0DiPoilUq
  • @TomO'Brien 如果容器有width: 970px; padding: 15px,则带有width: auto 的流入块子代将覆盖可用空间,即940px。但是如果你使用width: 100%width: inherit,孩子会有width: 970px,你会溢出容器。
  • 对 - 但这似乎只发生在我使用固定位置时,因为这个 plnkr 显示:plnkr.co/edit/e6RAutbgrMwOJgEudN8n。当我将 div 固定到底部时,有什么办法可以解决此问题?我想这就是问题的症结所在?
  • @TomO'Brien 不要使用width: inherit。仅当您想从父级继承某些值时才使用inherit。但是你不想继承width,你希望它总是有一些价值(我不知道是哪个)。只需将 width 设置为该值即可。
  • 好的 - 所以媒体查​​询容器设置宽度的不同尺寸,我只是匹配宽度?那应该可以吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多