HTML5: Fortschrittsbalken (progress )
Autor: Ralf v.d.Mark
eingetragen: Freitag, 19. Juni 2020 um 08:31 Uhr (25/2020 Kalenderwoche)
geändert: Mittwoch, 15. September 2021 um 16:50 Uhr (37/2021 Kalenderwoche)
Keywords: progress Fortschrittsbalken
Kategorien: HTML, JavaScript, PHP,
Text:
In HTML5 hat man die Möglichkeit, eine visuelle Darstellung eines Ablaufs.
60 Sekunden
Sowas habe ich zum Beispiel in AIS beim Excel-Download (application_excelHelper\excelHelper.php). Dort wird mit PHP der dynamisch erzeuge HTML-Tag in eine Textdatei geschrieben, mit JavaScrip (Ajax) ausgelesen und in den Quellcode der Seite gepostet.
1.) TechDox: ähnliches Thema #229
2.) TechDox: ähnliches Thema #234
Quellcode:
<?php
/**
* Fortschrittsbalken (visuelle Darstellung eines Ablaufs der Excelerstellung)
* die Funktion rechnet automatisch die übergebenen Werte in Prozent um.
*
* @version 19.06.2020
* @author Ralf von der Mark, BLE - Entwicklung <Ralf.vonderMark@BLE.de>
*
* @param string $textAusserhalb
* @param integer $anteilVonMaximalWert
* @param integer $maximalWert
* @param string $textInnerhalbVorStand
* @param string $textInnerhalbHinterStand
* @param boolean $prozentzahlHintenErneutAnzeigen
*
* @return string (Beschreibung)
*/
function erstelleFortschrittsbalkenUndText($textAusserhalb,
$anteilVonMaximalWert,
$maximalWert = 100,
$textInnerhalbVorStand = 'Ablaufstand: ',
$textInnerhalbHinterStand = null,
$prozentzahlHintenErneutAnzeigen = true)
{
$maximalWert = intval($maximalWert);
$anteilVonMaximalWert = intval($anteilVonMaximalWert);
if ($maximalWert == 100 && $anteilVonMaximalWert < 101) {
//Wenn 100 Prozent gesetzt und der Wert unter 100 bleibt, dann alles gut...
$maximalWert = 100;
} else {
//Wenn $maximalWert nicht 100 ist, wird in Prozent umgerechnet:
$anteilVonMaximalWert = intval($anteilVonMaximalWert * 100 / $maximalWert);
$maximalWert = 100;
}//ENDE: else ==> if ($anteilVonMaximalWert == 100)
return $textAusserhalb
. ' <progress value="' . $anteilVonMaximalWert . '" max="' . $maximalWert . '">' .
$textInnerhalbVorStand . $anteilVonMaximalWert . '%' . $textInnerhalbHinterStand
. '</progress> '
. ($prozentzahlHintenErneutAnzeigen == true ? $anteilVonMaximalWert . '% ' : null);
}//ENDE: function erstelleFortschrittsbalkenUndText(...)
?>
Kleine Demo:<br>
<progress value="60" max="60" id="sekundenAnzeige">Restliche Sekunden</progress>
<span id="hintereAnzeige">60 Sekunden</span>
<script type="text/javascript">
var eineSekunde = 60;
var zeit = window.setTimeout("sekunden(\'" + eineSekunde + "\')", 1000);
function sekunden(eineSekunde) {
eineSekunde--;
if (eineSekunde > 0) {
document.getElementById("sekundenAnzeige").value = eineSekunde;
document.getElementById("hintereAnzeige").innerText = 'noch ' + eineSekunde + ' Sekunden';
zeit = window.setTimeout("sekunden(\'" + eineSekunde + "\')", 1000);
} else {
window.clearTimeout(zeit);
document.getElementById("sekundenAnzeige").value = 0;
document.getElementById("hintereAnzeige").innerText = 'Die Sekunden sind abgelaufen!';
}
}
</script>
<style>
/* **** START: Status-Bar PROGESS: ************
Ralf, 14.09.2021: Hintergrundfarbe/Balkenfarbe Änderung funktioniert nicht! :-/
Tipps von: https://www.hongkiat.com/blog/html5-progress-bar/ */
progress {
/*background-color: #f3f3f3;*/
border: 0;
height: 18px;
border-radius: 9px;
}
/* START: Chrome and Safari: */
progress::-webkit-progress-bar {
/*background-color: #f3f3f3;*/
border: 0;
height: 18px;
border-radius: 9px;
}
progress::-webkit-progress-value {
/*background-color: #f3f3f3;*/
border: 0;
height: 18px;
border-radius: 9px;
}
/* ENDE: Chrome and Safari: */
/* START: Firefox: */
progress::-moz-progress-bar {
/*background-color: #f3f3f3;*/
border: 0;
height: 18px;
border-radius: 9px;
}
/* ENDE: Firefox: */
/* **** ENDE: Status-Bar PROGESS: ************ */
</style>