【问题标题】:Css media queries percent widthCss 媒体查询百分比宽度
【发布时间】:2016-05-31 05:28:43
【问题描述】:

我有以下标记(为演示而简化)

https://jsfiddle.net/n07znakb/3/

<div id="wrapper">
  <div class="playlist-inner">
    <div class="playlist-content">

      <div class="playlist-item"></div>
      <div class="playlist-item"></div>
      <div class="playlist-item"></div>
      <div class="playlist-item"></div>
      <div class="playlist-item"></div>

    </div>
  </div>
</div>

playlist-content 是 1000px 的宽度(即 playlist-item number x playlist-item width),我是在 javascript 中设置的。

如果有 10 个播放列表项,则宽度为 2000 像素。

我想实现以下目标:

包装器最大宽度为 600 像素,可见 3 个播放列表项(此方法有效) 当包装器宽度在 600 到 400px 之间时,我希望播放列表项的宽度为播放列表内部的 33.3%(这是第二个上父级!),因此可以看到 3 个播放列表项。 当包装器宽度低于 400px 宽度时,我希望播放列表项的宽度为 playlist-inner 的 50%(这是第二个上父级!),所以 2 个播放列表项可见。

我知道我可以用 javascript 做到这一点。我想知道我是否可以单独使用css?

使用当前的 css 它不起作用,因为设置 33.3% 宽度需要父宽度,即播放列表内容,但我希望它是另一个上父级的 33.3% 宽度,即播放列表内部。

希望有人能理解。

【问题讨论】:

    标签: css media-queries responsive


    【解决方案1】:

    您应该使用手机或更高版本进行编码。 并将包装器设置为相对。

    所以从 0px 开始,你希望播放列表项为 100%;

    .playlist-item{width:100%;}
    

    400 及以上,你想要 50%;

    @media screen and (min-width: 400px) {
       .playlist-item{width:50%;}
    }
    

    从 600 岁及以上,您想要 33.3%;

    @media screen and (min-width: 600px) {
       .playlist-item{width:33.3%;}
    }
    

    我在这里制作了一个 ul 列表: https://jsfiddle.net/n07znakb/4/

    【讨论】:

    • 但这并不遵循我的示例,我在父项中有单行项目,然后是宽度受限的另一个父项。我想根据那个上父母调整我的项目的大小。
    • @ Toniq 我不认为你可以从另一个父母那里调整孩子的大小,除非你做一个 javascript 解决方案。为什么需要内在父母?它不是那样工作的。只需确保您的项目的父项具有宽度并设置为位置:相对,子项应仅跟随该父项。如果您需要内部父母,您可能会在那个位置上使用绝对位置,以使您的孩子跟随最近的相对父母,但我不确定。正如我所见,您尝试做的事情不符合标准。你能解释一下为什么你需要它吗?也许你可以重写它。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2017-07-29
    • 2012-08-31
    • 2012-03-19
    • 2015-01-16
    • 1970-01-01
    • 2012-12-12
    • 2013-08-23
    相关资源
    最近更新 更多