LNMP 修改MySQL密码的方法

修改的步骤如下:

/etc/init.d/mysql start –skip-grant-tables

cd /usr/local/mysql/bin

./mysql -u root -p

此时会提示你输入密码,但是直接回车即可。

然后出现mysql > 的提示符

之后输入:

use mysql;

UPDATE user SET password=PASSWORD(‘root’) WHERE user=’root’;

exit;

此时mysql的root密码就被改为:root

记得重新启动mysql:

/etc/init.d/mysql restart

LNMP定时重启 crontab

1、使用命令 # crontab –e ,进入cron任务表。

2、在# m h  dom mon dow   command下面,增加一行:

          00 */3 * * * /root/lnmp restart   //每隔3小时重启一次   
或者     0 0 * * * /root/lnmp restart       //每天0点重启

3、按Ctrl+O保存,回车确认,再按Ctrl+X,就可以关闭编辑界面了。

整个定时重启设置完成。

service cron start 启动cron服务

service cron restart  重启cron服务

VPS:通过SSH备份Nginx配置 整站代码和数据库

装lnmp都知道,利用SSH备份是很快很简单的事。其实官方也提供了sh脚本,下载地址脚本下载地址:http://soft.vpser.net/lnmp/backup.sh。

运行前:

需要提前在VPS安装好lftp,lftp功能上比较强大,CentOS直接执行:yum install lftp,Debian执行:apt-get install lftp

需要在VPS上创建/home/backup/ 目录,在FTP上创建backup目录。

根据官方的sh文件修改也行。因为某些方面的需求,我也根据自己的情况修改了一下,觉得更符合用户的需要。

backup.sh内容如下:

#!/bin/bash
#Funciont: Backup website and mysql database
#Author: 皇家元林
#Website: https://hjyl.org/
#IMPORTANT!!!Please Setting the following Values!
######~Set MySQL UserName and password~######
MYSQL_UserName=数据库用户名
MYSQL_PassWord=数据库密码
######~Set MySQL Database you want to backup~######
Backup_Database_Name1=数据库名称
Backup_Database_Name2=数据库名称
Backup_Database_Name3=数据库名称
Backup_Database_Name4=数据库名称
                                
######~Set FTP Information~######
FTP_HostName=FTP地址
FTP_UserName=用户名
FTP_PassWord=密码
FTP_BackupDir=/home/backup #路径
                                
#Values Setting END!
TodayWWWBackup=xhjyl_$(date +"%Y%m%d").tar.gz
TodayDBBackup=db-*-$(date +"%Y%m%d").sql.gz
OldWWWBackup=xhjyl_$(date -d -7day +"%Y%m%d").tar.gz
OldDBBackup=db-*-$(date -d -7day +"%Y%m%d").sql.gz
                                
# backup nginx configure files
tar -czvf /home/wwwroot/nginx_conf_$(date +%Y%m%d).tar.gz /usr/local/nginx/conf/vhost
                                
#backup mysql
/usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 | gzip > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql.gz
/usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name2 | gzip > /home/backup/db-$Backup_Database_Name2-$(date +"%Y%m%d").sql.gz
/usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name3 | gzip > /home/backup/db-$Backup_Database_Name3-$(date +"%Y%m%d").sql.gz
/usr/local/mysql/bin/mysqldump --add-drop-table -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name4 | gzip > /home/backup/db-$Backup_Database_Name4-$(date +"%Y%m%d").sql.gz
                                
# backup wwwroot and mysql
tar -czvf /home/backup/xhjyl_$(date +%Y%m%d).tar.gz /home/wwwroot --exclude=ftp --exclude=phpmyadmin
rm $OldWWWBackup
rm $OldDBBackup
cd /home/backup
lftp fish://$FTP_UserName:$FTP_PassWord@$FTP_HostName << EOF
cd $FTP_BackupDir
mrm $OldWWWBackup
mrm $OldDBBackup
mput $TodayWWWBackup
mput $TodayDBBackup
bye
EOF

