是新创建的元素,它不是DOM样式的一部分,或者所有值都设置为默认值
is newly created element, that is not part of the DOM styled or has all values set to default?
首先创建元素:
var link = document.createElement('a');
我的文档被加载,样式和脚本生效。
样式可以是,例如:
a { background-color: salmon; }
所以它适用于所有的A
标签。
在这些情况下,这个新创建的元素是否将所有CSS属性设置为规范中的默认值,并在插入DOM时进行样式设置,或者在创建时进行样式设置?
不,在元素被附加到DOM之前,它保持未样式化。或者,至少,它的计算样式是不可用的(大概是因为它还没有呈现):
HTML:<a href="#">Something</a>
CSS: a {
color: purple;
}
JavaScript: var body = document.getElementsByTagName('body')[0];
var a = document.createElement('a');
a.href = 'http://google.com/';
a.innerHTML = 'link to google';
console.log('color: ' + window.getComputedStyle(a,null).getPropertyValue('color'));
body.appendChild(a);
console.log('color: ' + window.getComputedStyle(a,null).getPropertyValue('color'));
JS小提琴。
如果,然而,你显式地用JavaScript样式元素,这增加了创建的元素的style
属性,的样式信息是立即可用的(尽管仍然不是通过getComputedStyle()
):
var body = document.getElementsByTagName('body')[0];
var a = document.createElement('a');
a.href = 'http://google.com/';
a.innerHTML = 'link to google';
a.style.color = 'green';
console.log('color: ' + a.style.color);
body.appendChild(a);
console.log('color: ' + a.style.color);
JS小提琴。
插入文档时的样式:
getComputedStyle( document.createElement('a') ).color;
//""
getComputedStyle( document.body.appendChild( document.createElement('a') ) ).color;
//"rgb(0, 119, 204)"
对于好奇的人来说,这里有更多关于浏览器渲染如何工作的信息:http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
相关文章:
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 如果值为空,如何设置输入的默认值?jQuery
- 骨干模型默认值-todos.js示例中不必要的代码
- jquery日期选择器年份范围默认值
- Html5输入属性的默认值,如最小值、最大值、大小等
- 根据两个下拉列表的默认值禁用按钮
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- Angularjs-设置不带ng选项的select的默认值
- jQuery Datepicker从日期开始设置默认值
- 如何设置浏览器打开的文件对话框的文件名(一些默认值)
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- Selectize选择默认值
- 在KeystoneJS中为Types.Money设置默认值
- 是否可以同时为一个元素的所有事件指定阻止默认值
- 防止在IE7中按回车键时出现默认值
- 如何覆盖jqGrid's语言默认值
- 如何为显示jquery滑块值的文本框设置默认值
- 是新创建的元素,它不是DOM样式的一部分,或者所有值都设置为默认值
- Jquery实时点击导致双窗口打开,不能返回false,防止默认值,或者只是让链接直接停止