手写的一个兼容各种浏览器的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日

相关文章

  • CSS3 translate导致字体模糊的实例代码

    下面是对“CSS3 translate导致字体模糊的实例代码”的完整攻略。 问题描述 在使用CSS3 translate动画的时候,我们有时会遇到字体模糊的问题。这是因为translate会改变元素的位置,而这个位置可能不是整数像素值,造成浏览器对字体渲染时模糊的现象。那么该如何解决这个问题呢? 解决方法 方法一:使用will-change属性 在CSS3中…

    css 2023年6月9日
    00
  • iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程

    下面是针对“iOS 9 更新之Safari广告拦截器(Content Blocker)开发教程”的完整攻略。 简介 iOS 9 更新后,Safari引入了 Content Blocker API。Content Blocker 可以用于拦截 Safari 加载的网页中的广告、图片以及其他的资源,以达到优化网站加载速度、降低流量消耗和提升用户体验的效果。本教程…

    css 2023年6月10日
    00
  • 一样的table?不一样的table(可编辑状态table)

    一、一样的table? 在网页设计中,我们常常需要展示大量的数据,而传统的数据展示方式往往是使用表格。表格可以让数据更加井然有序地呈现出来,更容易阅读和理解。但在实际设计过程中,我们往往需要对表格进行一些定制化的设计,比如调整表头样式、改变单元格背景色等等,这就要求我们能够将表格进行灵活的排版和格式化。 对于简单的表格,我们可以通过 HTML 标签和 CSS…

    css 2023年6月10日
    00
  • cf荣耀6年惊天大礼活动网址_cf荣耀6年惊天大礼有哪些福利

    CF荣耀6年惊天大礼活动 活动网址 活动网址为 https://cf.qq.com/webplat/info/news_version3/8049/28746/28747/28751/m22053/202105/929874.shtml 活动时间 2021年5月26日至2021年7月7日 活动内容 登录礼包:每日登录游戏,即可领取丰厚奖励 新人大礼包:新注册…

    css 2023年6月10日
    00
  • div+css div+css divcss布局入门教程 迅雷下载

    首先,需要明确一下什么是“div+css布局”?简单来说,就是利用div标签和css样式来实现网页布局的方式。div标签是用来划分网页内容的矩形区域,而css样式则是用来控制这些区域的显示方式和样式。 以下是“div+css div+css divcss布局入门教程”详细攻略: 1. 熟悉div标签 div标签是用来划分网页内容的矩形区域,我们可以使用 标签…

    css 2023年6月9日
    00
  • 详解css外边距折叠(margin collapsing)

    详解CSS外边距折叠 什么是外边距折叠? 在 CSS 中,相邻的两个块级元素垂直方向的外边距会发生重叠,这种行为叫做外边距折叠。当发生外边距折叠时,相邻两个元素之间将会只有一个外边距,而不是两个外边距之和。 外边距折叠只会发生在块级元素上,行内元素没有外边距,不会发生外边距折叠。 哪些情况会发生外边距折叠? 相邻兄弟元素之间的外边距会发生折叠。 父元素和第一…

    css 2023年6月9日
    00
  • Bootstrap企业网站实战项目4

    Bootstrap企业网站实战项目4是一项基于Bootstrap框架的网站建设项目,适合于企业网站的建设或者其他类似场景的实际应用。其完整攻略包含以下几个步骤: 步骤1:准备 下载并安装Bootstrap框架; 创建一个新项目,并在项目中引入Bootstrap的资源文件,包括样式表、JavaScript文件和字体图标等; 在项目中创建所需的HTML和CSS文…

    css 2023年6月10日
    00
  • css中text-overflow属性与文本截断详解

    CSS中的text-overflow属性可以用来控制文本溢出时的表现形式,常见的表现形式包括省略号(…)和忽略。 text-overflow的使用方法 text-overflow属性的使用方法如下: text-overflow: clip|ellipsis|required|string|initial|inherit; 常用的属性值包括: clip:默…

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