IE7下Textarea高度100%的解决办法

在IE7下Textarea的height:100%是不生效的,但是只要加上position:absolute;就可以轻松解决这个问题。

转载请注明原文出处《IE7下Textarea高度100%的解决办法》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

JavaScript位操作及其简单应用

1. <<

左移,即按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

1 << 1
//output 2
1 << 2
//output 4

2. >>

右移,即按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。

4 >> 1
//output 2
4 >> 2
//output 1

3. & (AND)

与,即按二进制形式将所有的数字与目标数字按位进行与操作。

常见用法:通常用于二进制的取位操作,例如:一个数字&1,如果结果为0则为偶数,如果为1则为奇数。

2 & 1
//output 0
1 & 1
//output 1

4. | (OR)

或,即按二进制形式将所有的数字与目标数字按位进行或操作。

常见用法:通常用于二进制数字的无条件赋值。例如:一个数字|1,相当于与获取与当前数字最接近的奇数。

1 | 1
//output 1
2 | 1
//output 3

5. ~ (NOT)

非,即按二进制形式将所有数字取反。

常见用法: 位运算 NOT 实质上是对数字求负,然后减 1,因此 25 变 -26。

~1
//output -2

6. ^ (XOR)

异或,即按二进制形式将所有数字与目标数字对比,只有两个数字不相同即只有一个数位存放的是1的时候返回1,如两个数字相同返回0.

常见用法:xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变。可以用于简单的加密,或交互数值操作。

var a = 2, b = 3;
a ^= b;
b = a ^ b;
a ^= b;
console.log(a);
//output 3
console.log(b);
//output 2

转载请注明原文出处《JavaScript位操作及其简单应用》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

IE7下的li诡异bug一例

IE7下li纵向排列时会出现莫名其妙的空白,一般用overflow,float,border,vertical-align可以消除。

另,如果li不设背景,会引起莫名其妙的hover失效。所以请加background。

转载请注明原文出处《IE7下的li诡异bug一例》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

学习3ds max的作业

转载请注明原文出处《学习3ds max的作业》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

html中button的box-sizing属性

在html中,button元素的box-sizing属性默认是border-box,大部分其他元素(我尚未验证有哪些不是)的box-sizing的属性则都是content-box。

也就是你在设置button的height或width的时候相当于设置的button的content-width+padding+border,也就是IE6之前的那种显示行为。

box-sizing这个属性在css2.1中是无效的,所以,稳妥起见,你的最佳解决办法还是忍着,在定义button样式时特别注意一下。包含border和padding的宽度。

请查看演示链接

转载请注明原文出处《html中button的box-sizing属性》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。

Arduino Nano配合MQ-2烟雾传感器和LED灯实现烟雾报警器

二话不说先上视频

基本配件组成

Arduino Nano × 1
MQ-2烟雾传感器 × 1
LED灯 × 1
连接线若干
MicroUSB连接线一根

连接方法

将MQ-2传感器两个引脚正极接Nano 3.3伏引脚,负极接地,S引脚接模拟口0。
将LED灯正极接数字口12,负极接地。

实现效果

当烟雾浓度越大时LED闪烁频率越高,烟雾浓度降低时LED闪烁频率降低,烟雾浓度为标准浓度时LED灯关闭。

实现思路

通过digitalWrite(LED, HIGH)和digitalWrite(LED, LOW)改变对LED加电的状态控制LED打开和关闭,改变状态的速度越快闪烁的频率越高。通过analogRead(0)获取MQ-2传感器当前的读数,不断监测当前烟雾浓度,如果超过一定的阈值比如400则提高LED闪烁的频率,随着浓度值的降低同时降低LED灯闪烁的频率。

注意事项

MQ-2传感器要经过预热才能正常工作,开始接入时读数不准,经过几分钟预热后,我本地的正常环境读数为150左右。所以要根据这个读数来控制程序判断的阈值。

代码
//定义LED的高电平接入数字端口
int led = 12;
void setup() {
  //定义当前的端口为输出端口
  pinMode(led, OUTPUT);
}

void loop() {
  //获取MQ-2传感器模拟端口的读数
  int val = analogRead(0);
  //如果大于400则以10ms的间隔闪烁
  if(val > 400){
    blinkLED(10);
  }else if(val > 300 && val < 400){
        //如果大于300,小于400则以100ms的间隔闪烁
    blinkLED(100);
  }else if(val < 300 && val > 200){
    blinkLED(1000);
  }else{
        //否则关闭
    digitalWrite(led, LOW);
  }
}
//闪烁函数
unsigned int blinkLED(int period){
  unsigned long time = millis();
  unsigned int signal;
  if((time / period) % 2 == 0){
    digitalWrite(led, HIGH);
  }else{
    digitalWrite(led, LOW);
  }
}

涉及内容

pinMode, analogRead, digitalWrite

其他

由于Arduino强大的功能,所以实现起来是非常简单的,唯一不足的地方就是晚上又多抽了半盒烟来测试:D

下一步就是要接入Yeelink平台来实现远程的检测,让这个小东西变得更加有意义,能够实现远程监测才是这个烟雾报警器真正能够起作用的时候。敬请期待:)

转载请注明原文出处《Arduino Nano配合MQ-2烟雾传感器和LED灯实现烟雾报警器》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。