笔记:JS设置CSS样式的几种方式

JavaScript08

笔记:JS设置CSS样式的几种方式,第1张

1、直接更改,比如:

xID.style.display = "block" // 更改display属性,会覆盖css中的定义。

xID.style.display = ""      // 取消js更改display属性,以css样式为准。

这里的xID,是通过id获取的标签。当然,也可能是通过tagName之类的获取的标签。

这种方式,简单直接。但是要修改大量的样式的时候,不适合。所以,我更推荐第二种方式。

2、更改类名

xID.className = "xx   yy"

如果有多个类,就用空格隔开。前提,在样式中要有已有类的定义。比如这里的xx和yy类,在css中应该是写好的。

这种方式把所有的样式写在了css文件中,适合更改较多的样式以及炫酷的样式。js就只做一件事情:改类。至于这个类会把标签变成什么样子,交给css吧。

通过jquery也可以达到如上的效果:

$("#xID").css({

  fontSize:"12px",

  display:"block"

})  // 直接更改样式

$("#xID").addClass("xx")  // 增加删除类

$("#xID").removeClass("xx")

State 模式是一种特殊形式的 Strategy 模式:Context 选择的具体策略根据不同的 state 发生变化。

对于 Strategy 模式,可以基于不同的变量比如传入的参数来决定选择具体哪个策略,一旦选择确定后,直到 context 剩余的整个生命周期结束,该策略都保持不变。相反在 State 模式中,策略(或者在这里的语境下,叫做 状态 )在 context 的生命周期里是动态变化的,从而允许对象的行为可以根据内部状态的变化自适应地更改。

举例来说,我们需要创建一个宾馆预定系统,由一个 Reservation 类对预定房间的行为进行建模。

考虑如下一系列事件:

参考上图,可以实现 3 种 不同的策略,他们都实现了 confirm() 、 cancel() 、 delete() 这几个方法。每种策略的具体逻辑由不同的状态决定。 Reservation 对象只需要在每次状态切换时,激活对应的策略。

package.json :

failsafeSocket.js :

上述 FailsafeSocket 类主要由以下几个组件构成:

offlineState.js :

上述模块负责定义 socket 处于离线状态时的行为。

onlineState.js :

OnlineState 模块实现了当 socket 处于在线状态时的行为。

server.js :

client.js :

Node.js Design Patterns: Design and implement production-grade Node.js applications using proven patterns and techniques, 3rd Edition

hitTest

元件.hitTest(x, y)用来检测元件和某个点是否发生碰撞。非常方便的是如果是png透明图,透明部分是不会检测到碰撞的。这个方法的参数x,y是相对坐标(相对于元件中心0,0的位置)。

globalToLocal

这也是一个有用的方法,虽然需求中我没用到。用法是元件.globalToLocal(x, y),表示将一个全局坐标转化为现对于元件位置的坐标。

localTolocal

好了,这个是最有用的。将一个元件的绝对坐标(相对于画布左上角)转化为相对元件的坐标(相对于元件的中心点x,y)。

用法是 元件1.localTolocal(x, y, 元件2)。返回的是元件1相对于元件2中心点的坐标,参数x,y表示元件1的有效碰撞点,这里只能是一个点去碰一个图形,至于如何解决图形间的边缘碰撞,我目前是在碰撞源上设置多个碰撞点,去做多次检测。待深入研究。