【问题标题】:How do I apply CSS3 filter grayscale to all properties except figcaption's tag?如何将 CSS3 过滤灰度应用于除 figcaption 的标签之外的所有属性?
【发布时间】:2016-09-14 08:36:17
【问题描述】:

如何将 CSS3 webkit-filter grayscale 应用于除<figcaption> 标签之外的所有文章标签?以this jsfiddle 为例。

.black-white {
  filter: grayscale(1);
  -webkit-filter: grayscale(1);
  transition: all 0.3s ease-out !important;
  -webkit-transition: all 0.3s ease-out !important;
  -moz-transition: all 0.3s ease-out !important;
  -ms-transition: all 0.3s ease-out !important;
  -o-transition: all 0.3s ease-out !important;
}
.black-white:hover {
  filter: grayscale(0);
  -webkit-filter: grayscale(0);
}
<article class="black-white">
  <figure class="featured-image">
    <a href="#">
      <figcaption>
        <img src="http://www.digital-lab.eu/wp-content/uploads/2016/06/logo-pietro-castro.png" alt="Logo Pietro Castro" class="project-logo" />
      </figcaption>
      <img src="http://www.digital-lab.eu/wp-content/uploads/2016/06/pietro-castro.jpg" alt="Pietro Castro" width="900" height="900" />
    </a>
  </figure>
</article>

【问题讨论】:

  • 不推荐使用all。它为浏览器提供了不必要的工作。您应该只转换实际需要的属性。
  • 针对所有意图标签文章,而不是整个正文

标签: css css-transitions css-filters


【解决方案1】:

您已将 figcaption 嵌套在带有 grayfilter 的黑白容器中。所以这个块(包括孩子)将永远是灰度的。最好将黑白类仅添加到需要灰度化的元素中。希望这会有所帮助。

【讨论】:

【解决方案2】:

walk-around 是为所有人设置过渡,并为 figcaption 指定一个非常快的过渡:

transition: all 0.3s ease-out, figcaption img 1ms;

.featured-image figcaption {
  padding: 3em;
  text-align: left;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.project-logo {
  display: table-cell !important;
  vertical-align: middle;
  left: 0;
  right: 0;
  position: absolute !important;
  bottom: 0;
  top: 0;
  margin: auto;
  max-width: 220px !important;
}
.portfolio-grid.three-columns article:nth-child(3n+1) {
  clear: left;
}
.portfolio-wrap .three-columns article {
  width: 33.3%;
}
.black-white {
  filter: grayscale(1);
  -webkit-filter: grayscale(1);
  transition: all 0.3s ease-out, figcaption img 1ms !important;
  -webkit-transition: all 0.3s ease-out, figcaption img 1ms !important;
  -moz-transition: all 0.3s ease-out, figcaption img 1ms !important;
  -ms-transition: all 0.3s ease-out, figcaption img 1ms !important;
  -o-transition: all 0.3s ease-out, figcaption img 1ms !important;
}
.black-white:hover {
  filter: grayscale(0);
  -webkit-filter: grayscale(0);
}
<article class="black-white">
  <figure class="featured-image">
    <a href="#">
      <figcaption>
        <img src="http://www.digital-lab.eu/wp-content/uploads/2016/06/logo-pietro-castro.png" alt="Logo Pietro Castro" class="project-logo" />
      </figcaption>
      <img src="http://www.digital-lab.eu/wp-content/uploads/2016/06/pietro-castro.jpg" alt="Pietro Castro" width="900" height="900" />
    </a>
  </figure>
</article>

您确定没有混淆 transitionfilter 吗?

【讨论】:

  • @Filippo 它有效:您在标题中询问“如何将 CSS transition 应用于除 figcaption 之外的所有内容”,而不是“如何应用 CSS filter 除了 figcaption 之外的所有人”。提问时请使用正确的词语。
猜你喜欢
  • 2012-05-23
  • 2021-07-23
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多