DHTML, Dynamic HTML, dynamisches HTML oder neuerdings auch DOM-Scripting sind beim Webdesign verwendete Begriffe, mit dem Websites bezeichnet werden, die gegenüber normalen, statischen Seiten erweiterte Funktionalität oder Anzeigeeffekte aufweisen. Durch die Verwendung von dynamischen HTML kann die Benutzerfreundlichkeit von Webseiten verbessert werden, die sich insbesondere von Anwendern, die sich im Web weniger gut auskennen, leichter verwendet werden können. Während eine normale HTML-Seite nach dem Abruf statisch und unveränderlich sind (von Hovereffekten mit CSS einmal abgesehen), können Seiten mit dynamischem HTML weitere Funktionalität bieten, etwa Teile der Seite verändern oder animieren.
Der Begriff kann leicht mit dynamischen Webseiten verwechselt werden; damit werden Webseiten bezeichnet, die vor dem Abruf durch den Webbrowser vom Server generiert werden (etwa durch ein PHP-Script), während Webseiten mit dynamischen HTML durch Scripting dynamisiert werden, welches nach dem Abruf im Browser ausgeführt wird. Beide Techniken können auch kombiniert werden, viele Anwendungfälle von dynamischen HTML machen ohne dynamisch auf Serverseite generierten Inhalt sogar kaum Sinn.
Dynamisches HTML wird mittels der folgenden Techniken realisiert:
Damit ist es möglich, Webseiten zu schreiben, deren Inhalte sich während der Darstellung im Browser „dynamisch“ ändern, insbesondere in Reaktion auf Benutzereingaben. Das kann zum Beispiel bedeuten, dass ein Menü aufklappt, Texte hervorgehoben oder eingeblendet werden, Objekte sich per Drag & Drop bewegen lassen oder ein Formular automatisch Berechnungen durchführt.
Durch diese Interaktivität ist es möglich, Webseiten zu schreiben, die sich wie normale Anwendungsprogrammen bedienen lassen. Dabei werden meist die Fähigkeiten moderner Browser genutzt, die mit dem XMLHttpRequest Daten zwischen Client und Server austauschen (siehe auch Ajax). Als allgemeines Format zur Übertragung von strukturierten Daten dient zumeist XML oder auch JSON (siehe auch Web Service, XML-RPC).
Insbesondere in der Anfangszeit wurde dynamisches HTML häufig für nutzlosen, effekthaschenden Spielereien verwendet, die von vielen sogar als störend empfunden werden. Darüber hinaus konnte es damals nur über Browser-spezifische sogenannte DHTML-Modelle realisiert werden, die nicht zueinander kompatibel waren. Dieser Ruf hängt dynamischem HTML bis heute an. Daher wird heute teilweise auch von DOM Scripting gesprochen, mit dem man modernes, standardkonformes dynamisches HTML von den inkompatiblen, nutzlosen Spielereien abgrenzen möchte.
Dynamisches HTML stellt oft hohe Anforderungen an die Javascript-Fähigkeiten des Browser, die oft nur von der neusten Browsergeneration erfüllt werden. Benutzer anderer Browser oder solche, die Javascript (etwa aus Sicherheitsbedenken) deaktiviert haben, können die dynamisches HTML ergo nicht verwenden. Darüber hinaus kann sich die Zugänglichkeit für Anwender verschlechtern, die wegen körperlichen Behinderungen alternative Eingabe- bzw. Ausgabemethoden zurückgreifen müssen (siehe Barrierefreies Internet). Es ist aber möglich, dynamisches HTML so zu verwenden, dass es nur bei Browsern verwendet wird, die damit auch umgehen können. Die übrigen Anwender können die Website dann so verwenden, als ob diese gar kein dynamisches HTML einsetzen würde. Auch Suchmaschinen können dynamisches HTML nicht verwenden und bei falscher Anwendung nicht mehr alle Inhalte der Seite auffinden.