Du hast da ein kleines Missverständniss bezüglich wie CSS funktionert.
Jedes DOM Objekt wie dein DIV hat eine Reihe an Style attributen, wie width, height, position und background-color, das sind die sachen die du über Style setzen kannst:
Code: Alles auswählen
TJSHTMLElement(mydiv).style.cssText := 'width:200px; height:200px'
Das setzt die beiden Attribute width und height auf 200 pixel.
Das ist aber nicht der einzige weg wie das Objekt an Styles kommt, daneben gibt es noch 3 weitere Möglichkeiten, Vererbung, Klassen/IDs und Tageinstellungen. Vererbung ist relativ einfach, wenn du z.B. den Font für ein div setzt gilt der Font auch für alle unterliegenden Objekte, und ist für hier nicht relevant.
Interessant sind Klassen/IDs und Tags, denn die können über CSS Definiert werden. Beispiel:
Code: Alles auswählen
<style>
#MyDiv {
width:200px;
height:200px;
}
.MyClass {
width:100px;
height:100px;
}
</style>
<div id="MyDiv"></div>
<div class="MyClass"></div>
Das # in CSS definiert eigenschaften die für das Element mit dieser ID gelten sollen, der . definiert Eigenschaften für alle Elemente die diese Klasse haben. Der Unterschied ist, es gibt immer genau ein Element mit einer bestimmten ID, aber mehrere Elemente können die Selbe Klasse haben, und ein Element kann mehrere Klassen haben:
Code: Alles auswählen
<style>
.Red {
background-color: red;
}
.Green {
background-color: green;
}
.Square {
width: 200px;
height: 200px;
}
</style>
<div class="Red Square"></div>
<div class="Green Square"></div>
Eine Klasse bzw. ID ist also so zu sagen nur die "Voreinstellung" von den Style Attributen die ein Element mit dieser Klasse oder ID erhalten soll.
Neben klassen und IDs gibts auch noch tag einstellungen:
Code: Alles auswählen
<style>
div {
width: 200px;
height: 200px;
background-color: red;
}
</style>
<div></div>
<div></div>
Da hier jetzt kein . oder # vor dem namen ist, wird diese CSS Regel auf alle DOM elemente mit dem tag "div" angewendet.
Um also das Beispiel aus W3C zu nehmen:
Code: Alles auswählen
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation: mymove 5s infinite;
}
Sagt jedes DIV im dokument soll diese größe, farbe und animation durchführen. Das Funktioniert in dem Minimalbeispiel, weil es nur ein div gibt. Wenn du ein bestimmtes element setzen willst, dann solltest du keine tag basierten Regeln benutzen.
Zu guter letzt, man kann Regeln in CSS kombinieren:
Code: Alles auswählen
<style>
.MyClass div {
width: 200px;
height: 200px;
background-color: red;
}
</style>
<div></div>
<div class="MyClass"><div></div></div>/code]
Hier wird die Regel auf alle "div" elemente angewendet die Kinder von einem MyClass Element sind. Das heist, das erste div in diesem beispiel ist nicht davon betroffen, beim zweiten Div allerdings das interne, da das das Kind eines MyClass divs ist.
[hr]
Jetzt zu deinem Problem:
[code]TJSHTMLElement( mydiv).style.cssText:='div { width: 100px; height: 100px; position: relative; animation: blamove 5s infinite;} [...]';
Das funktioniert nicht, weil du hier nicht style Eigenschaften setzt, sondern du definierst CSS regeln für DIVs. Solche regeln sind global und müssen in einem style Tag definiert werden.
Was du stattdessen machen solltest ist, du solltest die CSS regeln in einem Seperaten Style Block (oder besser einer CSS Datei) definieren, und dann dem element einfach nur noch die Klasse zuweisen. Ich gebe dir hier jetzt ein Beispiel in Javascript weil ich kein Pas2JS zur hand habe, das konzept ist aber das gleiche:
Code: Alles auswählen
<!DOCTYPE html>
<html>
<head>
<script src="test.js"></script>
<style>
.AnimatedClass {
width: 100px;
height: 100px;
background: red;
position: relative;
animation: mymove 5s infinite;
}
@keyframes mymove {
from {top: 0px;}
to {top: 200px;}
}
</style>
</head>
<body onload="siteLoaded()">
</body>
</html>
Mit dem folgenden Javascript code:
Code: Alles auswählen
function siteLoaded() {
// Erstelle neues div element
let newDiv = document.createElement("div");
// Setze die klasse auf AnimatedClass (definiert in CSS style)
newDiv.className = "AnimatedClass";
// Füge div zu website hinzu
document.body.appendChild(newDiv);
}