Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html元素的意外边距_Javascript_Css_Margin_Offset_Page Layout - Fatal编程技术网

Javascript html元素的意外边距

Javascript html元素的意外边距,javascript,css,margin,offset,page-layout,Javascript,Css,Margin,Offset,Page Layout,为什么document.body.style.margin在chrome和firefox中如果 未为正文设置style=“margin:[some]px” 现在假设我想通过div的某个子元素使用offsetParent.offsetLeftcss属性来显示body的边距。它默认给我0px。如果body元素最初是默认的0px边距,那么为什么我的html可视元素显示在页面左侧的边距是8px 主体边缘是否仅为0像素 HTML: <div> <p>hello</p&

为什么
document.body.style.margin
在chrome和firefox中如果 未为正文设置style=“margin:[some]px”

现在假设我想通过div的某个子元素使用
offsetParent.offsetLeft
css属性来显示body的边距。它默认给我0px。如果body元素最初是默认的0px边距,那么为什么我的html可视元素显示在页面左侧的边距是8px

主体边缘是否仅为0像素

HTML

<div>
    <p>hello</p>
</div>

尝试使用:

检查元素以查看附加偏移可能从何处进入

尝试使用:


检查元素以查看附加偏移可能从何处进入

问题1:

因为是一个表示元素内联样式的对象。如果尚未设置内联样式,则也无法从中获取值

Ques2

属性与其元素相关,该元素不一定是
主体
元素。此外,
offsetParent
可能在不同浏览器中引用不同的元素,也可能是不同的,并且
margin
或其他属性可能在计算中应用,也可能不应用


编辑

显然,
body
有一些默认边距,但似乎很难捕捉到它。请检查此项,您将找到
正文的边距

小提琴演奏结果的简短摘要:

var elem = document.body;
console.log(window.getComputedStyle(elem, null).getPropertyValue('color')); // rgb(0, 0, 0)
console.log(window.getComputedStyle(elem, null).getPropertyValue('marginBottom')); // null or an empty string, depends on the browser
console.log(window.getComputedStyle(elem, null).marginBottom); // Suprise! 8px

正如您在控制台中看到的,
margin
为空。即使您为它指定了值,它也将为空。这是因为它不是CSSStyleCollection的真正成员,
margin
只是在一行中设置所有属性的快捷方式。这一点同样适用于
边框

问题1:

因为是一个表示元素内联样式的对象。如果尚未设置内联样式,则也无法从中获取值

Ques2

属性与其元素相关,该元素不一定是
主体
元素。此外,
offsetParent
可能在不同浏览器中引用不同的元素,也可能是不同的,并且
margin
或其他属性可能在计算中应用,也可能不应用


编辑

显然,
body
有一些默认边距,但似乎很难捕捉到它。请检查此项,您将找到
正文的边距

小提琴演奏结果的简短摘要:

var elem = document.body;
console.log(window.getComputedStyle(elem, null).getPropertyValue('color')); // rgb(0, 0, 0)
console.log(window.getComputedStyle(elem, null).getPropertyValue('marginBottom')); // null or an empty string, depends on the browser
console.log(window.getComputedStyle(elem, null).marginBottom); // Suprise! 8px
正如您在控制台中看到的,
margin
为空。即使您为它指定了值,它也将为空。这是因为它不是CSSStyleCollection的真正成员,
margin
只是在一行中设置所有属性的快捷方式。例如,以下列表中的
边框

也表示相同的内容:

“如果元素是HTML正文元素…返回零并终止此算法。”

body
的边距为8px,因为这是Chrome的默认边距。但是它为offsetParent.offsetLeft返回0,因为它必须;)

来自:

“如果元素是HTML正文元素…返回零并终止此算法。”



body
的边距为8px,因为这是Chrome的默认边距。但是它为offsetParent.offsetLeft返回0,因为它必须;)

document.body.style.margin
不会提供完整的计算样式。了解@matt thanks如果使用记事本+,默认编码类型为UTF-8和BOM,那么使用哪种类型的编码?尝试不带BOMIf的UTF-8如果您在JSFIDLE选项
document.body.style.margin
中遇到问题,请使用规范化的CSS,它不会提供完整的计算样式。明白@matt Thank如果您使用Notepad++默认编码类型是带BOM的UTF-8,那么您使用的编码类型是什么?在没有BOMIf的情况下尝试UTF-8。如果您在jsFiddle使用规范化CSS方面遇到问题,请在Fiddle选项中发布您的代码以获得详细帮助,请点击此处。我们无法神奇地猜测这些偏移量在您的页面中来自何处。

hello

我的代码很简单,我只想得到document.write(document.getElementsByTagName(“p”)[0].offsetParent.offsetLeft);为了得到更好的答案,请始终使问题更形象(我用代码编辑了您的问题)。此外,我找不到任何带有body标签的页边距。谢谢您的编辑。。什么没有边际不是你的div在浏览器窗口的边际。请在这里发布你的代码以获得详细的帮助。我们无法神奇地猜测这些偏移量在您的页面中来自何处。

hello

我的代码很简单,我只想得到document.write(document.getElementsByTagName(“p”)[0].offsetParent.offsetLeft);为了得到更好的答案,请始终使问题更形象(我用代码编辑了您的问题)。此外,我找不到任何带有body标签的页边距。谢谢您的编辑。。什么没有边距不是您的div在浏览器窗口的某个边距上,对于div元素内部的元素,它是body元素。document.getElementsByTagName(“p”)[0].offsetParent刚出炉我只想知道body元素是否有默认边距对于div元素中的元素,它是body元素。document.getElementsByTagName(“p”)[0]。offsetParent刚出炉我只想知道body元素是否有默认边距
var elem = document.body;
console.log(window.getComputedStyle(elem, null).getPropertyValue('color')); // rgb(0, 0, 0)
console.log(window.getComputedStyle(elem, null).getPropertyValue('marginBottom')); // null or an empty string, depends on the browser
console.log(window.getComputedStyle(elem, null).marginBottom); // Suprise! 8px