前端必须掌握30个CSS3选择器

也许你已经学会了CSS的三个简单常用的选择器:#ID,.class,标签选择器,可是这些就足够了吗?随着CSS3的到来,作为前端开发者需要掌握下面三十个基本的选择器,这样才可以在平时开发中得心用手。

本文中将综合前端开发中常用的30个CSS3选择器,并且附带了浏览器的支持情况,希望对大家有所帮助。

1、*:通用元素选择器


* {  
 margin: 0;  
 padding: 0;  
} 

*选择器是选择页面上的全部元素,上面的代码作用是把全部元素的margin和padding设为0,最基本的清除默认CSS样式方法

*选择器也可以应用到子选择器中,例如下面的代码:


#container * {  
 border: 1px solid black;  
} 

这样ID为container 的所有子标签元素都被选中了,并且设置了border。

查看演示

兼容性
  1. IE6+
  2. Firefox
  3. Chrome
  4. Safari
  5. Opera

#ID:ID选择器


#container {  
   width: 960px;  
   margin: auto;  
}  

ID选择器是CSS中效率最高的选择器,使用的时候要保证ID的唯一性。

查看演示

兼容性
  1. IE6+
  2. Firefox
  3. Chrome
  4. Safari
  5. Opera

.class:类选择器


.error {  
  color: red;  
}  

类选择器效率低于ID选择器,一个页面可以有多个class,并且class可以放在不同的标签中使用。

查看演示

利用百度ping服务API加快文章收录,秒收不是梦

上一篇文章提到了谷歌的ping服务接口,其实国内的搜索引擎百度也有类似的服务,今天就介绍下百度博客ping服务,百度博客Ping服务的详细介绍,请移步:http://www.baidu.com/search/blogsearch_help.html#n7。百度的ping服务也是基于XML-RPC标准协议,但是与谷歌ping服务不同的是百度的ping发送的xml格式不同,我们需要使用string节点包裹内容。

例如:


<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value><string>断桥残雪部落格</string></value>
</param>
<param>
<value><string>http://js8.in/</string></value>
</param>
<param>
<value><string>http://js8.in/644.html</string></value>
</param>
<param>
<value><string>http://js8.in/feed</string></value>
</param>
</params>
</methodCall>

根据上篇提到的谷歌接口,我们只要改变一下提交的xml内容即可,当然百度ping服务返回的判断也是跟谷歌的不同,也可以做相应的修改,

利用google博客的ping服务接口API加快网站收录

谷歌博客推出了ping服务已经很长时间了,如果我们的博客是wordpress可以很方便的设置ping服务,但是如果我们的博客不是wordpress,或者我们的网站程序是自己手写的,那么就要自己写RPC代码了。今天断桥残雪分享一下自己写的PHP的XML-RPC代码。在此之前先说说ping服务的好处以及wordpress的ping设置。

配置ping服务,加快收录速度

谷歌的ping服务是一种快速收录的方法,打个比方就是:我们写了一篇文章想要谷歌收录,我们就可以使用ping服务来通知下谷歌,要googlebot尽快来抓取收录。谷歌官方的解释:

通过 Google“博客搜索”Ping API, 用户可以程序化的方式将博客内容的更新通知给 Google“博客搜索”引擎。这对于经常更新博客内容的用户尤其有用。博客服务提供商的管理人员也可以利用此API将其平台上的博客内容变化向 Google 通告,以便 Google“博客搜索”及时抓取来自这一服务提供商的最新内容。为设置对 Google“博客搜索”的自动 Ping 机制,请按照如下所述设置XML-RPC客户端或REST客户端以发送请求。您可以任选一种方法进行通知;两者都将按照相同的方式进行处理。

wordpress设置ping的方法

wordpress自身就带着ping服务,只要我们配置一下就可以了,步骤是:设置→撰写→更新服务。常用的ping服务有以下几个:

http://rpc.pingomatic.com/
http://ping.baidu.com/ping/RPC2(百度的)
http://blogsearch.google.com/ping/RPC2(谷歌的)
http://api.my.yahoo.com/RPC2(雅虎的)
http://api.my.yahoo.com/rss/ping(雅虎的)
http://www.feedsky.com/api/RPC2(feedsky的)

谷歌ping服务的PHP代码

关于RPC的详细介绍可以移步维基百科,谷歌ping服务的标准:

RPC端点: http://blogsearch.google.com/ping/RPC2
调用方法名: weblogUpdates.extendedPing
参数: (应按照如下所列的相同顺序传送)

* 站点名

  • 站点URL
  • 需要检查更新的页面URL
  • 相应的RSS、RDF或Atom种子的URL
  • 可选:页面内容的分类名称(或标签)。您可以指定多个值,之间用’|’字符进行分隔。

CSS3 Media Queries使用方法详解

