【问题标题】:MDL "advanced" grid structureMDL“高级”网格结构
【发布时间】:2016-06-20 18:07:18
【问题描述】:

我正在尝试实现类似于mdl dashboard example 在桌面视图中左侧有一张卡片,右侧有两张卡片(如 imgur 相册中的第一张图片)的效果, 当它变为平板布局时,它就变成了 imgur 相册中的第二张图片:

http://imgur.com/a/dT4Eo

之所以在示例中起作用,是因为 img-C 在平板布局中只有 3 的宽度,因为有一个隐藏的 1-col 分隔符来弥补 mdl-grid--no-spacing 造成的空间缺失。

我的问题是,如果我希望 img-B 和 img-C 在平板电脑布局中都具有 4-col 宽度,如何实现这种布局结构?

【问题讨论】:

  • 您的意思是您希望平板电脑视图上的 3 张卡片布局看起来与桌面视图相同,即。左侧是卡片 A,右侧是卡片 B 和卡片 C?
  • 不,在平板电脑视图上,我希望 card-A 有自己的 col 和 card-B 和 card-C 来共享一个 col 我设法让一些东西运行起来,做一些肮脏的修复,如下所示,但我认为必须有更好的方法(也听说应该不惜一切代价避免'!重要'@media (max-width: 839px) and (min-width: 480px) { .card-width-fix { width: calc(50% - 8px) !important; } }
  • 我仍然不清楚你的目标是什么。请参阅:imgur.com/a/UwnKo。您是想让布局看起来像第一张图片还是第二张图片?
  • both :).. 在桌面视图中它应该看起来像第一张图片,而在平板电脑视图中它应该看起来像第二张图片

标签: html css material-design material-design-lite


【解决方案1】:

您在设计主题时绝对应该避免使用!important,但如果您覆盖mdl class 布局,我认为使用它没有任何问题。见:https://css-tricks.com/when-using-important-is-the-right-choice/

让 MDL 示例布局简化为:

<div class="mdl-grid">
  <div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-cell--12-col-desktop" />
  <div class="mdl-cell mdl-grid mdl-grid--no-spacing">
    <div class="mdl-cell mdl-cell--4-col mdl-cell--4-col-tablet mdl-cell--12-col-desktop" />
    <div class="mdl-cell demo-separator mdl-cell--1-col" />
    <div class="mdl-cell mdl-cell--4-col mdl-cell--3-col-tablet mdl-cell--12-col-desktop" />
  </div>
</div>

要获得您想要的外观,请在平板电脑视图中隐藏.demo-separator,并将第 3 个卡片类设置为 4-column-tablet 而不是 3:

<div class="mdl-cell demo-separator mdl-cell--1-col mdl-cell--hide-tablet" />
<div class="mdl-cell mdl-cell--4-col mdl-cell--4-col-tablet mdl-cell--12-col-desktop" />

然后您需要重新调整第 2 行中列的大小。我会在.mdl-grid--no-spacing 上添加一个覆盖类(我们称之为.grid-central--spacing):

<div class="mdl-cell mdl-grid mdl-grid--no-spacing grid-central--spacing">

在我的style.css 中,我可以将样式覆盖为:

@media (max-width: 839px) and (min-width: 480px) {
  .grid-central--spacing .mdl-cell--4-col-tablet {
     width: calc(50% - 8px) !important;
  }
  .grid-central--spacing .mdl-cell--4-col-tablet:first-child {
    margin-right: 8px;
  }
  .grid-central--spacing .mdl-cell--4-col-tablet:last-child {
    margin-left: 8px;
  }
}

现在平板视图中的两张卡片之间应该有一个16px 间距。

【讨论】:

  • 顺便说一句,我从你的回答和解决方案中学到了很多东西(这比我的要好得多),很高兴知道我不需要担心!重要 :).. mdl- cell--hide-x 将来肯定也会派上用场。再次感谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2021-12-02
相关资源
最近更新 更多