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

相关文章

  • 利用SVG和CSS3来实现一个炫酷的边框动画

    利用SVG和CSS3来实现一个炫酷的边框动画的完整攻略如下: 1. 创建SVG路径 首先需要创建一个SVG路径作为边框动画的路径。可以使用Adobe Illustrator等矢量图形软件或者在线SVG绘制工具创建一个SVG路径,并且把该SVG路径保存成一个单独的SVG文件。在本例中,我们使用了以下的代码来创建一个SVG路径: <svg width=&q…

    css 2023年6月10日
    00
  • 老生常谈css中float的用法

    下面是一个详细讲解“老生常谈css中float的用法”的攻略。 什么是float float 是 CSS 属性,它可以让元素“浮动”到其容器的左侧或右侧。当一个元素设置了 float 属性后,它就会向左或向右移动,直到碰到父容器或另一个浮动元素的边缘为止。 float 的具体用法 float 一般用于实现元素的排列效果,比如实现多栏、悬浮菜单、悬浮图片等。 …

    css 2023年6月10日
    00
  • Jquery轮播效果实现过程解析

    下面我将详细讲解“Jquery轮播效果实现过程解析”的完整攻略: 一、前言 目前,广泛使用的Jquery轮播插件有如下几种: swiper slick bootstrap-carousel bxslider owlcarousel 虽然这些Jquery插件都能实现轮播效果,但是我们本篇文章将以swiper插件作为例子,详细的讲解Jquery轮播的实现过程。 …

    css 2023年6月10日
    00
  • CSS样式权重的级联cascade的概念深入理解

    CSS样式权重的级联(cascade)是指在样式表中,如果多个样式选择器作用于同一个元素,那么针对同一属性的设定会根据一定的规则进行优先级排序,称为样式权重。CSS样式权重的级联机制在网页制作中有着至关重要的作用,了解其机制可以让我们更好地掌握CSS的应用。 CSS样式权重的级联机制是由四个级别权重值组成的: 内联样式:直接写在HTML元素中的样式,权重值为…

    css 2023年6月9日
    00
  • 给超级链接增加其他样式

    为超级链接增加其他样式一般有两个方式:使用CSS样式表进行样式设置和行内样式设置。 使用CSS样式表进行样式设置 首先,需要在HTML文档的标签中添加样式表链接,例如: <head> <link rel="stylesheet" type="text/css" href="style.css…

    css 2023年6月10日
    00
  • CSS样式分离之再分离达到精简与重用

    即使现代浏览器几乎可以处理任意大小的CSS,仍然有许多好处将CSS与HTML代码分离。首先,这使得HTML代码具有更高的可读性,使其更易于阅读和理解。其次,它允许您在需要的时候更轻松地重用CSS代码,并且可以使您的代码更易于维护。 以下是“CSS样式分离之再分离达到精简与重用”的完整攻略: 步骤1:将CSS从HTML中分离出来 将CSS分离出HTML代码的最…

    css 2023年6月10日
    00
  • JS弹出层的显示与隐藏示例代码

    JS弹出层是Web开发中非常常见的一个功能。下面,我们来详细讲解如何实现JS弹出层的显示与隐藏。 1. HTML结构 首先,我们需要进行HTML结构的搭建。以下是一个最基础的HTML结构: <!–触发弹出层的按钮–> <button id="showBtn">显示弹出层</button> <!…

    css 2023年6月11日
    00
  • css关于position属性的用法详解(绝对定位和相对定位的混淆)

    CSS关于position属性的用法详解(绝对定位和相对定位的混淆) position属性的概述 position属性定义了元素的定位方式,其可选值有四种:static,relative,absolute和fixed。 static表示元素的默认定位方式,即元素在文档流中按照其自身的顺序排列 relative表示按照元素自身的偏移量来确定元素在文档流中的位置…

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