JS-part8.1-操作元素样式

JavaScript

操作元素样式

操作元素样式:
	      + 分成两个大类
	        1. 行内样式
	        2. 非行内样式
  
1. 获取行内样式
  + style 的方式
    => 利用原生属性的方式
    => 元素.style
    => 获取到的内容是一个对象,里面包含元素所有的可设置样式
    => 如果你想获取哪个样式的值,就从对象里面获取即可
    => 但是 **只能获取到行内样式**
<style>
    div{
        height: 100px;
        background-color: pink;
    }
</style>

<body>
    <div style="width: 100px;"></div>
<script>
    // 获取元素
    var div = document.querySelector('div')

    // 1. style 方式获取样式
    console.log(div.style)
    // 访问 div 元素的原生属性 style 里面的 width 值
    console.log(div.style.width)   // 100px
    
    // 访问 div 元素的原生属性 style 里面的 height 值
    // 但是 div 的 style 属性里没有 height 这个值
    console.log(div.style.height)   // 空字符串
</script>
</body>
2. 获取非行内样式
  2-1. window.getComputedStyle()
    => 标准浏览器
    => 语法:window.getComputedStyle('要获取的元素')
    => 返回值:一个对象,里面包含所有可设置样式,每个样式都有值,没有设置的有默认值
    => 你需要哪个样式,直接找个对象里面访问就行了
  2-2. currentStyle 属性
    => IE 低版本
    => 语法:要获取样式的元素.currentStyle
    => 得到的就是一个对象,里面包含元素所有可设置样式,每个样式都有值
    => 你需要哪一个样式,直接在对象里面查找就可

说明:
  + 当你获取样式的时候
  + 如果你使用 点语法
    -> 你获取带有中划线的样式要转化成驼峰的方式
  + 如果你使用 数组关联语法
    -> 你可以写中划线
// 获取非行内样式
// 标准浏览器
var style = window.getComputedStyle(div)
console.log(style.height)  // 200px
console.log(style.backgroundColor)   // 点语法要写成驼峰   rgb(255, 192, 203)
console.log(style['background-color'])   // 数组关联语法

// IE 低版本
var style = div.currentStyle
console.log(style.height)
console.log(style.backgroundColor)   // pink 
console.log(style['background-color'])  // pink

注: currentStyle只用于在IE下获取元素的样式属性,并不会兼容火狐和谷歌或者非IE内核的浏览器

/*
  自己封装一个方法去兼容

  1. 准备一个函数,接收几个参数
    => 要获取样式的元素
    => 要获取什么样式
  2. 函数内部处理兼容
    => 为什么会报错?
    => window.getComputedStyle()
      -> 在 IE 报错,对象不支持 getComputedStyle 属性或方法
    => 判断一下 getComputedStyle 是不是在 window 里面
*/

function getStyle(ele, style){
    // 判断 window 里面有没有 getComputedStyle()方法
    if('getComputedStyle' in window){
        // 标准浏览器 
        return window.getComputedStyle(ele)[style]
    }else{
        // IE 低版本
        return ele.currentStyle[style]
    }
}
var res = getStyle(div, 'width')
console.log(res)
设置元素的样式
 + 只有一种方式:
   => 设置元素的行内样式
   => 前段理论上是不可以设置元素的非行内样式
     -> 如果你要修改非行内样式
     -> 是需要修改 html 文件 或者 css 文件的
     -> 但是我们前端JS 是不能操作电脑上的文件的
 + 设置行内样式
   => 语法:元素.style.样式名 = '值'
// 3. 给元素设置样式
// 只能设置行内样式
div.style.float = 'right'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值