如何设置HTML5 <meter>标签的样式

Sim*_*one 21 html css html5 meter css3

我想知道如何设置新<meter>标签的样式.

<meter value=80 min=0 max=100>
  80/100
</meter>
Run Code Online (Sandbox Code Playgroud)

我只想更改背景颜色和值颜色,但我找不到合适的CSS属性.对于基于webkit的浏览器,我发现了这些:

meter::-webkit-meter-horizontal-bar {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#DDD), color-stop(0.2, #EEE), color-stop(0.45, #CCC), color-stop(0.55, #CCC), to(#DDD));
}
Pseudo element
meter::-webkit-meter-horizontal-optimum-value {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#AD7), color-stop(0.2, #CEA), color-stop(0.45, #7A3), color-stop(0.55, #7A3), to(#AD7));
}
Pseudo element
meter::-webkit-meter-horizontal-suboptimal-value {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FE7), to(#FE7), color-stop(0.2, #FFC), color-stop(0.45, #DB3), color-stop(0.55, #DB3));
}
Pseudo element
meter::-webkit-meter-horizontal-even-less-good-value {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#F77), to(#F77), color-stop(0.2, #FCC), color-stop(0.45, #D44), color-stop(0.55, #D44));
}
Pseudo element
meter::-webkit-meter-vertical-bar {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#DDD), to(#DDD), color-stop(0.2, #EEE), color-stop(0.45, #CCC), color-stop(0.55, #CCC));
}
Pseudo element
meter::-webkit-meter-vertical-optimum-value {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#AD7), to(#AD7), color-stop(0.2, #CEA), color-stop(0.45, #7A3), color-stop(0.55, #7A3));
}
Pseudo element
meter::-webkit-meter-vertical-suboptimal-value {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#FE7), to(#FE7), color-stop(0.2, #FFC), color-stop(0.45, #DB3), color-stop(0.55, #DB3));
}
Pseudo element
meter::-webkit-meter-vertical-even-less-good-value {
-webkit-appearance: meter;
background: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#F77), to(#F77), color-stop(0.2, #FCC), color-stop(0.45, #D44), color-stop(0.55, #D44));
}
Run Code Online (Sandbox Code Playgroud)

在哪里可以找到基于gecko的浏览器(Firefox),Opera和IE的正确CSS属性?

cer*_*eny 11

我使用以下代码在Webkit浏览器中使用了一个漂亮的微妙渐变样式:

meter { -webkit-appearance: none; } //Crucial, this will disable the default styling in Webkit browsers

meter::-webkit-meter-bar {
    background: #FFF;
    border: 1px solid #CCC;
}

