Mootools 1.2教程 设置和获取样式表属性


Posted in Javascript onSeptember 15, 2009

欢迎开始这一系列的教程的第七讲。今天,我们来看一下如何通过MooTools 1.2和我们以前几讲中的内容来操作样式,这将给你在UI上带来很大的控制权。处理样式非常简单,不过今天我们要做一些调整。例如,我们要介绍键值对(key-value pair)对象。我们也会讲到在domready之外来传递变量,就像我们在关于函数的那一讲中学到的一样。从这里开始,我们会开始慢慢提高难度,介绍一些必要的编程概念。如果你是JavaScript新手或者第一次开始学MooTools,请确保你在明白了前面的教程,你可以随意地问我任何问题。
基本方法
.setStyle();
这个函数可以允许你设置一个元素的样式属性。我们在前面的一些例子中已经使用过了。你要做的就是把它放在你的 选择器之后,那么它将改变一个元素或者多个元素的样式属性。
参考代码:

// 定义你的选择器 
// 添加.setStyle方法 
// 指定样式属性和值 
$('body_wrap').setStyle('background-color', '#eeeeee'); 
$$('.class_name').setStyle('background-color', '#eeeeee');

参考代码:
<div id="body_wrap"> 
<div class="class_name"></div> 
<div class="class_name"></div> 
<div class="class_name"></div> 
<div class="class_name"></div> 
</div>

.getStyle();
同样,这个方法就像它的字面意思一样。.getStyle();将返回一个元素的一个属性值。
参考代码:
// 首先,建立一个变量来保存这个样式属性值 
var styleValue = $('body_wrap').getStyle('background-color');

如果我们在上面的例子中运行这个代码,那么它将返回“#eeeeee”给变量styleValue。
设置和获取多个样式表属性
.setStyles();
.setStyles();就像你所想象的那样,可以让你一次给一个元素或者一个元素数组设置多个属性值。为了能够同时设置多个样式表属性值,.setStyles();的语法略有一点不同。
参考代码:
// 还是从你的选择器开始,然后在后面加上.setStyles({
$('body_wrap').setStyles({ 
// 下面的格式为:'property': 'value', 
'width': '1000px', 
'height': '1000px', 
// 特别注意:最后一个属性没有逗号 
// 如果有逗号,将不能跨浏览器 
'background-color': '#eeeeee' 
});

注意:实际上,属性选择器也可以不需要单引号,除非属性名中有连接符“-”,比如在“background-color”中,为了保持简单,给每个属性选择器都加上单引号更容易一些。
同时也要注意:属性值可能更灵活多变一些(比如“100px”或者“#eeeeee”)。除了字符串(一个只有字母的串,我们会在以后的教程中更深入地讲解这个),你也可以传入数字(这可能在大多数情况下会被解释为px)或者变量而不需要引号:
参考代码:
// 这个把变量firstBackgroundColor的值设置为字符串(STRING)'#eeeeee' 
var firstBackgroundColor = '#eeeeee'; 
// 你可以把一个变量传递给另外一个变量 
// 这使得变量backgroundColor的值也等于字符串(string)'#eeeeee' 
var backgroundColor = firstBackgroundColor; 
// 这个把变量divWidth的值设置为数字(NUMBER)500 
var divWidth = 500; 
$('body_wrap').setStyles({ 
// 在这种情况下,变量名是不需要用引号包围起来的 
'width': divWidth, 
// 数字也一样,不需要引号包围 
'height': 1000, 
// 另外一个变量 
'background-color': backgroundColor, 
// 字符串就是用单引号引起来的一系列字符组成的串 
'color': 'black' 
});

.getStyles();
这个方法可以让你一次获得多个样式属性。这个和我们看到的上面的略有一些不同,因为它包含了多个数据集,每个数据集有一个键(key,属性名)和一个值(value,属性值)。这个数据集叫做对象,.getStyles();方法可以非常容易地把多个属性值放入这些对象中,并可以很简单地把它们取回来。
参考代码:
// 首先为你的对象定义一个变量 
// 然后创建一个选择器 
// 然后把.getStyles添加到你的选择器 
// 然后创建一个用逗号分隔开的样式属性列表 
// 确保每个属性都在一个单引号中 
var bodyStyles = $('body_wrap').getStyles('width', 'height', 'background-color'); 
// 首先我们创建一个对象来保存这个属性值 
// 然后我们通过指定的属性的名(键)来得到一个值 
// 把属性名放在两个方括号[]之间 
// 并确保属性名已经用单引号引起来了 
var bgStyle = bodyStyles['background-color'];

如果在我们的CSS文件中有这样的样式定义:
参考代码:
#body_wrap { 
width: 1000px; 
height: 1000px; 
background-color: #eeeeee; 
}

