我注意到当我将我的 html 代码移植到 Django 模板中时,html 元素的宽度会发生一些变化。这是正在发生的事情(请参阅下面的 HTML 代码):
- 我定义了 jQuery 对象并赋予它 css 属性宽度 = 498px。
- 我立即打印出(使用 JS 警报命令)宽度属性,它仍然是 498 像素,正如预期的那样。
- 我将对象附加到 $("body")
- 我再次打印出对象的css宽度属性,将其更改为497.7665px。
所以看起来问题是在将对象附加到“body”期间发生的。
当我只是从没有 Django 模板的文件中加载它时,完全相同的代码没有这个问题。
为什么会发生这种情况,有什么办法可以解决吗?谢谢。
编辑:最后我能够隔离问题。下面是 HTML 代码。就像我说的那样,如果您尝试将其直接加载到浏览器中,则两个警报(在放置到“body”之前和之后)都会按预期为您提供 width=498px。
但是,如果您将其设置为 Django 模板并使用 Django 开发服务器运行,则第二个警报(放置到“body”之后)会根据浏览器的不同给您一个稍微不同的数字:Firefox 给出 497.76666px,IE 给出 498.1px。我没有检查其他浏览器。
需要注意的是,css 属性(“left”、“top”、“width”、“height”、“border-width”、“background-color”、“border-style”)的组合显示问题。如果您至少删除其中一个,问题就会消失。
如果您碰巧知道发生了什么和/或可行的解决方法是什么,我将不胜感激。谢谢。这是代码:
<!doctype html>
<html lang="en">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function() {
var my_element = $("<div/>")
.addClass("my_element")
.attr("id", "my_element1")
.css("position", "absolute")
.css("left", "0px")
.css("top", "0px")
.css("width", "498px")
.css("height", "300px")
.css("border-width", "1px")
.css("background-color", "#999966")
.css("border-style", "solid");
alert("width:" + my_element.css("width"));
$("body").append(my_element);
alert("width:" + my_element.css("width"));
});
</script>
</head>
<body>
</body>
</html>