Verständnisproblem bei der Funktionsweise von <meter>
![](/uploads/users/avatars/000/000/015/thumb/daisys-auge.png)
- formulare
- html
0 Matthias Apsel
0 Auge
0 Matthias Apsel
0 Auge
4 Gunnar Bittersmann
0 TS
0 Gunnar Bittersmann
0 JürgenB
Hallo
Ich habe in Problem mit den Farbwechseln des meter
-Elements. Das meter
ist mit so ziemlich allen möglichen Attributen erstellt worden, sein Attribut value
wird per JavaScript befüllt. Zusätzlich wird ein dabeistehendes output
mit dem selben Zahlenwert, der in des meter
s value
reinkommt, befüllt. Die Balkenlänge passt sich korrekt an die sich ändernden Werte des value
-Attributs an.
So weit, so gut. Aber: Die Farbänderungen „spinnen“.
Das meter
verhielt sich beim ersten Aufruf und experimentieren so, wie ich es erwartet habe. Werte (in value
) zwischen min
und low
ergeben einen grünen Balken, Werte zwischen low
und high
ergeben einen gelben Balken und Werte > high
führen zu einem roten Balken.
Nach Neuaufrufen der Seite führen alle Werte, die nicht größer als der Wert von high
sind zu einem grünen Balken und alle Werte darüber zu einem gelben Balken. Damit könnte ich, abseits des Verständnisproblems wegen des unterschiedlichen Verhaltens, leben, wenn nicht auch Werte jenseits des angegebenen max
-Werts „nur“ zu einem gelben Balken führten. Solche Werte gehören, zumindest nach meinem Verständnis, als Balken in rot dargestellt.
Was mache oder verstehe ich hier falsch?
<li id="field-message">
<label for="message">Nachricht</label>
<textarea id="message" name="message" required></textarea>
<p id="char-counter">
<output id="progress-value">0</output>
<meter id="progress-bar" min="0" low="69" optimum="139" high="150" max="160" value=""></meter>
</p>
</li>
function countChars() {
var txtarea = document.getElementById('message');
var meterbar = document.getElementById('progress-bar');
var textlen = txtarea.value.length;
//console.log(textlen);
meterbar.value = textlen;
meterbar.textContent = textlen + ' Zeichen';
document.getElementById('progress-value').textContent = textlen;
}
document.addEventListener('DOMContentLoaded', function() {
// Zeichen einer bei Aufruf nicht leeren Textarea zählen
countChars();
// Zeichen einer Textarea nach Eingaben zählen
document.getElementById('message').addEventListener('keyup', countChars);
});
Tschö, Auge
Hallo Auge,
Das
meter
verhielt sich beim ersten Aufruf und experimentieren so, wie ich es erwartet habe. Werte (invalue
) zwischenmin
undlow
ergeben einen grünen Balken, Werte zwischenlow
undhigh
ergeben einen gelben Balken und Werte >high
führen zu einem roten Balken.Nach Neuaufrufen der Seite führen alle Werte, die nicht größer als der Wert von
high
sind zu einem grünen Balken und alle Werte darüber zu einem gelben Balken. Damit könnte ich, abseits des Verständnisproblems wegen des unterschiedlichen Verhaltens, leben, wenn nicht auch Werte jenseits des angegebenenmax
-Werts „nur“ zu einem gelben Balken führten. Solche Werte gehören, zumindest nach meinem Verständnis, als Balken in rot dargestellt.<meter id="progress-bar" min="0" low="69" optimum="139" high="150" max="160" value=""></meter>
Da es auch ein optimum gibt, sollten Werte zwischen 69 und 150 grün sein, da in diesem Intervall das Optimum liegt und Werte zwischen 0 und 69 sowie zwischen 150 und 160 gelb.
Es gibt immer nur 3 Intervalle, nicht 5, die beachtet werden.
Bis demnächst
Matthias
Hallo
<meter id="progress-bar" min="0" low="69" optimum="139" high="150" max="160" value=""></meter>
Da es auch ein optimum gibt, sollten Werte zwischen 69 und 150 grün sein, da in diesem Intervall das Optimum liegt und Werte zwischen 0 und 69 sowie zwischen 150 und 160 gelb.
Es gibt immer nur 3 Intervalle, nicht 5, die beachtet werden.
Wenn ich dich richtig verstehe, gibt es maximal drei Bereiche (egal, in welcher Farbe die schlussendlich dargestellt werden). Wenn ich meinen Code nun auf folgendes beschränke, um einen grünen Bereich (der mit dem angegebenen Optimum), einen in gelb (high
bis max
) und einen in rot (value
> max
) zu erhalten, funktioniert der grüne und gelbe Bereich, aber oberhalb von max
wird dennoch nicht auf rot umgeschaltet
<meter id="progress-bar" min="0" optimum="139" high="150" max="160" value=""></meter>
Irgendwo — entweder bei mir oder in meinem Browser (Firefox 51.0.1) — hakt's immer noch.
Tschö, Auge
Hallo Auge,
Es gibt immer nur 3 Intervalle, nicht 5, die beachtet werden.
Wenn ich dich richtig verstehe, gibt es maximal drei Bereiche (egal, in welcher Farbe die schlussendlich dargestellt werden).
Ja.
Wenn ich meinen Code nun auf folgendes beschränke, um einen grünen Bereich (der mit dem angegebenen Optimum), einen in gelb (
high
bismax
) und einen in rot (value
>max
) zu erhalten, funktioniert der grüne und gelbe Bereich, aber oberhalb vonmax
wird dennoch nicht auf rot umgeschaltet<meter id="progress-bar" min="0" optimum="139" high="150" max="160" value=""></meter>
Irgendwo — entweder bei mir oder in meinem Browser (Firefox 51.0.1) — hakt's immer noch.
bei dir. 😉
Die Intervalle sind keine Intervalle einer Intervallschachtung wie etwa
sondern
für den Fall dass kein optimum definiert ist. Ob die Art der Intervallgrenzen spezifikationsgemäß ist, weiß ich nicht.
Wenn es ein Optimum gibt, wird es grün dargestellt, das oder die benachbarte(n) Intervall(e) gelb und ggf. das nicht benachbarte Intervall rot.
In deinem Fall also von 0 bis 150 grün, von 150 bis 160 gelb. Alles andere liegt außerhalb des Definitionsbereiches und wird nicht berücksichtigt.
Allerdings sehe ich durchaus deinen Anwendungsfall. Vielleicht gibts da schon issues in der Dokumentation?
Bis demnächst
Matthias
Hallo
Irgendwo — entweder bei mir oder in meinem Browser (Firefox 51.0.1) — hakt's immer noch.
bei dir. 😉
Dammich! Ich hab's gewusst.
Die Intervalle sind keine Intervalle einer Intervallschachtung … sondern
- $$ [min,low[ $$ // rot
- $$ [low,high] $$ // gelb
- $$ ]high,max] $$ // grün
Hmm, doof. 😟
Allerdings sehe ich durchaus deinen Anwendungsfall. Vielleicht gibts da schon issues in der Dokumentation?
Da habe ich nicht nachgeschaut (also weder in der Originaldoku selbst, noch in dazugehörigen Issues). Das hilft ja akut auch nicht weiter. Allerdings hilft maxlength
im textarea
. Serverseitig wird ja eh noch einmal gezählt.
Tschö, Auge
Hallo Auge,
eventuell hilft
#progress-bar:invalid {
background: /* roter Farbverlauf */
}
Allerdings passt dass dann möglicherweise nicht in jedem Browser zum gelb und grün. Und unterschiedliche progressbar
-Werte für die appearance
-Eigenschaft scheint es auch nicht zu geben.
Bis demnächst
Matthias
@@Auge
FWIW, ich hab mal was zum Rumspielen gebastelt.
LLAP 🖖
Hello,
FWIW, ich hab mal was zum Rumspielen gebastelt.
Schönes Spieldings. :-)
Zwei doofe Fragen:
Liebe Grüße
Tom S.
Hallo TS,
- wieso geht nicht gelb, grün, rot (oder eben drei anderen Farben...)?
- können wir das Beispiel nicht funktionstüchtig im Wiki unterbringen, also in nicht flüchtigen Demoseiten?
zu 1. siehe 2., nämlich den Wikiartikel zu meter.
Bis demnächst
Matthias
Hallo,
- wieso geht nicht gelb, grün, rot (oder eben drei anderen Farben...)?
- geht
sehe ich das richtig, dass rot nur möglich ist, wenn optimum nicht zwischen low und high liegt? (und daher die Empfehlung im Wiki
der Wert des optimum-attributs sollte zwischen denen des min- und max-Attributes sein
etwas genauer darauf eingehen sollte)
Gruß
Kalk
@@Tabellenkalk
sehe ich das richtig, dass rot nur möglich ist, wenn optimum nicht zwischen low und high liegt?
Glaub schon.
Du hast maximal 3 Bereiche:
LLAP 🖖
Hallo
Du hast maximal 3 Bereiche:
- gelb – grün – gelb (low ≤ optimum ≤ high)
- grün – gelb – rot (optimum ≤ low ≤ high)
- rot – gelb – grün (low ≤ high ≤ optimum)
Mit dieser Auflistung und deinem Spielplatz habe ich die Logik nun begriffen. Danke.
<meter id="progress-bar" min="0" optimum="130" low="140" high="155" max="160" value=""></meter>
… ist genau dort, wo es das sein soll, grün, gelb bzw. rot.
Tschö, Auge
Hallo,
<meter id="progress-bar" min="0" optimum="130" low="140" high="155" max="160" value=""></meter>
… ist genau dort, wo es das sein soll, grün, gelb bzw. rot.
wobei ich keine Logik darin sehe, dass das Optimum nicht zwischen low und high liegt, sonder auf der Grenze zwischen „gut“ (grün) und „geht so“ (gelb). 😟
Gruß
Jürgen
Hello,
- können wir das Beispiel nicht funktionstüchtig im Wiki unterbringen, also in nicht flüchtigen Demoseiten?
- ist
zu 1. siehe 2., nämlich den Wikiartikel zu meter.
Das habe ich ja gesehen, soe wie die Anderen auch. Gunnars Beipiel gefällt mir wesentlich besser. Deshalb die Frage, ob man DAS nicht einbauen könnte ins Wiki. Da ich es nicht kann, muss ich eben fragen :-)
Liebe Grüße
Tom S.
Hallo TS,
Gunnars Beipiel gefällt mir wesentlich besser. Deshalb die Frage, ob man DAS nicht einbauen könnte ins Wiki. Da ich es nicht kann, muss ich eben fragen :-)
Ich finde, dass Gunnars Beispiel für das Wiki nicht so richtig geeignet ist. Welchen Wert soll es für einen lernenden haben, alle Werte beliebig verändern zu dürfen. Da sind die 5 festen Beispiele imho besser.
Bis demnächst
Matthias
Aloha ;)
Gunnars Beipiel gefällt mir wesentlich besser. Deshalb die Frage, ob man DAS nicht einbauen könnte ins Wiki. Da ich es nicht kann, muss ich eben fragen :-)
Ich finde, dass Gunnars Beispiel für das Wiki nicht so richtig geeignet ist. Welchen Wert soll es für einen lernenden haben, alle Werte beliebig verändern zu dürfen. Da sind die 5 festen Beispiele imho besser.
Sehe ich genauso. Ich habe aber das bestehende Beispiel mal so angepasst, dass die Buttons näher an den <meter>
stehen - das erhöht mMn die Übersichtlichkeit und zeigt auch intuitiver (optische Trennung) wo der Wert und wo die Konfigurationswerte stehen. Außerdem war am bisherigen Beispiel, wenn es im frickl aufgeht, bei meinen recht schmalen Bildschirmen immer das <meter>
nicht mit dem <button>
auf einmal in den Viewport zu bekommen. Das sollte jetzt ein wenig besser sein und klarer wirken.
Grüße,
RIDER
Hello,
Gunnars Beipiel gefällt mir wesentlich besser. Deshalb die Frage, ob man DAS nicht einbauen könnte ins Wiki. Da ich es nicht kann, muss ich eben fragen :-)
Ich finde, dass Gunnars Beispiel für das Wiki nicht so richtig geeignet ist. Welchen Wert soll es für einen lernenden haben, alle Werte beliebig verändern zu dürfen. Da sind die 5 festen Beispiele imho besser.
Sehe ich genauso. Ich habe aber das bestehende Beispiel mal so angepasst, dass die Buttons näher an den
<meter>
stehen - das erhöht mMn die Übersichtlichkeit und zeigt auch intuitiver (optische Trennung) wo der Wert und wo die Konfigurationswerte stehen. Außerdem war am bisherigen Beispiel, wenn es im frickl aufgeht, bei meinen recht schmalen Bildschirmen immer das<meter>
nicht mit dem<button>
auf einmal in den Viewport zu bekommen. Das sollte jetzt ein wenig besser sein und klarer wirken.
Irgendwas stimmt damit aber immer noch nicht. Ich sehe in den drei Areas (HTML, CSS, JavaScript?) immer nur zwei Zeilen, die dann auch durchscrollen, aber eben nur zwei Zeilen und ein Bisschen, obwohl die Areas groß genug sind.
Und könnest Du bitte die min-width von td auf 30 oder 40px herabsetzen, dann könnte man die Tabelle auch vernünftig sehen?
Liebe Grüße
Tom S.
Aloha ;)
Irgendwas stimmt damit aber immer noch nicht. Ich sehe in den drei Areas (HTML, CSS, JavaScript?) immer nur zwei Zeilen, die dann auch durchscrollen, aber eben nur zwei Zeilen und ein Bisschen, obwohl die Areas groß genug sind.
Das tritt so bei mir nicht auf - keine Ahnung wo der Fehler bei dir liegt.
Und könnest Du bitte die min-width von td auf 30 oder 40px herabsetzen, dann könnte man die Tabelle auch vernünftig sehen?
ACK, mach ich mal. Dachte ich mir vorhin schon, dass die zu breit sind.
Grüße,
RIDER
Hallo Camping_RIDER,
Das tritt so bei mir nicht auf - keine Ahnung wo der Fehler bei dir liegt.
Der Fehler tritt sporadisch auf, hauptsächlich im Firefox. @Felix Riesterer weiß davon, hatte aber damals keine Idee zur Lösung.
Und könnest Du bitte die min-width von td auf 30 oder 40px herabsetzen, dann könnte man die Tabelle auch vernünftig sehen?
ACK, mach ich mal. Dachte ich mir vorhin schon, dass die zu breit sind.
Ziel war damals (pft - prä-frickl-time), die Tabellenspalten alle gleichbreit zu haben. Da sie das mit einer kleineren Minimalbreite natürlich nicht mehr sind, habe ich statt einer Minimalbreite einen Innenabstand vergeben.
Bis demnächst
Matthias
Aloha ;)
Ziel war damals (pft - prä-frickl-time), die Tabellenspalten alle gleichbreit zu haben. Da sie das mit einer kleineren Minimalbreite natürlich nicht mehr sind, habe ich statt einer Minimalbreite einen Innenabstand vergeben.
Ich hab das auch gesehen, deshalb die 50px, da fiel das nicht so sehr auf wie bei 30 oder 40px 😉 Aber Innenabstand statt Minimalbreite ist dann schon besser, richtig.
Grüße,
RIDER
Hello,
Der Fehler tritt sporadisch auf, hauptsächlich im Firefox. @Felix Riesterer weiß davon, hatte aber damals keine Idee zur Lösung.
Stimmt, wo Du es sagst: manchmal wird es vernünftig angezeigt und manchmal leider nicht.
Und könnest Du bitte die min-width von td auf 30 oder 40px herabsetzen, dann könnte man die Tabelle auch vernünftig sehen?
ACK, mach ich mal. Dachte ich mir vorhin schon, dass die zu breit sind.
Ziel war damals (pft - prä-frickl-time), die Tabellenspalten alle gleichbreit zu haben. Da sie das mit einer kleineren Minimalbreite natürlich nicht mehr sind, habe ich statt einer Minimalbreite einen Innenabstand vergeben.
Prima. Danke.
Letzter Wunsch zur Sache: noch ein oder zwei Zeilen mit Max < 100 (lieb guck)
Liebe Grüße
Tom S.
Hallo TS,
Letzter Wunsch zur Sache: noch ein oder zwei Zeilen mit Max < 100 (lieb guck)
was erhoffst du dir / erwartest du davon? Da ändert sich genau gar nichts. min
und max
sind die Grenzen des Definitionsbereichs, also die mit den Rändern des meter-Elements assoziierten Werte. Die können auch 3.14 und 3.15 sein.
Bis demnächst
Matthias
Aloha ;)
Letzter Wunsch zur Sache: noch ein oder zwei Zeilen mit Max < 100 (lieb guck)
Gerne…
…aber nur, wenn du mir den tieferen didaktischeren Sinn dahinter erklären kannst.
Die Attribute min
und max
geben den möglichen Wertebereich an. Sonst nichts. Die Balken verhalten sich genau gleich, nur dass sie eben bei einem anderen Wert anfangen und bei einem anderen Wert aufhören.
Ich halte diesen Unterschied für vollkommen irrelevant an der Stelle.
Grüße,
RIDER
Hello,
Letzter Wunsch zur Sache: noch ein oder zwei Zeilen mit Max < 100 (lieb guck)
Gerne…
…aber nur, wenn du mir den tieferen didaktischeren Sinn dahinter erklären kannst.
Bei den Slider-Beispielen von Gunnar wurde das deutlich.
Liebe Grüße
Tom S.
Aloha ;)
Gerne…
…aber nur, wenn du mir den tieferen didaktischeren Sinn dahinter erklären kannst.
Bei den Slider-Beispielen von Gunnar wurde das deutlich.
Das nennst du „den didaktischen Sinn erklären“⁉️
Grüße,
RIDER
Hello,
…aber nur, wenn du mir den tieferen didaktischeren Sinn dahinter erklären kannst.
Bei den Slider-Beispielen von Gunnar wurde das deutlich.
Das nennst du „den didaktischen Sinn erklären“⁉️
Na, bin ICH Lehrer, oder DU? Für irgendwas muss deine Ausbildung ja auch gut sein ;-P
Liebe Grüße
Tom S.
Aloha ;)
…aber nur, wenn du mir den tieferen didaktischeren Sinn dahinter erklären kannst.
Bei den Slider-Beispielen von Gunnar wurde das deutlich.
Das nennst du „den didaktischen Sinn erklären“⁉️
Na, bin ICH Lehrer, oder DU? Für irgendwas muss deine Ausbildung ja auch gut sein ;-P
Gut, dann hat der Lehrer hiermit gesprochen, dass das didaktisch keinen Sinn macht.
Grüße,
RIDER
Hallo
Gut, dann hat der Lehrer hiermit gesprochen, dass das didaktisch keinen Sinn macht.
<zeigefinger style="position: oben;" />
Nicht in der deutschen Sprache, Herr Lehrer. Nicht in der deutschen Sprache. 😉
*scsvnr*
Tschö, Auge
Hallo TS,
Bei den Slider-Beispielen von Gunnar wurde das deutlich.
Das nennst du „den didaktischen Sinn erklären“⁉️
Na, bin ICH Lehrer, oder DU? Für irgendwas muss deine Ausbildung ja auch gut sein ;-P
Wennn hier jemand Lehrer ist, dann 😉😂
Aber ich vermag da ebenfalls keinen tieferen Sinn zu entdecken. Gunnar übrigens auch nicht.
Bis demnächst
Matthias
Hallo,
Tabellenspalten […] mit […] Innenabstand
Vielen Dank dafür! Sieht viel besser aus.
Was haltet ihr davon, die Values mit bspw. 10 zu initialisieren? Dann sind die Balken schon beim ersten Aufruf in bunt und in Farbe.
Gruß
Kalk
Hallo Tabellenkalk,
Was haltet ihr davon, die Values mit bspw. 10 zu initialisieren? Dann sind die Balken schon beim ersten Aufruf in bunt und in Farbe.
Gute Idee. Ich habe auch noch den Text des Beispiels auf das Wesentliche reduziert.
Bis demnächst
Matthias
Hello,
Tabellenspalten […] mit […] Innenabstand
Vielen Dank dafür! Sieht viel besser aus.
Was haltet ihr davon, die Values mit bspw. 10 zu initialisieren? Dann sind die Balken schon beim ersten Aufruf in bunt und in Farbe.
Dem stimme ich widerspruchslos zu ;-)
Liebe Grüße
Tom S.
@@Gunnar Bittersmann
FWIW, ich hab mal was zum Rumspielen gebastelt.
Ich frag mich, ob die Slider für min
und max
wirklich Sinn machen. Da sich min- und max-Werte der anderen Slider darauf beziehen, sollten die Werte vielleicht doch besser fest auf 0 bzw. 100 stehen und die Checkboxen und Slider disabled werden oder gar nicht auftauchen.
LLAP 🖖
Hallo Gunnar,
FWIW, ich hab mal was zum Rumspielen gebastelt.
in meinem Safari werden die Checkboxen nicht angezeigt.
Gruß
Jürgen
Aloha ;)
FWIW, ich hab mal was zum Rumspielen gebastelt.
in meinem Safari werden die Checkboxen nicht angezeigt.
Oh. In meinem Chrome demnach auch nicht 😂 Deshalb das kaputt wirkende Verhalten.
Grüße,
RIDER
@@Camping_RIDER
Aloha ;)
FWIW, ich hab mal was zum Rumspielen gebastelt.
in meinem Safari werden die Checkboxen nicht angezeigt.
Oh. In meinem Chrome demnach auch nicht 😂 Deshalb das kaputt wirkende Verhalten.
Oops, wenn man sich drauf verlässt, das WebKits/Blinks anständige Browser seinen, ist man verlassen.
fieldset { display: flex }
– nö, wieso denn auch?
Hab’s jetz ohne Flexbox.
LLAP 🖖