手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)

yizhihongxing

以下是手写兼容各种浏览器获取元素样式的JavaScript getStyle 函数的攻略,希望对您有用。

1. 函数定义

首先需要定义函数名称和参数,如下:

function getStyle(obj,attr){
  //函数体
}

其中 obj 是需要获取样式的元素节点对象;attr 是需要获取的样式属性名称。

2. 获取样式

由于在IE浏览器中,obj.style.attr 的方式只能获取通过行内样式设置的属性值,因此需根据浏览器的不同,采用不同的方式来获取元素的样式。

2.1. 在标准浏览器下的样式获取

在标准浏览器下,我们可以直接使用标准方法 getComputedStyle 来获取元素的样式值,如下:

if(window.getComputedStyle){
  return window.getComputedStyle(obj,null)[attr];
}

window.getComputedStyle 是用来获得样式的接口,有两个参数:要获取样式的元素以及一个伪元素。

2.2. 在旧版IE浏览器下的样式获取

在旧版IE浏览器中,我们可以使用元素的 currentStyle 属性来获取元素的样式,如下:

if(obj.currentStyle){
  return obj.currentStyle[attr];
}

obj.currentStyle 是用来获取元素计算样式的一个属性,与 getComputedStyle 相似,对应的样式名称可以使用驼峰式或中划线式。

3. 完整代码

综上,我们可以得出完整的 getStyle 函数代码如下:

function getStyle(obj, attr) {
  if (window.getComputedStyle) { // 标准浏览器下的样式获取
    return window.getComputedStyle(obj, null)[attr];
  } else if (obj.currentStyle) { // 旧版IE浏览器下的样式获取
    return obj.currentStyle[attr];
  }
}

4. 示例

下面提供两个示例,展示如何使用 getStyle 函数来获取元素的样式。

4.1. 获取元素宽度和高度

获取元素的宽度和高度可以使用 offsetWidthoffsetHeight 属性,这两个属性会加上元素的内边距和边框宽度,但不包括外边距和滚动条宽度。

var ele = document.querySelector(".box");
var width = parseInt(getStyle(ele, "width"));
var height = parseInt(getStyle(ele, "height"));
console.log("width:", width, "height:", height);

4.2. 获取元素内边距和边框宽度

获取元素的内边距和边框宽度可以使用 paddingborder 系列属性,这些属性都受到不同浏览器的解析差异的影响。

var ele = document.querySelector(".box");
var paddingTop = parseInt(getStyle(ele, "paddingTop"));
var borderLeftWidth = parseInt(getStyle(ele, "borderLeftWidth"));
console.log("paddingTop:", paddingTop, "borderLeftWidth:", borderLeftWidth);

以上两个示例代码可以在控制台上执行并查看正确的输出结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 20点提高网站访问速度缩短网页加载时间!

    20点提高网站访问速度缩短网页加载时间攻略 为了提升用户体验、降低用户等待时间、提高搜索引擎排名等等,加速网站访问速度是至关重要的一个环节,特别是随着移动设备逐渐普及,用户对访问速度的要求愈发严苛。在这里,我们分享一些提高网站访问速度的通用建议,目标是缩短网页加载时间。请注意,不同站点存在差异,具体操作方式可能因网站的主要内容、主要受众,运营方式等不同而异。…

    css 2023年6月9日
    00
  • BOM操作querySelector querySeletorAll获取标签对象

    下面是“BOM操作querySelector querySeletorAll获取标签对象”的完整攻略: 什么是BOM BOM(Browser Object Model)是浏览器对象模型,主要针对浏览器窗口和框架(frameset)进行编程。BOM由许多对象组成,包括Window、Navigator、Screen、History、Location、Docume…

    css 2023年6月10日
    00
  • Bootstrap优化站点资源、响应式图片、传送带使用详解3

    下面是关于“Bootstrap优化站点资源、响应式图片、传送带使用详解”的完整攻略。 1. 优化站点资源 优化站点资源可以让我们的网站加载速度更快,用户体验更佳。Bootstrap提供了一些方法优化站点资源: 1.1 使用CDN 使用CDN(内容分发网络)可以加速网站加载速度。Bootstrap也提供了CDN以便我们使用。在网页的<head>标签…

    css 2023年6月13日
    00
  • 在可编辑div中插入文字或图片解决思路与实现步骤

    让我来详细讲解一下“在可编辑div中插入文字或图片解决思路与实现步骤”的完整攻略。 解决思路 在一个可编辑的div中插入文字或图片,需要通过 JavaScript 来实现。具体的思路如下: 获取可编辑div的 DOM 对象,通过 document.getElementById() 或 document.querySelector() 方法来获取。 在可编辑d…

    css 2023年6月10日
    00
  • HTML 编辑器 FCKeditor使用详解

    HTML 编辑器 FCKeditor 使用详解 什么是 FCKeditor FCKeditor是一个基于浏览器的所见即所得(WYSIWYG)富文本编辑器,可以用于创建和编辑HTML内容。它支持众多浏览器,如Firefox、Internet Explorer、Google Chrome等。 FCKeditor 的安装及配置 1. 下载 FCKeditor 在F…

    css 2023年6月10日
    00
  • 利用css样式实现表格中字体垂直居中的方法

    下面是利用CSS样式实现表格中字体垂直居中的方法的完整攻略。 方法一:使用 table-cell 和 vertical-align 属性 首先,我们需要将表格单元格的样式设为 “display: table-cell”,这样单元格的内容就可以像块级元素一样垂直居中。 然后,在单元格中添加 “vertical-align: middle”,以使文本内容垂直居中…

    css 2023年6月9日
    00
  • css值转换成数值请抛弃parseInt

    下面我来详细讲解将 CSS 值转换成数值且抛弃 parseInt 函数的攻略。 1. 什么是 CSS 值? CSS 值指的是使用 CSS 定义的一组值,比如长度值、百分比、颜色值等。它们在 CSS 中被广泛应用,比如用于定位元素、调整字体大小等。 2. 为什么要将 CSS 值转换成数值? 在一些场景下,需要将 CSS 值转换成数值进行计算或比较。比如我们想要…

    css 2023年6月10日
    00
  • css3让div随鼠标移动而抖动起来

    下面是“CSS3让div随鼠标移动而抖动起来”的攻略: 1. 使用CSS3动画实现div随鼠标移动而抖动 CSS3动画是实现抖动效果的一种常用方式。具体的实现步骤如下: 1.1 定义样式和HTML结构 首先,我们需要定义一个style标签,用来存放CSS样式。在样式中,我们需要定义一个用来显示抖动效果的div元素,可以设置它的宽度、高度、边框、背景色等基本样…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部