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

以下是手写兼容各种浏览器获取元素样式的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日

相关文章

  • 解决Vue项目中tff报错的问题

    针对“解决Vue项目中tff报错的问题”,我为大家整理了以下攻略: 1. 了解tff报错的原因 首先,我们需要知道为什么会出现tff报错。tff是vue-cli3推出的一个安全管理工具,主要作用是防止XSS攻击等安全问题。它通过设置Content-Security-Policy头来限制外部脚本和样式的加载,在保证网站安全性的同时也会导致一些问题的出现。 2.…

    css 2023年6月9日
    00
  • css样式无效是怎么回事?有哪些常见原因?

    在Web开发中,CSS样式无效是一个常见的问题。本攻略将介绍CSS样式无效的常见原因,并提供两个示例说明。 常见原因 以下是CSS样式无效的常见原因: 选择器错误:选择器可能不正确,无法匹配所需的元素。例如,选择器可能拼写错误、缺少空格或使用了错误的伪类。 样式优先级:样式优先级可能不正确,导致样式被覆盖。例如,样式可能被其他样式表或内联样式覆盖。 样式属性…

    css 2023年5月18日
    00
  • IE6下position fixed失效的解决方法(亲测有效)

    下面我将对“IE6下position fixed失效的解决方法(亲测有效)”进行详细的讲解。 问题描述 许多Web开发人员都遇到过IE6下position fixed无效的问题,这是因为IE6不支持CSS中的position:fixed属性。因此在IE6中,无法将元素固定在视口的位置,而是按照文档流的顺序排列。 解决方法 为了解决这个问题,我们可以使用Jav…

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

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

    css 2023年6月13日
    00
  • HTML5不支持标签和新增标签详解

    HTML5是一种用来定义Web内容的标准。HTML5的新增标签主要分为两类:语义化标签和媒体标签。 HTML5不支持的标签 1. 纯表现的标签 HTML5不再支持一些纯表现的标签,如font、center、hr等。这些标签没有明确的语义,以前用来进行排版和美化页面,现在建议使用CSS来实现。 2. 实用但经常被滥用的标签 还有一些实用但经常被滥用的标签,如b…

    css 2023年6月10日
    00
  • css 设置全屏背景图片

    要在CSS中设置全屏背景图片,可以遵循以下4个步骤: 1.将背景图片设置为CSS属性background-image的值。 2.将背景大小设置为cover,这样它将覆盖整个屏幕。 3.将背景位置设置为中心以保证图片在屏幕中间,即设置background-position属性值为center。 4.确保HTML和Body元素的高度被设置为100%。 下面是具体…

    css 2023年6月9日
    00
  • JS 仿支付宝input文本输入框放大组件的实例

    下面来介绍一下“JS 仿支付宝input文本输入框放大组件的实例”的完整攻略。 攻略详情 一、需求分析 首先,我们需要理解本次仿写的是支付宝APP中的输入框放大组件。我们所需实现的功能是:在输入框获得焦点的时候,放大输入框,同时显示清除和粘贴功能。还需要支持在输入框失去焦点时,恢复原样,支持高度自适应,支持自定义组件。 二、具体思路 针对上述需求,我们可以分…

    css 2023年6月10日
    00
  • CSS first-letter实现首字下沉

    以下是关于CSS :first-letter 选择器实现首字下沉的攻略: 简介 首字下沉,也称作首行缩进,是指文章或段落第一行文字向内缩进一定的距离。通过CSS :first-letter 伪类选择器,我们可以对文本的第一个字符进行特别的样式设计,其中包括下沉、加粗、字体等等。 步骤 通过以下步骤,我们可以实现一个简单的首字下沉样式: 首先,我们需要创建一个…

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