【问题标题】:Configure compass browser support (Compass 1.x syntax)配置罗盘浏览器支持(Compass 1.x 语法)
【发布时间】:2014-11-09 21:13:15
【问题描述】:

使用 0.12.x 版本的 Compass,我是这样定义对老歌的支持的:

@import "compass/support"

$legacy-support-for-ie6: false;
$legacy-support-for-ie7: true;
$legacy-support-for-ie8: true;
$legacy-support-for-mozilla: false;

@if ($legacy-support-for-ie7) {
  // specific declaration if ie7 is supported
}

我想知道如何在Compass 1.x system 之后定义browser support。 也许是这样的:

// Add support for a specific browser
$browser-minimum-versions: (
  'ie': "7",
  'ie': "8"
);

// Reject browsers
$supported-browsers: reject(browser-versions("ie"), "6", "7", "8");

但它会返回该错误(在 Compass 1.0.1 上运行):

(Line 206 of /Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.1/stylesheets/compass/_support.scss: 5.5 is not known browser.)

【问题讨论】:

  • 您要支持哪些浏览器版本?
  • 关于IE,>ie7.

标签: sass compass-sass compass


【解决方案1】:

通过修改$graceful-usage-threshold 变量来排除浏览器。如果 Browser X 只有 4.99% 的市场份额,你想设置为5

$debug-browser-support: true;
$browser-minimum-versions: (
  "ie": "9"
);
$graceful-usage-threshold: 4.46163;

@import "compass";

.foo {
  @include opacity(.5);
  @include border-radius(10px);
}

输出:

.foo {
  /* Content for ie 8 omitted.
     Minimum support is 9. */
  opacity: 0.5;
  /* Capability border-radius is not prefixed with -moz because 0.25036% of users are affected which is less than the threshold of 4.46163. */
  /* Capability border-radius is not prefixed with -ms because 0% of users are affected which is less than the threshold of 4.46163. */
  /* Capability border-radius is not prefixed with -o because 0% of users are affected which is less than the threshold of 4.46163. */
  /* Capability border-radius is not prefixed with -webkit because 0.1583% of users are affected which is less than the threshold of 4.46163. */
  border-radius: 10px;
}

请注意,这会导致您可能想要支持的其他少数浏览器被排除在外。这就是$browser-minimum-versions 发挥作用的时候。

$browser-minimum-versions: (
  "ie": "9",
  "safari": "4"
);

输出:

.foo {
  /* Content for ie 8 omitted.
     Minimum support is 9. */
  opacity: 0.5;
  /* Capability border-radius is not prefixed with -moz because 0.25036% of users are affected which is less than the threshold of 4.46163. */
  /* Capability border-radius is not prefixed with -ms because 0% of users are affected which is less than the threshold of 4.46163. */
  /* Capability border-radius is not prefixed with -o because 0% of users are affected which is less than the threshold of 4.46163. */
  /* Capability border-radius is prefixed with -webkit because safari "4" is required. */
  /* Creating new -webkit context. */
  -webkit-border-radius: 10px;
  border-radius: 10px;
}

在作品中进行了一些更改,以便更轻松地排除旧浏览器。你可以在这里关注他们:https://github.com/Compass/compass/issues/1762

如果你想为特定的浏览器制定规则,那么$critical-usage-threshold 变量就会发挥作用:

$debug-browser-support: true;
$browser-minimum-versions: (
  "ie": "9"
);
$critical-usage-threshold: 4.46163;
$graceful-usage-threshold: 4.46163;

@import "compass";

.foo {
  @include for-legacy-browser('ie', '8') {
    color: green;
    // this is based on $critical-usage-threshold by default
    // if $critical-usage-threshold is lower than the version's usage
    // then this content will be generated
  }
  @if support-legacy-browser('ie', '8') {
    color: red;
  }
}

【讨论】:

  • 谢谢。然后,我想$graceful-usage-threshold 是基于Browser usage table 的百分比
  • 但是,关于我问题的第二部分。如何为特定浏览器添加声明,例如@if ($legacy-support-for-ie7) { // specific declaration }
  • @RaphaelLarrinaga 更新了示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
  • 2012-10-19
  • 2019-01-09
  • 2016-03-19
  • 2012-04-10
  • 2019-07-30
  • 2012-02-14
相关资源
最近更新 更多