资讯专栏INFORMATION COLUMN

常用JavaScript操作CSS方法总结

enali / 1402人阅读

摘要:返回值一个对象集合,包含六个属性上下左右宽高注意只用于行内元素只能获取样式只读获取元素位置获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。返回一个类数组对象,其包含样式表中所有规则。

[TOC]

获取样式 元素对象的宽高位置距离等属性

如offsetWidht、cilentWidht、scrollWidth……

let oWidth=obj.offsetWidth;

注意:

只能获取属性值(只读

(这些宽高距离的)值是数字

style对象的属性

获取所有样式(样式的内容,字符串形式)cssText 和获取单项样式:

let oStyle=obj.style.cssText;
let oWidth=obj.style.width;

注意:

需要用属性名cssFloat代替float(float是JavaScript保留关键字)

取得的属性值带有单位(如果有单位)

只能获取行内样式(html标签中的样式)

可以获取和设置(可读可写

window对象的getComputedStyle() 方法

获取当前元素所有最终使用的CSS属性值,该方法属于window对象。 ie8-使用 getCurrentStyle元素对象的方法

接收两个参数:元素对象和要匹配的伪元素的字符串(普通元素省略或null)

返回一个对象,可用使用该返回对象的属性和方法获取样式:

通过属性名获取相应属性值

let oColor=window.getComputedStyle(obj, null).color;

getPropertyCSSValue()方法获取CSSValue对象的属性

接收一个参数:属性名(带引号,原带-的CSS属性要转换成驼峰法书写)

返回一个给定属性值的CSSValue对象,该对象有3个属性:primitiveType、cssText和cssValueType,

let oStyle=window.getComputedStyle(obj,null).getPropertyCSSValue("color").cssText;

getPropertyValue()方法

可以获取CSS样式申明对象上的属性值(直接属性名称)
接收一个参数:属性名(带引号,原带-的CSS属性要转换成驼峰法书写)

let oBgc=window.getComputedStyle(obj, null).getPropertyValue("background-color");

注意:

全局对象的方法

只能获取样式(只读

能获取默认、继承的属性

返回的值带有单位(如果有)

获取最终样式值

元素对象的getClientRects()/getBoundingClientRect()方法

元素对象的方法。

getClientRects() 获取元素矩形区域样式

获取元素占据页面的所有矩形区域样式。返回值一个TextRectangle对象集合,包含:top left bottom right width height 六个属性(上下左右宽高)

注意:

只用于行内元素

只能获取样式(只读

let rectCollection = obj.getClientRects();

getBoundingClientRect()获取元素位置

获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。

返回值一个对象,具有6个属性:top,lef,right,bottom,width,height。

注意:

获取的位置是元素相对于的视口的位置

right是指元素右边界距窗口最左边的距离,bottom是指元素下边界距窗口最上面的距离

只能获取样式(只读

let eleInfo= obj.getBoundingClientRect();
CSS StyleSheets对象的属性和方法

document.styleSheets返回StyleSheetList是一个类数组对象,包含了当前文档的所有css样式表。

cssRules 返回一个类数组对象cssRuleList,其包含样式表中所有CSS规则。

cssRules数组对象内元素的常用属性(属性均为只读,属性值均是字符串):

cssText 返回css样式

style.cssText 返回该条规则的所有样式声明

style.[attr] 返回具体某个属性的样式

selectorText 返回该条规则的选择器

parentRule 返回包含规则(如果有)(例如 @media 块中的样式规则)

document.styleSheets; //当前文档所有css样式表的类数组对象
document.styleSheets.lenth; //当前文档有多少样式表
document.styleSheets[0]; //当前文档第0个样式表的类数组对象
document.styleSheets[0].cssRules[0]; //当前文档第0个样式表的第0条样式

document.styleSheets[0].cssRules.length; //当前样式表有多少条样式
document.styleSheets[0].cssRules[0].cssText; //第0条样式的内容
document.styleSheets[0].cssRules[0].style.width; //第0条样式中的宽
document.styleSheets[0].cssRules[0].selectorText; //第0条样式选择器
设置样式 直接设置元素的属性

某些元素对象如img可以直接设置css样式

obj.width="100%";
setAttribute()/removeAttribute()设置元素的style属性
obj.setAttribute("style","widht:100px!important");
obj.removeAttribute("style");
obj.setAttribute("width","100%");  //某些元素适用(即“直接设置元素的属性”的情况)
style对象的属性和方法

根据属性设置单一样式

obj.style.height = "100px";
obj.style.borderBottom="2px";
obj.cssFloat="left";

注意:

需要用属性名cssFloat代替float(float是JavaScript保留关键字)

带上单位(如果需要)

带有连字符-的CSS属性在JavaScript中,应该转换成驼峰形式或将属性名(带引号)写在中括号[]中

cssText设置样式字符串

可设置多个样式

obj.style.cssText="color:gray;font-size:1.25rem;"
setProperty()/removeProperty
obj.style.setProperty("height", "300px", "important");
obj.style.removeProperty("color");
操作class/id改变样式

给元素对象增/改/删className或者idName。相应的class/id设置有相关样式。

元素对象的setAttribute()/removeAttribute()设置class/id
obj.setAttribute("class",newClassName);
obj.removeAttribute("class",newClassName) ;
设置元素对象的className/id属性
obj.className=newClassName;
obj.id=newIdName;

​ 注意:元素对象没有class(class是JavaScript保留关键字)这个属性,只有className这个属性。

属性对象attributes的set/removeNamedItem()设置属性名
let attrName=document.createAttribute("class");
let attrName.nodeValue=className;//一个已经存在的class
obj.attributes.setNamedItem(attrName);
obj.attributes.removeNamedItem(attrName);
操作link标签/节点

link节点增/删/改

示例(添加样式表):

let linkNew=document.creatElement("link");
linkNew=setAttribute("rel","stylesheet");
linkNew=setAttribute("hreft","new.css");
document.head.appendChild(link);

innerHTML

更改link的href
……

操作style标签/节点

innerHTML或textContent 写入/清空style标签

style节点增/删/改(参照上文操作link标签/节点link节点增/删/改示例)……

CSS StyleSheets对象的属性和方法

StyleSheets是一个类数组对象,包含了当前文档的所有css样式表。

disable 属性:打开或关闭一张样式表。

document.styleSheets[0].disabled;

delteRule()/insertRule()

ie使用addRule()和removeRule()。

document.styleSheets[0].deleteRule(0);
document.styleSheets[0].insertRule(".test{color:red;font-size:1.5em;}");
innerHTML(textContent)

innerHTML写入样式表

document.getElementByTagName("head")[0].innerHTML+= 

innerHTML或textContent增/删style标签 更改style标签的内容
参照上面

innerHTML(新建元素节点)中写入行内样式/id/class

示例:obj.innerHTML=red
……

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90352.html

相关文章

  • 前端文档收集

    摘要:系列种优化页面加载速度的方法随笔分类中个最重要的技术点常用整理网页性能管理详解离线缓存简介系列编写高性能有趣的原生数组函数数据访问性能优化方案实现的大排序算法一怪对象常用方法函数收集数组的操作面向对象和原型继承中关键词的优雅解释浅谈系列 H5系列 10种优化页面加载速度的方法 随笔分类 - HTML5 HTML5中40个最重要的技术点 常用meta整理 网页性能管理详解 HTML5 ...

    muddyway 评论0 收藏0
  • 前端文档收集

    摘要:系列种优化页面加载速度的方法随笔分类中个最重要的技术点常用整理网页性能管理详解离线缓存简介系列编写高性能有趣的原生数组函数数据访问性能优化方案实现的大排序算法一怪对象常用方法函数收集数组的操作面向对象和原型继承中关键词的优雅解释浅谈系列 H5系列 10种优化页面加载速度的方法 随笔分类 - HTML5 HTML5中40个最重要的技术点 常用meta整理 网页性能管理详解 HTML5 ...

    jsbintask 评论0 收藏0
  • 个人分享--web前端学习资源分享

    摘要:前言月份开始出没社区,现在差不多月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了一般来说,差不多到了转正的时候,会进行总结或者分享会议那么今天我就把看过的一些学习资源主要是博客,博文推荐分享给大家。 1.前言 6月份开始出没社区,现在差不多9月了,按照工作的说法,就是差不多过了三个月的试用期,准备转正了!一般来说,差不多到了转正的时候,会进行总结或者分享会议!那么今天我就...

    sherlock221 评论0 收藏0

发表评论

0条评论

enali

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<