javascript - 通过 JavaScript 的 CSS : changing class "interrupted" by style change

标签 javascript html css

通过 JavaScript 更改 DIV 的类效果很好,直到我通过更改该 DIV 的样式属性来“中断它”。

case 0: left 变为 400

案例 1:改变 left 为 600

情况 2:不起作用!

这是为什么?

<!DOCTYPE html>
<html>

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <style type="text/css">
        .pos1 {left: 200px; top:400px;}
        .pos2 {left: 400px; top:400px;}
        .pos3 {left: 800px; top:400px;}
    </style>
</head>

<body>
        <div id = "img" class = "pos1" style="position:absolute;"> <img src="gfx/1n.png"> </div>


        <script type="text/javascript">
            var action = 0;
            window.onmousedown = function(event){makeAction();}

            function makeAction() {
                switch(action) {
                    case 0: action++; document.getElementById('img').className = "pos2"; break
                    case 1: action++; document.getElementById('img').style.left = "600px"; break;
                    case 2: action++; document.getElementById('img').className = "pos3"; break;
                }

            }

        </script>
</body>
</html>

最佳答案

因为您在第二种情况下设置的样式属性会覆盖您在最后一种情况下分配的类的样式。

在第一种情况之后图像标签是

<img class="pos2" ... />

所以它位于左侧 400px。

在第二种情况之后图像标签是

<img class="pos2" style="left: 600px" ... />

即使它仍然具有 pos2 类,样式属性会覆盖 左侧定位,因此它现在位于左侧 600 像素处。

在最后一个案例之后,图像标签是:

<img class="pos3" style="left: 600px;" .. />

即使它现在有 pos3 类,样式属性仍然会覆盖左侧定位,因此它仍然位于左侧 600 像素处。

了解 CSS 不依赖于何时应用它,而是始终遵循特异性规则。并且规则声明标签样式属性中的样式规则覆盖类中的样式规则。

您可以使用 important 关键字覆盖规则:

.pos3 {left: 800px !important; top:400px;}

关于javascript - 通过 JavaScript 的 CSS : changing class "interrupted" by style change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771543/

相关文章:

javascript - 当元素插入 html OL 时触发事件

css - chrome新版打印隐藏部分的打印预览边距

javascript - 为什么我们可以链接到另一个域上的 js 文件?

javascript - 为什么我不能在我的快速路由中使用中间件?

javascript - AngularJs 清理和显示 html

javascript - 尝试访问数组返回未定义

javascript - 两个时区格式日期之间的 moment.js 差异

css - 只有 div 中的第一个输入元素会受到影响,但不会影响其他元素

jquery - 聊天框中的 CSS 问题,如 Chrome 中包含 iframe 的 div

html - 如何根据文本内容使所有 div 高度相同?