操作表格

 属性:

caption    标题元素

tHead    表头元素

tFoot    表尾元素

tBodies    主体元素集合,通过下标取

row    行元素集合,通过下标取

 方法:

createCaption()

createTHead()

createTFoot()

deleteCaption()

deleteTHead()

deleteTFoot()

deleteRow(pos)

insertRow(pos)

 tbody的属性和方法:

rows    行集合

deleteRow(pos)    删除第几行

insertRow(pos)    插入行到那个位置

 tr的属性和方法:

cells    单元格集合

deleteCell(pos)    删除单元格

insertCell(pos)    插入单元格到那个位置

 注意:

不支持td,tbody方法

操作样式

 检查dom2级css能力:

1
document.implementation.hasFeature('CSS2','2.0');

 访问元素的样式:

行内样式:

调用方式

style.color,style.fontSize,style[font-size]

属性

cssText    css文本内容

length    样式个数

方法
                getPropertyPriority(name)    含有important则返回important

getPropertyValue(name)    获取属性值

setProperty(name,v,p)    设置属性

removeProperty(name)    移除属性

获取计算后的样式:

IE不支持getComputedStyle

IE支持currentStyle属性

1
var style = window.getComputedStyle ? window.getComputedStyle(table,null) : null || table.currentStyle;

 操作样式表:

基本方式

ele.id

ele.className

三个定义方法

是否存在class

1
2
3
4
//判断是否存在这个class
function hasClass(element, className) {
    return element.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
}

添加class

1
2
3
4
5
6
//添加一个class,如果不存在的话   
function addClass(element, className) {
    if (!hasClass(element, className)) {
        element.className += " " + className;
    }
}

删除class

1
2
3
4
5
6
//删除一个class,如果存在的话   
function removeClass(element, className) {
    if (hasClass(element, className)) {
        element.className = element.className.replace(new RegExp('(\\s|^)' + className + '(\\s|$)'), ' ');
    }
}

HTMLLinkElement,HTMLStyleElement

1
var link = document.getElementsByTagName('link')[0];

sheet属性兼容

非IE使用sheet

IE使用styleSheet

1
var sheet = link.sheet || link.styleSheet;

css规则

非IE    sheet.clssRules、sheet.deleteRule()、sheet.insertRule()

IE    sheet.rules、sheet.removeRule()、sheet.addRule()