在css2中允许我们使用media的属性,例如使用screen和print,我也写过一篇关于使用CSS media的print来定义打印网页的样式的文章,关于css2中的media文章,推荐下w3c的。今天来说说CSS3的Media Queries。CSS3中不仅仅可以使用screen和print,而且支持多媒体多分辨率的样式表。

我们先来看下CSS3 Media Queries的演示实例:http://js8.in/mywork/css3media.html,来自于(Web Designer Wall

Max Width

故名思意,就是最大宽度的意思,例如下面的代码是在宽度小于600px的时候才执行的。

@media screen and (max-width: 600px) {
  .class {
    background: #ccc;
  }
}

也可以在link标签里面使用media属性,即下面的写法:


<link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" />

Min Width

跟Max Width相反,是最小宽度,例如当宽度大于900px的时候才运行下面的代码

@media screen and (min-width: 900px) {
  .class {
    background: #666;
  }
}

使用mysqldump、into outfile和load data进行数据库导入导出备份

遇到了大批量导入导出数据的时候真的比较麻烦,动则几G的数据,操作起来也是比较慢的,而且如果稍有不慎,还要重写处理,最简单的方法也是效率最低的方法就是使用PHP写导入导出数据程序,用Shell来跑PHP,可是大家一直忽略了mysqldump和mysql的into outfileload data,如果这几个命令使用灵活了,对于数据库导入导出以及备份是很方便的。下面简单讲解一下,高手飘过,因为对于数据库操作我也是小白。

使用mysqldump 和 source导入导出备份数据

如果要导出整个数据库 或者某一个数据库的一个表,并且保持数据库中表的名字不变,再次导入到另外一个数据库的时候,可以使用mysqldump和source的方法。mysqldump的具体使用参数可以使用mysqldump --help来查看,这里我简单说下我常用的几种参数。

1、mysqldump导出整个表的数据,包括建表信息,这也是最基础的用法

mysqldump -uusername -ppassword databasename tablename > /home/db/db_bak2012

其中-u -p 和mysql的参数是一样的,分别代表了用户名和密码,后面跟着是数据库名和表明,>之后的是要导出的路径。

上面的导出数据要导入数据库的时候可以进入mysql,然后使用下面的命令来实现

source /home/db/db_bak2012

使用mysql筛选出某字段中文的记录

项目中遇到了一个数据处理的问题,简单的描述一下:字段name中有英文的也有中文的,数据比较庞大,如果使用php处理整个表都要捣鼓一遍,不是很“低碳”。

后来想到了使用mysql的正则,于是上网查了一下,找到了以下的方法:


select * from table where not name regexp '^[1-9A-Za-z]';

这样就可以筛选出来name字段中全部为中文的记录了。
记录一下

javascript简单实现checkbox的全选与反选

今天上网遇到有个网友在论坛问input的checkbox全选和反选的问题,顺手总结了一下,然后写了个简单的jQuery checkbox全选反选插件,希望对大家有用。
如果是简单的实现checkbox的全选与反选可以使用下面的函数:


 function checkall(obj,cName)
 {
     var checkboxs = document.getElementsByName(cName);
     for(var i=checkboxs.length;i--;){
             checkboxs[i].checked = obj.checked;
     }
 }
//使用方法:给全选的按钮加onclick事件:onclick="checkall(this,'all[]');"

再谈Iframe的问题

iframe是可以做的事情非常多,比如通过iframe实现跨域,使用iframe解决IE6下select遮挡不住的问题,通过iframe解决Ajax的前进后退问题,再比如通过iframe实现异步上传。在很早我就写过一篇文章说明了Iframe在IE、firefox下的一些DOM操作。今天结合最近项目中遇见的iframe问题,再来谈谈iframe的一些常见问题解决方案。

IE下iframe背景透明问题

在firefox下,iframe背景默认的是透明的,在IE下默认不是透明的,我们可以使用allowTransparency='true'来设置IE下的iframe为透明,另外我们使用scrolling ='no' `frameborder=’0’`分别来实现iframe页面没有滚动条,边框宽度。

IE6下iframe不显示的问题

不得不说IE6是个操蛋的浏览器,尤其是在中国!iframe有的时候在IE6中会出现不显示的问题,主要有以下几种原因,请一一排查:

  1. 可能你的iframe没有设置宽高,例如在table不居中,计算不出来td的高度,会导致这种问题
  2. 尝试使用下面的代码来重新载入IE6下的iframe页面:
    `javascript

setTimeout(function(){
document.frames[‘fuckIE6’].location.reload();
},0)
`

  1. 传闻iframe标签中不要把src紧跟在iframe之后,也就是&lt;iframe src='js8.in' name='fuckIE6'&gt;&lt;/iframe&gt;是错误的,不过我没有碰见过类似的问题,为了保险起见,还是不要写成上面的样式为妙。

Sina App Engine开发实例:天气预报的定时短信(二)

