JavaScript CSS修改学习第二章 样式


Posted in Javascript onFebruary 19, 2010

另外,有时候你也许想知道添加到一个元素或者链接上的样式的具体内容。而style属性只能读取元素的内联形式的样式,所以如果你想读取其他样式就得另想办法了。

偏移
在使用一些小技巧之前,IE和Mozilla已经添加了一个比较好的办法:offsetSomething。使用这些属性你就能够读取这个段落现在的一些比较重要的样式。
举个例子,使用offsetWidth。你就能知道这个段落现在的宽度的像素值。为了测试,你可以改变一下窗口的大小然后再运行一下。
代码也非常的简单:

function getOff() 
{ 
    x = document.getElementById('test'); 
    return x.offsetWidth; 
}

然后我们以警告框的形式显示这个值:alert('offsetWidth = ' + getOff())。
现在你就得到了这个段落在用户浏览器里面的像素值,就可以进行一些运算了。下面是一些你可以读取的其他属性:
offsetHeight:高度的像素值
offsetLeft:距离左边的像素值(什么左边?见下)
offsetTop:距离上面的像素值(什么上面?见下)
offsetWidth:宽度的像素值
注意这些属性是只读的,你不能直接修改。
为了方便说明,我准备了一小段代码。首先把这个段落移过来。
然后我们给他的宽度增加100像素。如果我们这时候查看offsetWidth就会看到变化。你也可以减少100像素然后查看。
如果你在两种浏览器里面查看,可能会有不同。在IE里面就是原来的宽度+100像素,但是在Mozilla里面不是。因为Mozilla的更合乎标准一些:他只是查看内容的宽度,而IE里面会加上边距和边框的宽度。虽然Mozilla的比较正确,但是我更倾向于IE的,因为更加的直观一些。
如果你不介意Mozilla/IE的兼容性的话,代码还是很简单的:
function changeOff(amount) 
{ 
    var y = getOff(); 
    x.style.width = y + amount; 
}

我们给函数传递要改变的值amount,然后用getOff()函数获得原来的大小然后存储在y里面,最后我们用原始大小和需要改变的值来重新确定元素的大小。
offsetWidth/Top
关于他们的定义,请在上一章中查看。

得到样式
我们看到offset属性局限性很大。浏览器给了我们一些更加方便的访问元素样式的方法但是不幸的是他们的可靠性和通用性不及offset。
Mozilla和Opera
Mozilla和Opera更倾向于使用css式的表达式而不是JavaScript的。比如你要得到字体大小就要使用css的font-size,而不是JavaScript的fontsize。
Mozilla支持的样式很少。比如border[-somthing]在Mozilla里面就是空值,但是Opera能给出准确的值。
IE
在IE里面我们能得到很多的样式信息,但是我们一定要小心。在这个例子中border不起作用,你需要borderStyle,borderWidth,borderColor。
注意在JavaScript里面要方位border-width属性必须拼写成borderWidth。因为这个连接线可能会被认为是减号。
另外,IE经常给出auto值。虽然这是真实的值,但是没什么用。所以有时候还得使用offset。

代码
代码依旧很简单:

function getStyle(el,styleProp) 
{ 
    var x = document.getElementById(el); 
    if (x.currentStyle) 
        var y = x.currentStyle[styleProp]; 
    else if (window.getComputedStyle) 
        var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp); 
    return y; 
}

首先我们传递元素的ID和想访问的样式名称
function getStyle(el,styleProp) {

然后我们把元素保存在x中:
var x = document.getElementById(el);

首先是IE的方法:元素的currentStyle属性
if (x.currentStyle) 2 var y = x.currentStyle[styleProp]; 
然后是Mozilla方法:使用getComputeStyle()方法,在Opera也同样可行 
[code] else if (window.getComputedStyle) 
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);

然后给调用这个函数的程序返回y。
return y; 
}

虽然这个函数不是很完美,但是也已经力所能及了。

翻译地址:http://www.quirksmode.org/dom/getstyles.html
转载请保留以下信息
作者:北玉(tw:@rehawk)

Javascript 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
基于MooTools的很有创意的滚动条时钟动画
Nov 14 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
May 07 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
如何用js控制frame的隐藏或显示的解决办法
Mar 20 Javascript
Node.js安装教程和NPM包管理器使用详解
Aug 16 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
Aug 08 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 Javascript
vue使用vuex实现首页导航切换不同路由的方法
May 08 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
JavaScript CSS修改学习第一章 查找位置
Feb 19 #Javascript
JavaScript DOM 学习第九章 选取范围的介绍
Feb 19 #Javascript
JavaScript DOM学习第八章 表单错误提示
Feb 19 #Javascript
JavaScript DOM 学习第七章 表单的扩展
Feb 19 #Javascript
JavaScript DOM学习第六章 表单实例
Feb 19 #Javascript
JavaScript DOM 学习第五章 表单简介
Feb 19 #Javascript
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 #Javascript
You might like
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
javascript 继承实现方法
2009/08/26 Javascript
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
JavaScript中Function详解
2015/02/27 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python配置文件写入过程详解
2019/10/19 Python
Python如何计算语句执行时间
2019/11/22 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
python合并多个excel文件的示例
2020/09/23 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
企业给企业的表扬信
2014/01/13 职场文书
经典广告词大全
2014/03/14 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL