javascript操作内联样式和获取元素当前样式以及兼容性问题

5 篇文章 0 订阅

在使用dom操作内联样式和当前样式时,需要注意的问题很多
特别是浏览器的兼容性问题

首先是操作内联样式‘先来看看简单的例子代码

    <script type="text/javascript">
        window.onload=function(){
            //点击按钮修改box1大小

            //获取box1
            var box1 = document.getElementById("box1");
            
            var btn1 = document.getElementById("btn1");
            btn1.onclick=function(){
        //在这之中通过语法:元素.style.样式名=样式值;来修改内联样式
                box1.style.width="250px";
                alert(box1.style.width);
            }

            //读取样式
            var btn2=document.getElementById("btn2");
            btn2.onclick=function(){
        //通过语法:元素.style.样式名;来读取内联样式
            }
        }
    </script>

这是一个通过点击按钮修改元素属性的代码,浅显易懂
但要注意类似于background-color之类的属性要使用驼峰书写
即backgroundColor

样式中也尽量不要出现!important,优先级过高会导致js代码无法读取内联样式。

第二个就是获取当前样式啦,这个细节比较多
先上代码:

    <script type="text/javascript">
        window.onload=function(){
            var box1 = document.getElementById("box1");
            
            var btn1 = document.getElementById("btn1");
            btn1.onclick=function(){
        //在这之中通过语法:元素.currentStyle.样式名=样式值;来查看当前显示的样式,只兼容ie
               
                //alert(box1.currentStyle.width);

            //兼容其他浏览器,则使用getComputedStyle()
            //两个参数,一个是元素,一个是null
            alert(getComputedStyle(box1,null).width);
            }
      </script>

这里就出现了两个方式:
1.currentStyle属性(只兼容ie)555,ie终于争气了一回
语法在代码注释中也很清楚

2.getComputedStyle( )方法,兼容其他浏览器
这个方法的返回值是一个对象,封装了当前元素的对应样式
语法在代码注释里有

但是,如果想要任何浏览器都兼容的话,那怎么办呢?
这个时候就需要我们自己来写一个函数
废话不多说,上代码

    <script type="text/javascript">
           //兼容所有浏览器,自己写一个函数
            //参数:obj 需要获取的样式元素  name 需要获取的样式名
            function getStyle(obj,name){
                if(window.getComputedStyle){
                    //必须用window.,因为后面那个属性是变量,全局作用域和局部作用域中都没有定义
                    return getComputedStyle(obj,null)[name];
                }else{
                    return obj.currentStyle[name];
                }
                    </script>

这个就是能兼容所有浏览器的方法啦,
有一些细节展示在了代码注释里
比如window.getComputedStyle前面必须要有window,否则会报错,因为浏览器引擎是从函数内搜到外,直到全局作用域,而这个getComputedStyle是一个变量,在全局作用域中没有定义。

另外值得一提的是,通过currentStyle和getComputedStyle()获取的属性都是只读不修改的哦。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
HTML元素可以分为内联元素和块级元素内联元素(inline)是指不独占一行的元素,它们在同一行内显示,并且只占据自身所包含内容的宽度空间。 常见的内联元素有`<span>、<a>、<strong>、、<img>、<input>`等。<em>内联元素可以添加`width`、`height`、`padding`和`margin`等属性,但是对宽度、高度等属性的设置不会生效。 块级元素(block)是指独占一行的元素,每个块级元素都会自动另起一行,它们会尽可能地占据父元素的整个宽度空间。 常见的块级元素有`<div>、<p>、<h1>~<h6>、<ul>、<li>、<ol>、<table>`等。块级元素可以通过设置`width`、`height`、`padding`和`margin`等属性,来调整它们的宽度和高度以及外观样式内联元素和块级元素的主要区别如下: 1. 显示方式:内联元素在同一行内显示,而块级元素会独占一行。 2. 占据空间:内联元素只占据自身所包含内容的宽度空间,而块级元素会尽可能地占据父元素的整个宽度空间。 3. 对宽高属性的设置:内联元素对于`width`、`height`等属性的设置不会生效,而块级元素可以设置这些属性来调整宽度和高度。 4. 是否可以容纳其他元素内联元素不能直接容纳块级元素,只能容纳其他内联元素或者文本内容,而块级元素可以容纳任何类型的元素。 在实际应用中,正确使用内联元素和块级元素可以更好地控制页面的布局和样式,使页面结构更合理、代码更精简。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值