CSS样式定义方法

大家都知道,在为HTML设置样式的时候,通常有三种方法:内联样式,内部样式表,外部样式表

1、内联样式:

  内联样式表就是在HTML元素中的行内直接添加style属性。

1 <div id="div1" style="width: 100px; height: 100px; background: black">
2 </div>

2、内部、外部样式表:

  内部样式表就是在<head>头部里有<style>标签,外部样式表<link>标签引用的外部样式表文件(*.css)。

1 <head>
2 <style>
3   #div1 { width:200px; height:200px; background:black}   //这里是内部样式表
4 </style>
5 <link rel="stylesheet" type="text/css" href="example.css" >   //这里是外部样式表,引用了外部的example.css文件
6 </head>

   通常来说,内部样式表会比较少用,为了使HTML文档中看起来更简洁,一般脚本程序和样式表都是从外部引用的。


CSS样式表定义的优先级 

  说完了关于样式表的定义方法之后,我们再了解一下CSS样式表定义的优先级。(我们这里只是简单说一下,这三种CSS样式的优先级关系,有关CSS选择器的优先级,会单独再开一帖)

  有一句话是这样说的:近水楼台先得月。从这个方面去想就可以很清楚了。

  浏览器默认属性<外部样式表<内部样式表<内联样式

  当样式定义有重复时,会优先使用最内层的样式定义。所以我们一般做样式修改时候,修改的便是内联样式或者是用类选择器修改样式


查看CSS属性

  1、查看内联样式

  查看CSS属性,一般大家最常用的,最了解的一种方法就是用 object.style.***

1 <script>
2 window.onload = function(){
3     var oDiv = document.getElementById('div1');
4     alert( oDiv.style.width );   //"100px" 这里是字符串,显示的是内联样式
5 }
6 </script>

  上面那个仅仅是查看内联样式单个属性的,要是有需要查看所有的属性,可以使用obj.cssText或者obj.getAttribute("style");待会儿会详细说明。

  谨记!它们都是无法取得样式表中的属性值。

  object.style 它显示的仅仅是内联样式的属性,即使样式表定义了,用style.width也无法得到它的值(求宽度的话,这个时候大家最好用obj.offsetWidth, 但是获得的不带单位的值,要注意一下)  

  2、查看样式表(getComputedStyle,currentStyle)

  查看样式表的某个属性就没有上面那么简单啦。

  这里要用到一个方法 getComputedStyle(object,null)[name],第二个参数是放伪元素的(:after之类的),如果不需要就要设置为null。

  这个方法厉害了,顾名思义,获得计算后的style,也就是说。你要取得的属性要最后最终确定的样式属性,包括样式表和内联样式。

  

1 //内联样式的width删除后
2
3 var divWidth = getComputedStyle(oDiv,null)['width']
4
5 alert( divWidth) // "200px" , 这个是样式表中定义的宽度。 IE中不兼容。

  大家也看到了,我在注释上写了个IE不兼容。 这么好的属性,竟然不兼容,可恨!

  不过还好,IE也有它自己定义的方法 obj.currentStyle[name] .代码我就不写啦,和上面差不多。

  让我们来写个可以兼容共用的方法

1 function getStyle(obj,name){
2     if(obj.currentStyle){   //判断浏览器是否拥有该方法
3         return obj.currentStyle[name];
4     }else{
5         return getComputedStyle(obj, null)[name];
6     }
7 }

  这样我们就“可以”获取我们想要的CSS属性啦!嗯,专门做个蓝色的坑标注。

  (用这个方法时,name参数必须是完整的且驼峰形的,也就是background-color要写成backgroundColor,缩写什么的当然也不行。还有border,有的浏览器还要分,左框宽,右框宽,这里那么多大坑,我就不一一阐述了。)

  所以大家用这个getStyle(obj,name),务必多加注意!希望各位同学可以多多上手实践感受感受。


修改CSS属性

  终于到了最后一个环节了。

  同样修改CSS属性有几种方法,一个一个来说。

  1、obj.style.xxx = val

    这个是应用最广泛,也是用起来比较得心应手的啦!

    它的原理也就是通过添加内联样式,去覆盖样式表中的样式。

  2、obj.style.cssText = "xxx", obj.setAttribute("style","xxx")

    为什么这两个放在一起说呢?因为,这两个有许多的共通点,但是实际操作我会建议使用前者。

oDiv.setAttribute('style','width:300px') ;  //他们修改的都是内联样式。
oDiv.style.cssText = "width:300px";

    注意! 这两个方法都是会覆写内联样式,就是说,原本的内联样式会被全部清除。而且setAttribute,不兼容IE6这个老古董。

    所以要修改内联样式的属性,可以采用 obj.style.cssText

  3、obj.className = "xxx"

    这个是我们常说的添加class类。这个是通用的,没什么好说。

    如果要用到setAttribute来设置class的话,就要关注到,在IE里是setAttribute("className","xxx")

    而其它浏览器一致都是 setAttribute("class","xxx") 与内联样式的class属性相对应。(不推荐这种方法)


  CSS移除样式。

    对于内联样式,我们可以采用下列的方法。

