Javascript 切换现有形状的形状
Javascript switch shape of an existing shape
我在 javascript 中有一个项目,它是关于一个使用键盘移动的正方形(上、下、右、左)现在我希望能够将正方形的形状更改为例如三角形或圆形。我想通过按例如 1 并将形状更改为圆形,按 2 并将形状更改为三角形来执行此操作。同时我希望新形状能够使用上、下、左、右移动
问题是,如何将正方形变成三角形?还是圆圈?
html
<!DOCTYPE html>
<html>
<head>
<title>Interactiune cu tastatura</title>
<script src="./main.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="patrat"></div>
<div id="triangle"></div>
<div id="circle"></div>
<p id="demo"></p>
</body>
</html>
CSS
@CHARSET "UTF-8";
#patrat {
position: absolute;
top: 0px;
left: 0px;
width: 100px;
height: 100px;
background-color: blue;
}
#triangle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid red;
}
#circle {
width: 100px;
height: 100px;
background: red;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
border-radius: 50px;
}
main.js
var step = 100,
squareLeft = 0,
squareTop = 0,
squareSide = 100,
triangleLeft = 0,
triangleTop = 0,
triangleSide = 100,
circleLeft = 0,
circleTop = 0,
circleSide = 0,
screenWidth = 1920,
screenHeight = 1080;
document.addEventListener('keydown', function(event)
{
var keyCode = event.keyCode,
spaceLeft = 0,
x = document.getElementById("patrat");
y = document.getElementById("triangle");
switch (keyCode) {
case(49):
document.getElementById("circle");
case (13): /*ENTER*/
/*document.getElementById("demo").innerHTML = "Text test";*/
/*document.getElementById("demo").innerHTML = x.style.backgroundColor;*/
x.style.backgroundColor = "rgb(255,255,0)";
break;
case (37): /*ArrowLeft*/
if (squareLeft > 0) {
squareLeft = (squareLeft > step) ? squareLeft - step : 0;
x.style.left = squareLeft + "px";
}
break;
case (39): /*ArrowRight*/
spaceLeft = screenWidth - squareLeft - squareSide;
if (spaceLeft > 0) {
squareLeft += (spaceLeft > step) ? step : spaceLeft;
x.style.left = squareLeft + "px";
}
break;
case (38): /*ArrowUp*/
if (squareTop > 0) {
squareTop = (squareTop > step) ? squareTop - step : 0;
x.style.top = squareTop + "px";
}
break;
case (40): /*ArrowDown*/
spaceLeft = screenHeight - squareTop - squareSide;
if (spaceLeft > 0) {
squareTop += (spaceLeft > step) ? step : spaceLeft;
x.style.top = squareTop + "px";
}
break;
default:
alert("Aceasta tasta nu este utilizata");
break;
}
}
);
如果您的三角形 CSS class 是正确的,您似乎可以从更改元素的 ID 开始:
document.getElementById('circle').id = 'triangle';
...但是这种架构很脆弱,不推荐使用。改进之路的一个步骤是使用 classnames:
document.querySelector('.circle').className = 'triangle';
这会将 circle
的 class 的第一个 DOM 元素变成三角形。您的 CSS 看起来像
.circle {
...
}
.triangle {
...
}
要将所有 .circle
转换为 .triangle
,请执行以下操作:
document.querySelectorAll('.circle').forEach(function(element) {
element.className = triangle;
});
同样,这是假设您的 CSS class 正在按预期渲染形状。
我在 javascript 中有一个项目,它是关于一个使用键盘移动的正方形(上、下、右、左)现在我希望能够将正方形的形状更改为例如三角形或圆形。我想通过按例如 1 并将形状更改为圆形,按 2 并将形状更改为三角形来执行此操作。同时我希望新形状能够使用上、下、左、右移动
问题是,如何将正方形变成三角形?还是圆圈?
html
<!DOCTYPE html>
<html>
<head>
<title>Interactiune cu tastatura</title>
<script src="./main.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="patrat"></div>
<div id="triangle"></div>
<div id="circle"></div>
<p id="demo"></p>
</body>
</html>
CSS
@CHARSET "UTF-8";
#patrat {
position: absolute;
top: 0px;
left: 0px;
width: 100px;
height: 100px;
background-color: blue;
}
#triangle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid red;
}
#circle {
width: 100px;
height: 100px;
background: red;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
border-radius: 50px;
}
main.js
var step = 100,
squareLeft = 0,
squareTop = 0,
squareSide = 100,
triangleLeft = 0,
triangleTop = 0,
triangleSide = 100,
circleLeft = 0,
circleTop = 0,
circleSide = 0,
screenWidth = 1920,
screenHeight = 1080;
document.addEventListener('keydown', function(event)
{
var keyCode = event.keyCode,
spaceLeft = 0,
x = document.getElementById("patrat");
y = document.getElementById("triangle");
switch (keyCode) {
case(49):
document.getElementById("circle");
case (13): /*ENTER*/
/*document.getElementById("demo").innerHTML = "Text test";*/
/*document.getElementById("demo").innerHTML = x.style.backgroundColor;*/
x.style.backgroundColor = "rgb(255,255,0)";
break;
case (37): /*ArrowLeft*/
if (squareLeft > 0) {
squareLeft = (squareLeft > step) ? squareLeft - step : 0;
x.style.left = squareLeft + "px";
}
break;
case (39): /*ArrowRight*/
spaceLeft = screenWidth - squareLeft - squareSide;
if (spaceLeft > 0) {
squareLeft += (spaceLeft > step) ? step : spaceLeft;
x.style.left = squareLeft + "px";
}
break;
case (38): /*ArrowUp*/
if (squareTop > 0) {
squareTop = (squareTop > step) ? squareTop - step : 0;
x.style.top = squareTop + "px";
}
break;
case (40): /*ArrowDown*/
spaceLeft = screenHeight - squareTop - squareSide;
if (spaceLeft > 0) {
squareTop += (spaceLeft > step) ? step : spaceLeft;
x.style.top = squareTop + "px";
}
break;
default:
alert("Aceasta tasta nu este utilizata");
break;
}
}
);
如果您的三角形 CSS class 是正确的,您似乎可以从更改元素的 ID 开始:
document.getElementById('circle').id = 'triangle';
...但是这种架构很脆弱,不推荐使用。改进之路的一个步骤是使用 classnames:
document.querySelector('.circle').className = 'triangle';
这会将 circle
的 class 的第一个 DOM 元素变成三角形。您的 CSS 看起来像
.circle {
...
}
.triangle {
...
}
要将所有 .circle
转换为 .triangle
,请执行以下操作:
document.querySelectorAll('.circle').forEach(function(element) {
element.className = triangle;
});
同样,这是假设您的 CSS class 正在按预期渲染形状。