JS DOM基础 操作属性、类、CSS样式

操作属性和类

一、属性节点操作

  文本节点内容的获取和修改:

    语法:elementNode.attributeName ( 元素节点.属性名)
          也可以使用“[ ]”  ( 元素节点[属性名])

  注意:一般我们操作属性节点时是不需要获取属性节点的,而是直接通过元素节点获取(/修改)属性节点的值。

          特别的,有些属性名称与js关键字或者保留字冲突了,只能用另外的名字:
       class属性:要写成className(class是关键字)。
       label标签的for属性:写成htmlFor。

  通过方法操作属性节点:

    element.getAttribute(attributeName)            返回元素节点的指定属性值

    element.setAttribute(attributeName, attributeValue)    指定属性设置或更改为指定值

    element.removeAttribute(attributeName)        从元素中移除指定属性

    ement.hasAttribute(attributeName)            如果元素拥有指定属性,则返回true

二、自定义属性

  自定义属性:给html标签写一个自己定义的属性。

  虽然给一个对象添加属性很简单,但是在dom中,给元素节点添加自定义的属性节点,html5中要求自定义属性节点应该为‘data-’开头,

  比如自定义属性abc,应该写成:       

      data-abc
  这样,要使用时就通过dataset属性即可操作了:

  例如:a标签有自定义属性‘abc’

<a href="" data-abc=‘123‘></a>
<script>
let aEle = document.querySelector(‘a’);
console.log(aEle.dataset.abc);//123
</script>

注意:attribute相关方法可以操作任意属性,包括自定义属性(对自定义属性使用时必须加‘data-’)

三、html5中class属性的新操作

  使用classList获取一个元素节点上所有的class值:

<body>
<p id="test1" class="abc qwe">Lorem ipsum dolor sit amet.</p>
<script>
let test1 = document.getElementById("test1");
console.log(test1.classList); // DOMTokenList(2) ["abc", "qwe", value: "abc qwe"]
console.log(test1.classList[0]); // abc
console.log(test1.classList[1]); // qwe
</script>
</body>

  classList相关方法:

      element.classList.add(className)         添加一个指定名字的class值

      element.classList.remove(className)        删除一个指定名字的class值

      element.classList.contains(className)       判断一个指定名字的class值

      element.classList.toggle(className)          切换一个指定名字的class值,有则删除,无则添加

操作样式

  所有的样式都是字符串。

一、行内样式

  单个样式:

    element.style.styleName;

    例子:divEle.style.width=‘200px’;
          element.style.[styleName];
    例子:divEle.style[‘width‘]=‘200px’;

注意:样式名称中的‘-’去掉,换成驼峰命名。

   学习html,css时要求少用行内样式,就是为了留给js用的,所以,js中操作css,多数情况下是使用该方式。

  多个样式:

    element.style.cssText    直接获取(/修改)行内样式的整个字符串值

    例子: box.style.cssText = "height: 100px; background-color: red;";

注:基本都适用此种方式。

二、样式表样式

    样式表(包括内联和外联):

      document.styleSheets[0].rules[0].style.backgroundColor = "blue";

        styleSheets:样式表数组(一个style标签为一个样式表);
        rules:所有规则数组(一个“{}”为一条规则);
        所以含义是:第0个样式表中第0条规则中的backgroundColor修改为“blue”。

注:基本不用这种方式。

三、最终样式

    由于兼容性问题,最终样式有两种写法:

      低版本ie中,用属性currentStyle:
         element.currentStyle.styleName ;

      火狐和chrome中(现代浏览器),用方法getComputedStyle:
         getComputedStyle (Element) .styleName ;

注意:根据需要会使用,但最终样式都是计算出来的样式,为只读的,不可修改。

    兼容性封装:

function getStyle(obj, name) {
if (obj.currentStyle) {//ie浏览器使用currentStyle[name]
return obj.currentStyle[name];
} else {//火狐和chrome浏览器使用getComputedStyle(obj,false)[name]
return getComputedStyle(obj, false)[name];
}
}

补充:获取元素节点的尺寸和位置

  尺寸:

      ELement.clientWidth
      ELement.clientHeight  内容 + 内边距(填充盒)
      ELement.offsetWidth
      ELement.offsetHeight  内容 + 内边距 + 边框(边框盒)

  位置:

      ELement.offsetLeft
      ELement.offsetTop    边框盒的位置,位置以第一个定位的父级元素为基准