那么变量bgStyle将包含值“#eeeeee”。
注意:如果你要从你的样式表对象中取得一个单独的属性,首先取得一个对象变量(在这个例子中是“bodyStyles”),然后使用方括号和单引号(['']),最后填入属性名key(如width或者background-color)。就这么简单!
代码示例
在这个例子中,我们将使用我们刚才在上面学到的一些方法来获取和设置样式。在注意样式属性操作用法的同时,也要特别注意它本身的结构。为了把我们的函数从domready中独立出来,我们需要把那些变量传递到domready事件的函数中。我们通过给domready里面的函数传递一个参数来实现这个。注意点击(click)事件使用了匿名方法——这可以让我们从domready事件中把变量传递到外面的函数中。如果你第一遍没有看懂,请不要着急,下面的例子可能会让这些更清楚更明白一些:
参考代码:
// 这里是一些函数 
// 注意这个函数有一个参数:"bgColor" 
// 这个是从domready事件中传递过来的 
var seeBgColor = function(bgColor) { 
alert(bgColor); 
} 
var seeBorderColor = function(borderColor) { 
alert(borderColor); 
} 
// 我们把playDiv传递给这个函数,从而可以操作这个元素 
// 也可以让我们避免重复地使用选择器 
// 在处理复杂的选择器时很有用 
var seeDivWidth = function(playDiv) { 
// 我们再次开始获得样式属性 
// 和我们在domready中用的getStyles独立开来 
// 因为我们想使用当前的值 
// 这可以保持width是准确的 
// 即使它在domready事件之后被改变了 
var currentDivWidth = playDiv.getStyle('width'); 
alert(currentDivWidth); 
} 
var seeDivHeight = function(playDiv) { 
var currentDivHeight = playDiv.getStyle('height'); 
alert(currentDivHeight); 
} 
var setDivWidth = function(playDiv) { 
playDiv.setStyle('width', '50px'); 
} 
var setDivHeight = function(playDiv) { 
playDiv.setStyle('height', '50px'); 
} 
// 注意,在这个时候,这个变量可以取任何名称 
// 它会传递任何值,value或者element或者你的任何东西 
// 它将会取代任何在domready里面传过来的东西 
var resetSIze = function(foo) { 
foo.setStyles({ 
'height': 200, 
'width': 200 
}); 
} 
window.addEvent('domready', function() { 
// 因为我们要多次使用这个选择器,所以我们把它赋值给一个变量 
var playDiv = $('playstyles'); 
// 这里我们创建了一个包含几个属性的对象 
var bodyStyles = playDiv.getStyles('background-color', 'border-bottom-color'); 
// 你可以通过调用属性名来获得样式值然后传递给一个变量 
var bgColor = bodyStyles['background-color']; 
// 这里我们使用了一个匿名函数,从而我们可以把参数传递给domready外面的函数 
$('bgcolor').addEvent('click', function(){ 
seeBgColor(bgColor); 
}); 
$('border_color').addEvent('click', function(){ 
// 除了可以把一个样式属性传递给一个变量 
// 你还可以在这里直接调用 
seeBorderColor(bodyStyles['border-bottom-color']); 
}); 
$('div_width').addEvent('click', function(){ 
seeDivWidth(playDiv); 
}); 
$('div_height').addEvent('click', function(){ 
seeDivHeight(playDiv); 
}); 
$('set_width').addEvent('click', function(){ 
setDivWidth(playDiv); 
}); 
$('set_height').addEvent('click', function(){ 
setDivHeight(playDiv); 
}); 
$('reset').addEvent('click', function(){ 
resetSIze(playDiv); 
}); 
});

这里是HTML代码:
参考代码:
<div id="playstyles"> </div> 
<br /> 
<button id="bgcolor">See background-color</button> 
<button id="border_color">See border-bottom-color</button><br /><br /> 
<button id="div_width">See width</button> 
<button id="div_height">See height</button><br /><br /> 
<button id="set_width">Set weight to 50px</button> 
<button id="set_height">Set height to 50px</button><br /><br /> 
<button id="reset">Reset size</button>

这里是CSS代码
参考代码:
#playstyles { 
width: 200px 
height: 200px 
background-color: #eeeeee 
border: 3px solid #dd97a1 
}

更多学习...

下载一个包含你开始所需要的所用东西的zip包

包含MooTools 1.2核心库,一个外部JavaScript文件,一个简单的HTML页面和一个CSS文件。

更多关于样式表的内容

要学习更多关于样式表的内容,请查阅MooTools文档中的Element.Style部分。

Javascript 相关文章推荐
JavaScript 匿名函数(anonymous function)与闭包(closure)
Oct 04 Javascript
Js 去掉字符串中的空格(实现代码)
Nov 19 Javascript
jQuery+AJAX实现网页无刷新上传
Feb 22 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 Javascript
原生js实现验证码功能
Mar 16 Javascript
jQuery分组选择器简单用法示例
Apr 04 jQuery
JavaScript setInterval()与setTimeout()计时器
Dec 27 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 Javascript
简单了解JavaScript弹窗实现代码
May 07 Javascript
微信小程序实现下拉加载更多商品
Dec 29 Javascript
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 #Javascript
Mootools 1.2教程 事件处理
Sep 15 #Javascript
Mootools 1.2教程 函数
Sep 15 #Javascript
Mootools 1.2教程(3) 数组使用简介
Sep 14 #Javascript
Mootools 1.2教程(2) DOM选择器
Sep 14 #Javascript
MooTools 1.2介绍
Sep 14 #Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 #Javascript
You might like
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
php模板函数 正则实现代码
2012/10/15 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
工程项目经理岗位职责
2013/12/15 职场文书
二手书店创业计划书
2014/01/16 职场文书
四群教育工作实施方案
2014/03/26 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
护林员个人总结
2015/03/04 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript