首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中通过常见的html类来移动css元素?

如何在javascript中通过常见的html类来移动css元素?
EN

Stack Overflow用户
提问于 2018-07-14 14:52:40
回答 4查看 313关注 0票数 0

这里有点菜鸟!我是在HTML和CSS的帮助下用纯javascript编写的,没有引擎。我正在尝试移动一个展示的坦克精灵,由3个部分组成:履带,底盘和炮塔。

代码语言:javascript
复制
<!DOCTYPE html>

<html lang='en'>
    <head>
        <meta charset="UTF-8">
        <link rel='stylesheet' href='.css'>
        <div class='tank' id='tracks'></div>
        <div class='tank' id='chasis'></div>
        <div class='tank' id='turret'></div>
    </head>
    <body>
        <script src='.js'></script>
    </body>
</html>

在这里,我创建了三个div元素,它们分别具有轨道、底盘和炮塔的唯一id。它们都共享公共类的水箱。

代码语言:javascript
复制
.tank {
    height: 31px;
    width: 31px;
    position: absolute;
}

#tracks {
    background: url("tracks.png");
}

#chasis {
    background: url("chasis.png");
}

#turret {
    background: url("turret.png");
}

在我的CSS代码中,我将3个组件共享的所有属性都归因于它们的类,因此它们共享相同的大小和位置。由于这三个元素中的每个元素都有一个无法共享的唯一图像,因此我通过id将其归因于每个元素。

代码语言:javascript
复制
var tracks = document.getElementById('tracks');
var chasis = document.getElementById('chasis');
var turret = document.getElementById('turret');

tracks.style.top = '167px';
chasis.style.top = '167px';
turret.style.top = '167px';

这段代码做到了这一点,它成功地将每个组件向下移动了167px,但我希望避免每次想要按组件移动坦克时都重写这些内容。

代码语言:javascript
复制
var tank = document.getElementsByClassName('tank');

tank.style.top = '167px';

因此,我试着按类别移动整个坦克,但没有起作用。我做错了什么?

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2018-07-14 14:57:56

尝试将div放在body部分,将js放在head部分。

将a添加到类中,如下所示:

代码语言:javascript
复制
var tank = document.getElementsByClassName('tank')[0];

编辑因为我意识到它们并不在Nex建议的带有坦克类的div中

票数 0
EN

Stack Overflow用户

发布于 2018-07-14 14:59:36

代码语言:javascript
复制
<div class="tank">
        <div id='tracks'></div>
        <div id='chasis'></div>
        <div id='turret'></div>
</div>

你就不能试试这个吗?所以你有一个水箱,里面有所有的部件。

票数 0
EN

Stack Overflow用户

发布于 2018-07-14 14:59:48

getElementsByClassName,则以Object格式返回节点列表。所以你不能直接在它上面应用样式。您需要使用数组函数遍历列表。要获取数组列表,可以使用querySelectorAll。

代码语言:javascript
复制
const tanks = document.querySelectorAll('.tank');
tanks.forEach(function(tank, index){
  tank.style.marginTop = '167px';
});
代码语言:javascript
复制
<div class="tank">1</div>
<div class="tank">2</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51336052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档