1
2
3
4
5
6
7
8
9
function insertRule(sheet, selectorText, cssText, position) {
    //如果是非IE   
    if (sheet.insertRule) {
        sheet.insertRule(selectorText + "{" + cssText + "}", position);
        //如果是IE   
    else if (sheet.addRule) {
        sheet.addRule(selectorText, cssText, position);
    }
}
1
2
3
4
5
6
7
8
9
function deleteRule(sheet, index) {
    //如果是非IE   
    if (sheet.deleteRule) {
        sheet.deleteRule(index);
        //如果是IE   
    else if (sheet.removeRule) {
        sheet.removeRule(index);
    }
}

获取元素

 CSS大小:

通过style内联获取元素大小

ele.style.width、 ele.style.height

通过计算元素大小

1
var style = window.getComputedStyle ? window.getComputedStyle(table,null) : null || table.currentStyle;

sytle.width、style.height

通过CSSStyleSheet

1
2
var sheet = document.styleSheets[0]; //获取link 或style
var rule = (sheet.cssRules || sheet.rules)[0]; //获取第一条规则

rule.style.width、rule.style.height

 实际大小:

元素可视区大小    内容+内边距

ele.clientWidth、ele.clientHeight

元素滚动内容大小    滚动条

ele.scrollWidth、ele.scrollHeight

元素实际大小    内容+内边距+边框+滚动条

ele.offsetWidth、ele.offsetHeight

 周边大小:

边框大小 不支持右下

ele.clientLeft、ele.clientTop

相对父元素的位置

ele.offsetLeft、ele.offsetTop

滚动条被隐藏的大小

​    ​    ​ele.scrollLeft、ele.scrollTop

 

DOM系统学习-表格、样式和元素大小的更多相关文章

  1. DOM系统学习-进阶

    DOM类型  Node类型: 常用类型: ​    ​    ​元素节点 ELEMENT_NODE ​    ​    ​属性节点 ATTRIBUTE_NODE ​    ​    ​文本节点 TEX ...

  2. DOM系统学习-基础

    DOM介绍  DOM介绍: D 网页文档 O 对象,可以调用属性和方法 M 网页文档的树型结构  节点: DOM将树型结构理解为由节点组成.     节点种类: 元素节点.文本节点.属性节点等 查找元 ...

  3. Javascript高级编程学习笔记(52)—— DOM2和DOM3(4)元素大小

    在日常实践中,我们在使用JS的时候难免会需要获取元素的大小及位置 首先要声明的是,这一部分的内容并不属于DOM2样式规范,因为DOM中并没有对我们如何获取元素大小的相关信息做出规范 偏移量 偏移量及元 ...

  4. 【学习笔记】HTML基础:列表、表格与媒体元素

    一.列表是信息资源的一种展现形式,它可以使信息结构化和条理化,并以列表的样式显示出来,以便浏览者能够快速的获取相应的信息. 1.无需列表 <ul> <li>第一项</li ...

  5. 剑指前端(前端入门笔记系列)——DOM(元素大小)

    DOM——元素大小   DOM中没有规定如何确定页面中与元素的大小,IE率先映入了一些属性来确定页面中元素的大小,以便开发人员使用,目前,所有主要的浏览器都已经支持这些属性了.   1.偏移量(单位为 ...

  6. android学习笔记50——SQLiteOpenHelper、android实现系统自带样式

    SQLiteOpenHelper SQLiteOpenHelper是android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新. 一般的用法是创建SQLiteOpenHelper的子 ...

  7. DIV+CSS系统学习:转载

    第一部分 HTML 第一章 职业规划和前景 职业方向规划定位: web前端开发工程师 web网站架构师 自己创业 转岗管理或其他 web前端开发的前景展望: 未来IT行业企业需求最多的人才 结合最新的 ...

  8. dojo/dom-geometry元素大小

    在进入源码分析前,我们先来点基础知识.下面这张图画的是元素的盒式模型,这个没有兼容性问题,有问题的是元素的宽高怎么算.以宽度为例,ff中 元素宽度=content宽度,而在ie中 元素宽度=conte ...

  9. HTML+CSS纯干货就业前基础到精通系统学习2016/9/3

    1:HTML纯干货学习后的达到的效果 (1):会使用HTML的基本结构,创建网页 (2):会使用文本字体相关标签,实现文字修饰和布局 (3):会使用图像.超链接相关标签,实现图文并茂的页面 (4):会 ...

随机推荐

  1. idea 将工程项目打包成war

    1.File--Project structure ---- Artifacts ----- + -----web Application :Archive ---for ' **:war explo ...

  2. 【sgu390】数位dp

    这题其实就是不断地合并子树,跟前面例一的思想是一样的. 这个打法我觉得非常优美啊(学别人的),为什么要搞lim1和lim2呢? 是因为在区间lim1~lim2之外的都是没有用的,但是我们f[h][su ...

  3. wikioi 1245最小的N个和

    2013-09-08 10:12 LRJ的算法竞赛入门经典训练指南里有类似的题,原题要难很多,p189页 读入A,B两组中的所有数后,建立N个有序表: A1+B1<A2+B1<A3+B1& ...

  4. Python 本地线程

    1. 本地线程,保证即使是多个线程,自己的值也是互相隔离. 2.普通对象演示 import threading import time class A(): pass a=A() def func(n ...

  5. Oracle 10g 安装环境配置脚本

    #!/bin/bash #Test in RHEL 5.5 for 10g c=`cat /etc/shadow | grep oracle | wc -l`if [ $c != 0 ]then  w ...

  6. python接口自动化11-post传data参数案例【转载】

    前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...

  7. mysql的一些工具(系统自带)

    1.mysqld: 这个是mysqld服务器的主程序. 2.mysqld_safe: 这个是unix系统下,辅助mysql服务器启动的工具. 直接运行mysqld程序来启动MySQL服务的方法很少见, ...

  8. Qt笔记——Event

    #ifndef MYBUTTON_H #define MYBUTTON_H #include <QPushButton> class MyButton : public QPushButt ...

  9. 架设Hmailserver+webmail邮件服务器

    架设Hmailserver+webmail邮件服务器   在安裝Hmailserver前先安裝Apache.php.mysql,如果你想懶點直接到http://www.phpnow.org下載phpn ...

  10. 在web项目下注册MySQL数据库驱动失败

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at org.apache.catalina.loader.WebappClassLoa ...