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 相关文章推荐
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
javascript中encodeURI和decodeURI方法使用介绍
May 06 Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 Javascript
微信小程序 location API实例详解
Oct 02 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
Dec 14 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
Vue实现本地购物车功能
Dec 05 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
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 更新数据库中断的解决方法
2009/06/05 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript 单选框,多选框美化代码
2008/08/01 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
js重写方法的简单实现
2016/07/10 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
如何快速上手Vuex
2017/02/14 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
挖掘机司机岗位职责
2014/02/12 职场文书
学校周年庆活动方案
2014/08/22 职场文书
开学典礼致辞
2015/07/29 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Python中的xlrd模块使用整理
2021/06/15 Python
mysql事务隔离级别详情
2021/10/24 MySQL
阿里云日志过滤器配置日志服务
2022/04/09 Servers
MYSQL常用函数介绍
2022/05/05 MySQL