昨天简单介绍了下新浪App Engine的应用,并且介绍了通过weather.com.cn的接口获取天气预报的方法。今天继续开始我们的SAE开发实例之旅。今天主要介绍下使用飞信接口发送短信和使用Sina App Engine的crontab(计划任务)功能。

Sina App Engine开发实例:天气预报的定时短信(一) | 天气预报的定时短信(二)

广告时间:

新浪微博送祝福方法

1、在发布新浪微博的时候,采用以下格式,会在5分钟之内把您的祝福发送出去,并且收到一个@回复:

@微博送祝福:祝××:祝福的内容

2、登录http://js8.in/love,使用新浪微博账号登陆,然后给自己的粉丝、好友送祝福

每一个祝福都会收到一个@回复,并且具有自己独一无二的永久URL地址,你可以复制发送给自己的好友,要TA知道你送的祝福~

介绍下这次开发实例中使用的飞信接口

此次开发使用的Fetion(飞信)接口是由张宴提供的第三方Fetion API,通过这个接口可以方便的给自己和自己的好友发送短信,具体的介绍,请移步这里
调用的格式如下:

http://sms.api.bz/fetion.php?username=您的移动飞信登录手机号&password=您的移动飞信登录密码&sendto=接收短信的飞信好友手机号(也可以是你自己的手机号)&message=短信内容
可以使用GET,POST方法。
结合上篇中介绍的SAE的FetchURL方法,我们可以很轻松的写出来,飞信接口发短信的PHP代码:

 $sms["username"] = 13812345678;
 $sms["password"] = "password";
 $sms["sendto"] = 13812345678;
 $sms["message"] = "这是一条测试短信!";
$f = new SaeFetchurl();
 $f-&gt;setMethod('post');
 $f-&gt;setPostData( $sms);
 $ret = $f-&gt;fetch('http://sms.api.bz/fetion.php');
 var_dump($ret);

PS:对于该接口是否记录飞信密码,断桥残雪不清楚,不过张宴说自己不记录,大家自己辨别。

Sina App Engine的Crontab服务

用过linux系统的应该知道crontab是Linux系统下的计划任务,也就是我们可以通过配置Crontab,让电脑在固定的时间运行固定的程序。断桥残雪通过crontab的服务实现了在新浪微博以:“@微博送祝福:祝××:祝福的内容”的格式发布微博,可以在5分钟内送出祝福,并且收到@回复的功能。
新浪App Engine对cron的介绍可以移步:http://sae.sina.com.cn/?m=devcenter&catId=26
我们可以通过修改SDK文件夹里面的config.yaml来开启crontab任务。格式如下:

Sina App Engine开发实例:天气预报的定时短信(一)

新浪的云计算平台(Sina App Engine)已经开发一段时间了,一直处于内测阶段,最近找到一个邀请码,注册了一个SAE,我也上云了!使用SAE并且做了一个微博送祝福的应用。通过crontab的服务实现了在新浪微博以:“@微博送祝福:祝××:祝福的内容”的格式发布微博,可以在5分钟内送出祝福,并且收到@回复的功能。

今天结合张宴提供的飞信API接口,做个定时发送天气预报的SAE应用,算是新浪SAE的教程吧。

Sina App Engine开发实例:天气预报的定时短信(一) | 天气预报的定时短信(二)

广告时间:

新浪微博送祝福方法

1、在发布新浪微博的时候,采用以下格式,会在5分钟之内把您的祝福发送出去,并且收到一个@回复:

@微博送祝福:祝××:祝福的内容

2、登录http://js8.in/love,使用新浪微博账号登陆,然后给自己的粉丝、好友送祝福

每一个祝福都会收到一个@回复,并且具有自己独一无二的永久URL地址,你可以复制发送给自己的好友,要TA知道你送的祝福~

Sina App Engine简介

Google App Engine大家应该不陌生吧,SAE是类似产品,不同的是GAE提供的是Java和python支持,而新浪的SAE提供的是PHP的支持,包括基本的PHP5、mySQL5.,也包括一些高级的应用Crontab(定时任务),memcache(缓存)、SMTP(邮箱服务),新的功能还在添加中。最让我们兴奋的是提供了crontab计划任务功能,我们可以不花一分钱就能做到定时任务,例如定时发送邮件(结合SMTP),还有今天的实例,天气预报定时短信。而且这些服务我们需要花费少量的“云豆”就可以实现!

详情请参阅:http://sae.sina.com.cn/

Sina App Engine基本操作教程

相对于GAE的黑脸CMD命令行操作,SAE的图形界面更加亲切。注册一个SAE账号之后,我们就可以下载Sina App Engine SDK 包括了windows版本和Mac/Linux版本。

具体是SDK操作教程请看在线视频:http://xhprof.tools.sinaapp.com/demo_beta/

天气预报抓取程序,采用SAE的FetchURL类