【问题标题】:Compass, SASS, Gradients, and IE? [duplicate]指南针、SASS、渐变和 IE? [复制]
【发布时间】:2012-08-17 04:25:12
【问题描述】:

所以根据 compass 的说法,在渐变方面,它们仅支持 Chrome、Safari、Firefox 3.6 和 Opera。

关于如何在指南针/其他一些解决方法中添加对 IE 的支持的任何想法?

代码在:

  @import "compass";    
   .testgradient {
    @include background(
      linear-gradient(top left, #333, #0c0)
    );
  }

代码输出:

.testgradient {

  background: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #333333), color-stop(100%, #00cc00));

  background: -webkit-linear-gradient(top left, #333333, #00cc00);

  background: -moz-linear-gradient(top left, #333333, #00cc00);

  background: -o-linear-gradient(top left, #333333, #00cc00);

  background: linear-gradient(top left, #333333, #00cc00);
}

【问题讨论】:

    标签: internet-explorer sass compass-sass


    【解决方案1】:

    对于简单的线性渐变,请参阅:http://compass-style.org/reference/compass/css3/images/#mixin-filter-gradient,另请参阅:CSS (perhaps with Compass): Cross-browser gradient

    因此您可以使用如下所示的 SCSS 代码:

     @import "compass";
       .testgradient {
        background: #333; /* Old browsers */
    
        @include background(
          linear-gradient(top left, #333, #0c0)
        );
    
        @include filter-gradient(#333, #0c0, top left); /* IE 6 - 8 */
      }
    

    以上代码编译成CSS如下:

    .testgradient {
      background: #333;
      /* Old browsers */
      background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuMCIgeDI9IjEuMCIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMzMzMzMyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwY2MwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
      background: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #333333), color-stop(100%, #00cc00));
      background: -moz-linear-gradient(top left, #333333, #00cc00);
      background: -webkit-linear-gradient(top left, #333333, #00cc00);
      background: linear-gradient(to bottom right, #333333, #00cc00);
      *zoom: 1;
      filter: progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#FF333333', endColorstr='#FF00CC00');
      /* IE 6 - 8 */ }
    

    【讨论】:

    • 所以这应该作为那个问题的副本被关闭?我的意思是,您确实从其他问题中删除了答案并更新了论点。
    • 是的,我同意这一点
    【解决方案2】:

    您可以简单地创建自己的 mixin,因此您的代码如下所示:

    @import "compass";    
    @mixin myBackground ($direction, $colorList) {
        background: -ms-linear-gradient($direction, $colorList);
        @include background(linear-gradient($direction, $colorList));
    }
    
    .testgradient {
        @include myBackground(top left, (#333, #0c0));
    }
    

    【讨论】:

      【解决方案3】:

      如果您不想阅读整个 SASS 文档,请尝试以下操作:

      filter: e("progid:DXImageTransform.Microsoft.gradient( startColorstr=${topcolor}, endColorstr=${bottomcolor},GradientType=0)");
      

      【讨论】:

        【解决方案4】:

        对于 IE10 之前的 IE 版本,您必须处理 IE 的gradient filter

        对于 IE10 和更新版本,不带前缀的 linear-gradient 应该可以工作[1]。但是,如果您遇到问题,other sites 只需使用供应商前缀 -ms-linear-gradient。这两个版本的语法与所有其他供应商前缀渐变的语法相同。

        【讨论】:

        • 好的,我如何将它集成到 SASS/compass 中以便它自动完成?
        • 我应该补充一点,我尝试将 @import "compass/utilities/general/hacks";在第二行。它似乎根本没有改变输出我对这些东西还很陌生,所以我很抱歉不知道一些基础知识
        • 将它集成到罗盘中需要您修改/扩展罗盘本身。如果您愿意,信息是here。否则,您将只想为 IESASS website上找到
        • 无前缀和有前缀linear-gradient 变体的语法不一样。
        • 根据最新的 W3C 草案,linear-gradient (dev.w3.org/csswg/css-images-3/#linear-gradients) 不支持“top”或“left”。它应该读作“到底部”或“到右边”。此问题应在未来版本的 compass (github.com/chriseppstein/compass/issues/965) 中修复。或者,您可以使用“90deg”,它应该适用于所有浏览器。
        猜你喜欢
        • 1970-01-01
        • 2012-10-18
        • 1970-01-01
        • 2011-05-05
        • 2013-04-12
        • 2015-11-19
        • 1970-01-01
        • 2012-12-27
        • 1970-01-01
        相关资源
        最近更新 更多