1 oDiv.cssText = ""; //等于移除了所有内联样式,若不需要全部移除,可以补回
2 oDiv.removeAttribute("style")

    通过清空内联样式,被覆盖的样式表属性,就可以重现天日了。

    当然除了内联样式还有样式表中的类选择器也是可以移除的。

1 oDiv.className = "";
2 oDiv.removeAttribute("class");  //非IE7
3 oDiv.removeAttribute("className"); //IE7

最后,我抱歉的说一句,我不知道怎么用JS修改样式表中的样式,要是有知道的同学可以留下你的评论。

以上是我的学习小总结,或许有不全面或者错误的地方,欢迎指正!

转载于:https://www.cnblogs.com/YikaJ/p/3981449.html

用JS查看修改CSS样式(cssText,attribute('style'),currentStyle,getComputedStyle)相关推荐

  1. JS添加/修改CSS样式

    JS添加/修改CSS样式是通过.style.xxxx属性=值来实现的,记得是等号赋值. document.getElementById("xx").style.xxx=xxxxx; ...

  2. js动态修改css样式

    //获取一个HTMLCollections,可以理解为HTML元素数组 var list = document.getElementsByClassName("block"); / ...

  3. JS获取元素CSS样式

    获取元素CSS样式的方法 说到在js里修改css样式的属性,我第一个想的是.style属性.然后去具体的修改字体的样式,背景颜色等样式,最近在做一个练习的时候涉及到了这部分的知识. 一·首先style ...

  4. 通过JS修改CSS样式

    通过JS修改CSS样式有两种方法: 修改某一属性的值 修改某一元素的class名,使其被别的样式修饰 修改某一属性的值 <!DOCTYPE html> <html> <h ...

  5. 原生Javascript/原生JS修改CSS样式的四种方式

    设置style var domName = document.querySelector('#domName'); domName.style.backgroundColor = '#aaa' 设置属 ...

  6. js函数改变html样式,js可以改css样式吗?

    js可以改css样式.在很多情况下,都需要对网页上元素的样式进行动态的修改:而JavaScript可以动态的修改样式.下面本篇文章就来给大家介绍几种JavaScript中修改CSS样式的方法,希望对大 ...

  7. Js中设置css样式

    本次介绍了3种修改css样式的方法,下面分别介绍 css代码 <style>div{width: 100px;height: 100px;background-color: pink;}. ...

  8. jq动态修改css样式表,jquery 动态改变css样式

    jquery 几乎成了现在开发WEB应用的标准JS库,这与其简单性和易用性是分不开的.作为一个后端开发人员,要做一些前端页面时,CSS 样式的控制是少不了需要掌握的.如果是静态的CSS,当然是可以直接 ...

  9. jquery怎么动态修改css样式

    jquery动态修改css样式的方法:1.通过css方法动态修改css样式:2.给指定的html元素定一个CSS样式:3.查看元素的css样式:4.隐藏与显示p或指定的其他html元素. jquery ...

最新文章

  1. ignite在MacOS或Linux上的安装
  2. 剑指Offer-数组中重复的数字
  3. applicationContext.xml
  4. Python多进程及多参数的处理方法
  5. DSW:面向AI研发的集成开发平台
  6. DM8168 DMM(2)
  7. 增加mysql的sortbuffer_mysql 参数调优(14)之优化filesort sort_buffer_size、innodb_sort_buffer_size...
  8. PYthon常用模块 logging 日志
  9. java cygwin 乱码_Cygwin中文乱码的解决方案
  10. java低层源码_Java线程池及其底层源码实现分析
  11. char与byte的差别
  12. 在Angular外部使用js调用Angular控制器中提供的函数方法或变量
  13. B18-iOS9的适配相关
  14. 【MySQL】--数据库锁机制
  15. win7计算机扫描仪,win7系统怎么用打印机扫描仪功能|win7系统扫描仪功能的使用方法...
  16. 线性回归(Linear regression)算法
  17. App内购项目的App Store推广
  18. E - Obstacle Course的详细解答
  19. 优雅代码的秘密,都藏在这6个设计原则中
  20. 【32最小系统板】pid循迹小车(铁丝循迹)

热门文章

  1. 网络推广外包——网络推广外包公司为每个线下商城实现“线上梦”!
  2. 网页制作获得用户喜爱才是重点!
  3. 三点提升关键词排名的写作技巧
  4. 用计算机做科学实验评课,科学小实验课程听课心得
  5. 无线网络的网速很慢_家里无线网络每天不定时段出现网速很慢或者直接无连接,这是怎么回事?...
  6. java 平滑升级_服务器spring boot版本,平滑升级
  7. 统计分析与spss的应用第五版数据_#统计分析与SPSS应用# 4.1.3 SPSS频数分析的扩展功能...
  8. Vue之动态class写法总结
  9. 利用目录服务器实现单点登录
  10. PHP Session变量