这里需要说明一下不同地方:我这里添加了Nginx的配置,并备份到/home/wwwroot,所以直接跟整站代码一起打包就好了。至于数据库还是分开打包好,不然数据库太大,容易导出却不容易导入。 --exclude=ftp 这个ftp是不需要打包的文件夹。最后是lftp,我这里是直接发到我另外一个VPS上,因为那个搭建FTP,所以用SFTP的功能。经过测试,这段代码是正常的。即使在运行的时候,开始有tar: Removing leading `/’ from member names 这样的警告,那是正常的,这表示:

这样的一个压缩包,如果我们再去解开,就会当前目录(也即此例中的“~”)下再新建出“./home/robin/” 两级目录。对于这样的压缩包,解压方法是使用参数 “-C”指解压的目录为根目录(“/”):tar -xzvf robin.tar.gz -C /

如果强制使用绝对路径,可加上P参数。比如tar -czvPf robin.tar.gz /home/robin/

完了。

通过 SSH 备份 VPS 配置 网站文件和数据库

在使用 VPS 的过程里,我认为有三样东西必须做好备份:网站目录服务器配置文件数据库。在进行备份前,先用 SSH 以 root 帐户登录到服务器。

备份 MySQL 数据库

我通常是备份整个数据库并使用 Gzip 压缩,同时添加 DROP DATABASE 防止在备份文件导入时出现数据库重复问题。

/usr/local/mysql/bin/mysqldump --all-databases --add-drop-table -u{username} -p{password} | gzip > /home/backup/mysql_$(date +%Y%m%d).sql.gz

使用上面这句 SSH 命令前需要确定 mysqldump 的路径,像我的 VPS 就在 /usr/local/mysql/bin/ 目录下。并且把 {username}{password}替换成你的 MySQL 用户名和密码。

备份服务器配置文件

备份服务器配置文件的目的是在重新布置服务器环境时能迅速恢复所有站点的配置,这一步主要是备份 Apache 和 Nginx 的配置文件。在备份前你必须清楚自己服务器的环境并且知道相关配置文件的位置,像我的服务器同时使用了 Apache 和 Nginx,就必须要同时备份这两个货的配置文件。

# backup nginx configure files
tar -zcvf /home/backup/nginx_conf_$(date +%Y%m%d).tar.gz /usr/local/nginx/conf/vhost
# backup apache configure files
tar -zcvf /home/backup/apache_conf_$(date +%Y%m%d).tar.gz /usr/local/apache/conf

备份网站目录

这一步就比较简单了,网站目录通常位于 /home/wwwroot 里,因此只需要把 wwwroot 目录打包压缩就行了。

tar -zcvf /home/backup/wwwroot_$(date +%Y%m%d).tar.gz /home/wwwroot

把备份文件保存到本地

在执行完上面三个步骤以后,使用 sftp 登录服务器,就能在 /home/backup 里找到刚才备份的文件,通过日期字串能看出这些备份文件是在那一天生成的,赶紧把这些备份下载到你的电脑上吧!

实用WordPress后台MySQL操作命令

为所有文章和页面添加自定义字段
这段代码可以为WordPress数据库内所有文章和页面添加一个自定义字段。 你需要做的就是把代码中的‘UniversalCutomField‘替换成你需要的文字,然后把‘MyValue‘改成需要的值。

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
 SELECT ID AS post_id, 'UniversalCustomField'
 AS meta_key 'MyValue AS meta_value FROM wp_postsWHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');

如果只需要为文章添加自定义字段,可以使用下面这段代码:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
 SELECT ID AS post_id, 'UniversalCustomField'
 AS meta_key 'MyValue AS meta_value
 FROM wp_posts WHERE ID NOT IN
 (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')`` AND post_type = 'post';

如果只需要为页面添加自定义字段,可以使用下面这段代码:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
 SELECT ID AS post_id, 'UniversalCustomField'
 AS meta_key 'MyValue AS meta_value
 FROM wp_posts WHERE ID NOT IN
 (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')AND `post_type` = 'page';

删除文章meta数据
当你安装或删除插件时,系统通过文章meta标签存储数据。 插件被删除后,数据依然会存留在post_meta表中,当然这时你已经不再需要这些数据,完全可以删除之。 记住在运行查询前把代码里的‘YourMetaKey‘替换成你需要的相应值。

DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';

查找无用标签
如果你在WordPress数据库里执行查询删除旧文章,和之前删除插件时的情况一样,文章所属标签会留在数据库里,并且还会出现在标签列表/标签云里。 下面的查询可以帮你找出无用的标签。

SELECT * From wp_terms wtINNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;

批量删除垃圾评论
执行以下SQL命令:

DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';

批量删除所有未审核评论
这个SQL查询会删除你的网站上所有未审核评论,不影响已审核评论。

DELETE FROM wp_comments WHERE comment_approved = 0

禁止评论较早文章
指定comment_status的值为open、closed或registered_only。
此外还需要设置日期(修改代码中的2010-01-01):

UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';

停用/激活trackback与pingback
指定comment_status的值为open、closed或registered_only。
向所有用户激活pingbacks/trackbacks:

UPDATE wp_posts SET ping_status = 'open';

向所有用户禁用pingbacks/trackbacks:

UPDATE wp_posts SET ping_status = 'closed';

激活/停用某一日期前的Pingbacks & Trackbacks
指定ping_status的值为open、closed或registered_only。
此外还需要设置日期(修改代码中的2010-01-01):

UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';

删除特定URL的评论
当你发现很多垃圾评论都带有相同的URL链接,可以利用下面的查询一次性删除这些评论。%表示含有“%”符号内字符串的所有URL都将被删除。

DELETE from wp_comments WHERE comment_author_url LIKE "%nastyspamurl%" ;

识别并删除“X”天前的文章
查找“X”天前的所有文章(注意把X替换成相应数值):

SELECT * FROM `wp_posts` WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X

删除“X”天前的所有文章:

DELETE FROM `wp_posts` WHERE `post_type` = 'post'AND DATEDIFF(NOW(), `post_date`) > X

删除不需要的短代码
当你决定不再使用短代码时,它们不会自动消失。你可以用一个简单的SQL查询命令删除所有不需要的短代码。 把“tweet”替换成相应短代码名称:

UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;

将文章转为页面
依然只要通过PHPMyAdmin运行一个SQL查询就可以搞定:

UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'

将页面转换成文章:

UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'

更改所有文章上的作者属性
首先通过下面的SQL命令检索作者的ID:

SELECT ID, display_name FROM wp_users;

成功获取该作者的新旧ID后,插入以下命令,记住用新作者ID替换NEW_AUTHOR_ID,旧作者ID替换OLD_AUTHOR_ID。

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

批量删除文章修订历史
文章修订历史保存可以很实用,也可以很让人烦恼。 你可以手动删除修订历史,也可以利用SQL查询给自己节省时间。

DELETE FROM wp_posts WHERE post_type = "revision";

停用/激活所有WordPress插件
激活某个插件后发现无法登录WordPress管理面板了,试试下面的查询命令吧,它会立即禁用所有插件,让你重新登录。

UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';

更改WordPress网站的目标URL
把WordPress博客(模板文件、上传内容&数据库)从一台服务器移到另一台服务器后,接下来你需要告诉WordPress你的新博客地址。
使用以下命令时,注意将http://www.old-site.com换成你的原URL,http://blog.doucube.com换成新URL地址。
首先:

UPDATE wp_options
SET option_value = replace(option_value, 'http://www.old-site.com', 'http://hjyl.org')
WHERE option_name = 'home' OR option_name = 'siteurl';

然后利用下面的命令更改wp_posts里的URL:

UPDATE wp_posts SET guid = replace(guid, 'http://www.old-site.com','http://hjyl.org);

最后,搜索文章内容以确保新URL链接与原链接没有弄混:

UPDATE wp_posts SET post_content = replace(post_content, ' http://www.old-site.com ', ' http://hjyl.org ');

更改默认用户名Admin
把其中的YourNewUsername替换成新用户名。

UPDATE wp_users SET user_login = 'YourNewUsername' WHERE user_login = 'Admin';

手动重置WordPress密码
如果你是你的WordPress网站上的唯一作者,并且你没有修改默认用户名, 这时你可以用下面的SQL查询来重置密码(把其中的PASSWORD换成新密码):

UPDATE `wordpress`.`wp_users` SET `user_pass` = MD5('PASSWORD')
WHERE `wp_users`.`user_login` =`admin` LIMIT 1;

搜索并替换文章内容
OriginalText换成被替换内容,ReplacedText换成目标内容:

UPDATE wp_posts SET `post_content` = REPLACE (`post_content`, 'OriginalText','ReplacedText');

更改图片URL
下面的SQL命令可以帮你修改图片路径:

UPDATE wp_postsSET post_content = REPLACE (post_content, 'src=”http://www.oldurl.com', 'src=”http://hjyl.org');

Nginx下解决 https跳转出现400 Bad Request

错误:

400 Bad Request: The plain HTTP request was sent to HTTPS port

因为/usr/local/nginx/conf/nginx.conf 配置中会 include fcgi.conf
所以我们去修改fcgi.conf添加一个HTTPS的参数

[root@*** ~]# vi /usr/local/nginx/conf/fcgi.conf
           
fastcgi_param  HTTPS $fastcgi_https;

再修改域名对应的conf文件,在最上面加入如下代码:

map $scheme $fastcgi_https {
    default off;
    https on;
    }

记得不要放到server里面 ,否则会报错

就是说上面这段代码完了之后才是server{…}的section。

 

保存退出,然后运行

/usr/local/nginx/sbin/nginx -t

检查一下有没有错误

 

然后/root/lnmp restart

转自http://yywudi.info/nginx-https-400-bad-request-solution/

—————

此为记录,还没试过这种情况!

jQuery始终显示(随页面滚动)的内容

jQuery(window).scroll(function() {
    if(jQuery("#content").find("#scroller_anchor").length > 0){
        var scroller_anchor = jQuery("#scroller_anchor").offset().top;
        if (jQuery(this).scrollTop() >= scroller_anchor && jQuery('.scroller').css('position') != 'fixed') {
            jQuery('.scroller').css({
                'position': 'fixed',
                'margin-top': '0'
            });
        jQuery("#scroller_anchor").css('height', '36px');
        } else if (jQuery(this).scrollTop() < scroller_anchor && jQuery('.scroller').css('position') != 'relative') {
            jQuery("#scroller_anchor").css('height', '0px');
            jQuery(".scroller").css({
                'margin-top': '10px',
                'position': 'relative'
            });
        }
    }
});

上面用到的完整的html代码如下:

......

至于具体的css,请自己根据需要设定吧。

转自http://axiu.me/learning_notes/fixed_block/

抓取优酷土豆新浪等网站视频缩略图

常常看到优酷等网站本身或者给其他网站定制的内容中出现视频缩略图,但是一番搜索之后发现优酷本身好像没有开放类似的接口给普通用户。所以这个问题就被搁置下来了。最近有客户需要大量使用视频,而且是第三方的视频网站,并且在页面中也要应用视频截图。所以一番摸索之后发现有个好东西:视频抓取工具。

原作者页面视频抓取工具

演示地址

实际使用效果

使用方法

require_once “VideoUrlParser.class.php”;
$url = “http://v.youku.com/v_show/id_XMjkwMzc0Njg4.html”;
$info = VedioUrlParser::parse($url);

之后,只需要在合适的地方输出$info就可以了。

应用示例

由于不能根据直接输入的frame视频框架来获取截图,因此必须显式地提供视频播放地址。这里我提供一个思路:
为需要的文章类型添加一个meta box(把以下代码扔functions.php里)

ID, 'videourl', true );
?>
    视频输入播放地址:
    
        
            
        
    

接着,就可以在后台看到这样的meta box

输入你想用的视频缩略图,然后在前台显示即可(我是写在了文章的主循环内)

";
}?>

info含有的几个值,分别是img(用于视频缩略图),title(视频标题),url(地址),swf(视频swf播放地址)。我只用到了img和swf地址。具体的可以根据自己的需要进行调整。

感谢原作者。

转自http://axiu.me/learning_notes/get_video_thumb_from_videosites/

CSS兼容性技巧整理 – 从IE6-IE9 火狐谷歌浏览器兼容

本文收集整理了IE7,6与Fireofx的CSS兼容性处理技巧,供大家参考。

CSS兼容常用技巧

请尽量用xhtml格式写代码,而且DOCTYPE影响 CSS 处理,作为W3C标准,一定要加DOCTYPE声明。

1.div的垂直居中问题

vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行

2. margin加倍的问题

设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline;

例如:
相应的css为
#imfloat{
float:left;
margin:5px;
display:inline;}

3.浮动ie产生的双倍距离

#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略}

这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);

#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的效果 diplay:table;

4 IE与CSS宽度和CSS高度的问题div css技巧

IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。

比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:

#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}

5.页面的最小宽度

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div> 放到<body> 标签下,然后为div指定一个类,然后CSS这样设计:

#container{ min-width: 600px; width:expression_r(document.body.clientWidth < 600? “600px”: “auto” );}

第一个min-width是正常的;css制作但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。

6.DIV浮动IE文本产生3象素的bug

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.

#box{ float:left; width:800px;}
#left{ float:left; width:50%;}
#right{ width:50%;}
*html #left{ margin-right:-3px; //这句是关键}

</div>

</div>

7.IE捉迷藏的问题

当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。

有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。解决办法:对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽量简单。

8.float的div闭合;清除浮动;自适应高度

①例如:<#div id=”floatA” ><#div id=”floatB” ><#div id=”NOTfloatC” >这里的NOTfloatC并不希望继续平移,而是希望往下排。(其中floatA、floatB的属性已经设置为float:left;)

这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。在 <#div class=”floatB”> <#div class=”NOTfloatC”>之间加上 <#div class=”clear”>这个div一定要注意位置,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。并且将clear这种样式定义为为如下即可: .clear{ clear:both;}

②作为外部 wrapper 的 div 不要定死高度,div css制作为了让高度能自动适应,要在wrapper里面加上overflow:hidden; 当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。
例如某一个wrapper如下定义:

.colwrapper{ overflow:hidden; zoom:1; margin:5px auto;}

③对于排版,我们用得最多的css描述可能就是float:left.有的时候我们需要在n栏的float div后面做一个统一的背景,譬如:

</div>

</div>

</div>

比如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而page居然保存高度不变,问题来了css 制作,原因在于page不是float属性,而我们的page由于要居中,不能设置成 float,所以我们应该这样解决

</div>

</div>

</div>

再嵌入一个float left而宽度是100%的DIV解决之道。

④万能float 闭合(非常重要!)

关于 clear CSS float 的原理可参见 [How To Clear Floats Without Structural Markup],将以下代码加入Global CSS 中,给需要闭合的div加上 class=”clearfix” 即可,屡试不爽.

.clearfix:after { content:”.”; display:block; height:0; clear:both; visibility:hidden; }
.clearfix { display:inline-block; }

.clearfix {display:block;}

或者这样设置:.hackbox{ display:table; //将对象作为块元素级的表格显示}

9.高度不能自适应

高度不能自适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用margin 或paddign 时。

例:

#box {background-color:#eee; }
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }

p对象中的内容</p>

解决技巧:在P对象上下各加2个空的div对象CSS代码:.1{height:0px;overflow:hidden;}或者为DIV加上border属性。

10 .div+css之IE6下为什么图片下有空隙产生

解决这个BUG的技巧也有很多,可以是改变html的排版,或者设置img 为display:block 或者设置vertical-align 属性为vertical-align:top

bottom  middle  text-bottom 都可以解决.

11.如何对齐文本与文本输入框

加上 vertical-align:middle;

12.web标准中定义id与class区别吗

(1).web标准中是不容许重复ID的,比如 div id=”aa” 不容许重复2次,而CSS class定义的是类,理论上可以无限重复, 这样需要多次引用的定义便可以使用他.

(2).属性的优先级问题

CSS ID的优先级要高于class,看上面的例子

(3).方便JS等客户端脚本,如果在页面中要对某个对象进行脚本操作,那么可以给他定义一个ID,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个ID来得简单。

13. LI中内容超过长度后以省略号显示的技巧

此技巧适用与IE与OP浏览器

14.为什么web标准中IE无法设置滚动条颜色了

解决办法是将body换成html

Firefox与IE的CSS兼容CSS HACK技巧

1. Div居中问题

div设置 margin-left, margin-right 为 auto 时已经居中,IE 不行,IE需要设定body居中,首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。

2.CSS 链接(a标签)的边框与背景

a链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。

3.超链接访问过后hover样式就不出现的问题

被点击访问过的超链接样式不在具有hover和active了,很多人应该都遇到过这个问题,解决技巧是改变CSS属性的排列顺序: L-V-H-A

Code:

4. 游标手指cursor

cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

5.UL的padding与margin

ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题

6. FORM标签

这个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和 padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了.

7. BOX模型解释不一致问题

在FF和IE中的BOX模型解释不一致导致相差2px解决技巧:div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反, important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:

div{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写 margin:xx px!important;#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0}
#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width :500px; //for ie6.0-}

8.属性选择器(这个不能算是兼容,是隐藏css的一个bug)

p[id]{}div[id]{}

这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的.

9.最狠的手段 – !important

如果实在没有办法解决一些细节问题,可以用这个技巧.FF对于”!important”会自动优先解析,然而IE则会忽略.如下

.tabd1{
background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important;
background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; }

值得注意的是,一定要将xxxx !important 这句放置在另一句之上。

10.IE,FF的默认值问题

或许你一直在抱怨为什么要专门为IE和FF写不同的CSS,为什么IE这样让人头疼,然后一边写css,一边咒骂那个可恶的 M$ IE.其实对于css的标准支持方面,IE并没有我们想象的那么可恶,关键在于IE和FF的默认值不一样而已,掌握了这个技巧,你会发现写出兼容FF和 IE的css并不是那么困难,或许对于简单的css,你完全可以不用”!important”这个东西了。

我们都知道,浏览器在显示网页的时候,都会根据网页的css样式表来决定如何显示,但是我们在样式表中未必会将所有的元素都进行了具体的描述,当然也没有必要那么做,所以对于那些没有描述的属性,浏览器将采用内置默认的方式来进行显示,譬如文字,如果你没有在css中指定颜色,那么浏览器将采用黑色或者系统颜色来显示,div或者其他元素的背景,如果在css中没有被指定,浏览器则将其设置为白色或者透明,等等其他未定义的样式均如此。所以有很多东西出现 FF和IE显示不一样的根本原因在于它们的默认显示不一样,而这个默认样式该如何显示我知道在w3中有没有对应的标准来进行规定,因此对于这点也就别去怪罪IE了。

11.为什么FF下文本无法撑开容器的高度

标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?办法就是去掉height设置min- height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义:

{
height:auto!important;
height:200px;
min-height:200px;
}

12.FireFox下如何使连续长字段自动换行

众所周知IE中直接使用 word-wrap:break-word 就可以了, FF中我们使用JS插入
的技巧来解决

aaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

function toBreakWord(el, intLen){
var ōbj=document.getElementByIdx_x_xx_x_x(el);
var strContent=obj.innerHTML;
var strTemp=””;
while(strContent.length>intLen){
strTemp+=strContent.substr(0,intLen)+”
“;
strContent=strContent.substr(intLen,strContent.length);
}
strTemp+=”
“+strContent;
obj.innerHTML=strTemp;
}
if(document.getElementByIdx_x_xx_x_x && !document.all) toBreakWord(“ff”, 37);

13.为什么IE6下容器的宽度和FF解释不同?

问题的差别在于容器的整体宽度有没有将边框(border)的宽度算在其内,这里IE6解释为200PX ,而FF则解释为220PX,那究竟是怎么导致的问题呢?大家把容器顶部的xml去掉就会发现原来问题出在这,顶部的申明触发了IE的qurks mode。

让FireFox与IE兼容</div>

IE7.0对CSS的支持又有新问题,解决如下。

第一种,CSS HACK

Bpx;
_height:20px;

注意顺序。

下面这样也属于div CSS HACK,不过没有上面这样简洁。

#example { color: #333; }
* html #example { color: #666; }
*+html #example { color: #999; }

第二种,是使用IE专用的条件CSS注释

第三种,css filter的办法,以下是从国外网站翻译过来的。

新建一个css样式如下:

#item {
width: 200px;
height: 200px;
background: red;
}

新建一个div,并使用前面定义的css的样式:

some text here</div>

在body表现这里加入lang属性,中文为zh:

现在对div元素再定义一个样式:

*:lang(en) #item{
background:green !important;
}

转自http://www.lyove.com/knowledge/775.html

为WordPress添加实时显示的Gravatar头像

把这个效果加入Wordpress也不费什么事,仅仅需要四步走:

1、打开主题的comments.php文件,在适当的位置,如我的主题是下面代码的上方:

加入下面的代码:

?s=48&d=identicon&r=G" alt="gravatar" height="48" width="48" />

PS:上面代码中的48可以修改为你想要的Gravatar头像的大小尺寸。

2、接下来,同样是在comments.php中,拉到最后一个输入框(input标签)的位置(这个位置是最佳的),也就是:

在这段代码的下面,加入:




这是关键!

PS:上面代码中的48,同样改成你想要的Gravatar头像的大小尺寸。

3、下载js-md5.js,并把它上传到主题文件夹中。

4、这里就已经完成了!

转自http://wanwp.com/tips-tricks/real-time-gravatar-for-wordpress/