meter::-webkit-meter-optimum-value {
    background: #87C7DE;
    background: -moz-linear-gradient(top, #a1d4e6 0%, #6bb4d1 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #a1d4e6), color-stop(100%, #6bb4d1));
    background: -webkit-linear-gradient(top, #a1d4e6 0%, #6bb4d1 100%);
    background: -o-linear-gradient(top, #a1d4e6 0%, #6bb4d1 100%);
    background: -ms-linear-gradient(top, #a1d4e6 0%, #6bb4d1 100%);
    background: linear-gradient(to bottom, #a1d4e6 0%, #6bb4d1 100%);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#a1d4e6', endColorstr='#6bb4d1',GradientType=0);
}
Run Code Online (Sandbox Code Playgroud)

但是,Chris Coyier在CSS-Tricks上推荐以下HTML代码:

<div class="meter">
    <span style="width: 25%"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

...而不是HTML5 <meter><progress>标签.在这个时间点(2013年2月),我同意他的意见:

更糟糕的是,不同浏览器之间的情况也大不相同,甚至在不同的WebKit浏览器之间也是如此 伪元素也不一致.我不想把这样的东西挂起来,但这真是另一个时间的主题.我只想说,对于这些特殊的进度条,div/span事物就是现在的票.

浏览器只是不似乎真的准备好接受新的HTML5标准标签<meter><progress>.话虽如此,我建议人们克服为未来直奔的愿望,而是寻求视觉上有效的东西直到另行通知.我还要提一下,在目前的时间点,当前浏览器对这些标签的支持率为53%......这对我来说不值得,但我会将其留给您的项目自行决定.

  • 在 Mozilla 和 IE 永远不会解析的特定于 WebKit 的伪元素选择器后面包含所有这些跨浏览器渐变内容是愚蠢的。 (2认同)
  • 这个答案已经过时了。当前浏览器支持良好(仅 IE-11 缺乏支持)。有一种方法可以跨浏览器设置此元素的样式,但此答案仅针对 webkit 衍生浏览器提供答案。 (2认同)

Rún*_*erg 10

这是2019年的跨浏览器解决方案:

meter {
  --background: #dadada;
  --optimum: forestgreen;
  --sub-optimum: gold;
  --sub-sub-optimum: crimson;

  /* The gray background in Firefox */
  background: var(--background);
  display: block;
  margin-bottom: 1em;
  width: 100%;
}

/* The gray background in Chrome, etc. */
meter::-webkit-meter-bar {
  background: var(--background);
}

/* The green (optimum) bar in Firefox */
meter:-moz-meter-optimum::-moz-meter-bar {
  background: var(--optimum);
}

/* The green (optimum) bar in Chrome etc. */
meter::-webkit-meter-optimum-value {
  background: var(--optimum);
}

/* The yellow (sub-optimum) bar in Firefox */
meter:-moz-meter-sub-optimum::-moz-meter-bar {
  background: var(--sub-optimum);
}

/* The yellow (sub-optimum) bar in Chrome etc. */
meter::-webkit-meter-suboptimum-value {
  background: var(--sub-optimum);
}

/* The red (even less good) bar in Firefox */
meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {
  background: var(--sub-sub-optimum);
}

/* The red (even less good) bar in Chrome etc. */
meter::-webkit-meter-even-less-good-value {
  background: var(--sub-sub-optimum);
}
Run Code Online (Sandbox Code Playgroud)
<label>
  Optimum
  <meter value=80 min=0 low=30 high=60 max=100 optimum=80>
    80/100
  </meter>
</label>

<label>
  Sub-optimum
  <meter value=80 min=0 low=30 high=60 max=100 optimum=50>
    80/100
  </meter>
</label>

<label>
  Sub-sub-optimum
  <meter value=80 min=0 low=30 high=60 max=100 optimum=20>
    80/100
  </meter>
</label>
Run Code Online (Sandbox Code Playgroud)

请注意,仪表的未填充(灰色)部分::-webkit-meter-bar使用 Chrome 中的样式,而 firefox::-moz-meter-bar用于填充(绿色、黄色、红色)部分,并将未填充部分的样式设置在meter它自己的元素下方。

另请注意,firefox 在meter元素上具有伪选择器以区分最佳和次优值(:-moz-optimal:-moz-sub-optimal:-moz-sub-sub-optimal; 然后您只需::-moz-meter-bar设置适当伪选择器的伪子元素的样式),而 Chrome 允许您为此目的设置不同伪元素的样式(::-webkit-meter-optimum-value, ::-webkit-meter-suboptimum-value, 和::-webkit-meter-even-less-good-value)。

这是一个链接,解释了这些带前缀的伪元素的含义。 https://scottaohara.github.io/a11y_styled_form_controls/src/meter/

  • 这对于浏览器和 html 创建者来说是一个巨大的耻辱,因为它没有标准化。 (3认同)

Rez*_*zen 5

以下是 FireFox 的规则。我在 Firefox 检查器中包含了一个关于在哪里可以找到规则的屏幕截图。

::-moz-meter-bar {
  /* Block styles that would change the type of frame we construct. */
  display: inline-block ! important;
  float: none ! important;
  position: static ! important;
  overflow: visible ! important;

  -moz-appearance: meterchunk;
  height: 100%;
  width: 100%;
}

:-moz-meter-optimum::-moz-meter-bar {
  /* green. */
  background: -moz-linear-gradient(top, #ad7, #ad7, #cea 20%, #7a3 45%, #7a3 55%);
}
:-moz-meter-sub-optimum::-moz-meter-bar {
  /* orange. */
  background: -moz-linear-gradient(top, #fe7, #fe7, #ffc 20%, #db3 45%, #db3 55%);
}
:-moz-meter-sub-sub-optimum::-moz-meter-bar {
  /* red. */
  background: -moz-linear-gradient(top, #f77, #f77, #fcc 20%, #d44 45%, #d44 55%);
}
Run Code Online (Sandbox Code Playgroud)

在哪里可以找到 Mozilla CSS 属性