原文地址:https://www.cnblogs.com/jiayouba/p/11925617.html

时间: 2024-10-13 06:11:40

JS DOM基础 操作属性、类、CSS样式的相关文章

jQuery获取和操作元素的属性和CSS样式

本文学习如何使用jQuery获取和操作元素的属性和CSS样式. 元素属性和Dom属性 对于下面这样一个标签元素: <img id='img' src="1.jpg" alt='1' class="imgs"></img>  我们通常将id,src,alt,class称为属性,也即元素属性.但是,当浏览器对标签元素进行解析时,会将元素解析为Dom对象,相应的,元素属性也就解析为Dom属性. 元素属性和Dom属性只是在我们对其进行不同解析时的不同

jQuery(六) jQuery修改class属性和CSS样式

jQuery修改class属性和CSS样式 class属性修改 类属性即class属性,规定类名. 用类选择器规定样式的时候,需要为元素指定类名,即class属性的值. 注意每个HTML元素只有一个class属性.但是class属性的值可以是多个名称,即可能包含一个词的列表,中间用空格分隔. 具体使用方法见:http://www.w3school.com.cn/css/css_selector_class.asp 用jQuery进行类名修改既可以用attr()方法修改”class”属性,也可以用

jQuery修改class属性和CSS样式

原文:jQuery修改class属性和CSS样式 jQuery修改class属性和CSS样式 class属性修改 类属性即class属性,规定类名. 用类选择器规定样式的时候,需要为元素指定类名,即class属性的值. 注意每个HTML元素只有一个class属性.但是class属性的值可以是多个名称,即可能包含一个词的列表,中间用空格分隔. 具体使用方法见:http://www.w3school.com.cn/css/css_selector_class.asp 用jQuery进行类名修改既可以

JavaScript操作表格及CSS样式

概述 在前端开发中,表格主要用于存储结构化的数据,CSS主要用于修饰DOM元素,如何通过DOM来操作表格及CSS呢?本文主要通过一些简单的小例子,简述DOM对表格和CSS的常见操作方法,仅供学习分享使用,如有不足之处,还请指正. 获取表格及数据 假如当前有一个表格,id为tb01,如下所示: 1 <table id="tb01" width="300" border="1" cellspacing="2" cellpad

进击的Python【第十三章】:Web前端基础之HTML与CSS样式

进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n")

js用currentStyle和getComputedStyle获取css样式(非行间)

用js的style属性可以获得html标签的样式,但是不能获取非行间样式.那么怎么用js获取css的非行间样式呢?在IE下可以用currentStyle,而在火狐下面我们需要用到getComputedStyle.下面是一个小示例: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/ht

3)js的基础语法使用以及css定位

Css 定位: background-position: 20px 40px; (1)相对定位: 如果仅仅对当前盒子设置相对定位,那么他与原来的盒子没有任何变化 只有一个作用:  父相子绝,不适用相对定位来做压盖现象 不脱标.形影分离.老家留坑 (2)绝对定位: 设置绝对定位的盒子,脱离标准流 (3)固定定位 1):相对定位: <!DOCTYPE html><html lang="en"><head>    <meta charset=&quo

javascript操作元素的css样式

我们经常要使用Javascript来改变页面元素的样式.当中一种办法是改变页面元素的CSS类(Class),这在传统的Javascript里,我们一般是通过处理HTML Dom的classname特性来实现的:而jQuery里提供三种方法来实现这个功能,尽管它们和传统方法的思想相通,可是却节省了很多代码.还是那句话 - "jQuery让JavaScript代码变得简洁!" 1. addClass() - 加入?CSS类 $("#target").addClass(&

ntv.js框架(第三章) - 机顶盒CSS样式的编写

机顶盒支持基础的CSS样式属性,例如:margin, padding, float, position等,各厂商对于基础样式属性的渲染差异性也不大.但在CSS3和动画效果支持上各厂商偏差较大,由于机顶盒属弱终端类型(硬件资源弱),内置支持的动画功能有限,而且也不是运营商目前强制要求支持的功能. 同样就目前网内的应用设计要求上来讲,使用到CSS3及动画的应用非常少,大多停留在实验室演示阶段.