解决 IE6 position:fixed 固定定位问题

就像你所遇到的问题一样, IE6 有太多的 bug 让制作网页的人头疼。这篇文章介绍的是介绍我的如何解决 IE6 不支持 position:fixed; 属性的办法

ie6-position-fixed

 

关于 position:fixed; 属性

生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。

position:fixed; 可以让网页上的某个元素固定在一个绝对的位置,即使拉动滚动条位置也不发生变化。(在 LOO2K 博客右下角的那个置顶的小按钮就是用了这个 CSS 属性实现的)

一般的 position:fixed; 实现方法

以我的博客为例,在右下角<div id="top">...</div>这个 HTML 元素使用的 CSS 代码如下:

#top{
    position:fixed;
    bottom:0;
    right:20px;
}

实现让<div id="top">...</div>元素固定在浏览器的底部和距离右边的20个像素。

在 IE6 中实现 position:fixed; 的办法

刚刚提过,在 IE6 中是不能直接使用 position:fixed; 。你需要一些 CSS Hack 来解决它。(当然,IE6 的问题也不仅仅 position:fixed;)

相同的还是让 <div id="top">...</div> 元素固定在浏览器的底部和距离右边的20个像素,这次的代码是:

#top{
    position:fixed;
    _position:absolute;
    bottom:0;
    right:20px;
    _bottom:auto;
    _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}

right 跟 left 属性可以用绝对定位的办法解决,而 top 跟 bottom 就需要用上面的表达式来实现。其中在_position:absolute;中的_符号只有 IE6 才能识别,目的是为了区分其他浏览器

上面的只是一个例子,下面的才是最重要的代码片段:

使元素固定在浏览器的顶部
#top{
    _position:absolute;
    _bottom:auto;
    _top:expression(eval(document.documentElement.scrollTop));
}

使元素固定在浏览器的底部

#top{
    _position:absolute;
    _bottom:auto;
    _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}

这两段代码只能实现在最底部跟最顶部,你可以使用 _margin-top:10px; 或者 _margin-bottom:10px;修改其中的数值控制元素的位置。

position:fixed; 闪动问题

现在,问题还没有完全解决。在用了上面的办法后,你会发现:被固定定位的元素在滚动滚动条的时候会闪动。解决闪动问题的办法是在 CSS 文件中加入:

*html{
    background-image:url(about:blank);
    background-attachment:fixed;
}

其中 * 是给 IE6 识别的。

到此,IE6 的 position:fixed; 问题已经被解决了。现在 LOO2K 这个博客上的固定定位就是使用的这个办法解决 IE6 固定定位问题的。

 

解决Dreamweaver中文定位问题(光标位置不对/选择代码时对不准/光标偏移)

最近开始重新学PHP。然后发现Dreamweaver中用鼠标选择代码的时候,光标总是对不准。具体就是,在代码视图中,如果有中文,鼠标点击时,光标的落位总是不准确,总要往前偏位几个字符,即光标偏位了。其实以前也遇到这种情况,一直不知道是怎么回事。

刚才百度了一下,解决方法如下:

在首选项中选择字体栏,把Unicode的字体统一设置为宋体/新宋体。问题解决。

Dreamweaver

据说可能的原因是DW对中文的支持不好。我们知道,UTF8中,中文应该是占2个字符的。但是这里DW可能把中英文统一作1个字符处理了。导致光标偏移。

struts2自定义404错误页面

最近服务器后台出现一些异常,问题是客户访问一个该网站下不存在的action,为了给客户一个友好的界面提示以及减小服务器端日志文件的内容。就在struts2下进行了如下配置:
在struts.xml里的package下添加:

<default-action-ref name="pagenotfound"></default-action-ref>  
<action name="pagenotfound">  
    <result>/404.jsp</result>  
</action>

 

当然struts2只会处理用户访问不存在的action,当用户访问jsp或者html时,是不会处理的。
这样还要在项目的web.xml下添加:

<package name="404" extends="struts-default">
	<default-action-ref name="notFound" />
	<action name="notFound">
		<result>/404.jsp</result>
	</action>
</package>

 

让scroll事件在滚动条停止时响应

用过scroll事件的人都知道,在每次拖动滚动条的时候会相应的事件会相应多次,而在大多数情况下我们都只希望它在滚动条停止滚动的时候 响应。经过多次测试,终于发现了一个比较好的解决方案,那就是通过setTimeout,给scroll加个延迟。例如用jQuery为页面加入 scroll事件,可以这样写:

var timeout = false; 
    $(window).scroll(function(){ 
        if (timeout){clearTimeout(timeout);} 
        timeout = setTimeout(function(){ 
            //do something
    },100);
});

 

CentOS 6 时间,时区,设置修改及时间同步

显示时区
date –help 获取帮助
date -R
date +%z
上面两个命令都可
[root@localhost ~]# date -R; date +%z
Fri, 19 Oct 2012 23:34:27 +0800
+0800

主要就是后面的+0800,东八区

修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

时区的信息存在/usr/share/zoneinfo/下面,本机的时区信息存在/etc/localtime,利用tab键技巧,可以任意修改时区
tzselect,互动式命令,不过用了好象不太行,还是用上面的吧。

二、时间
概念:Linux时间有两个
系统时间:也叫软件时间(sys), 1970年1月1日到当前时间的秒数
BOIS时间:也叫硬件时间(hc)
显示时间
[root@localhost ~]# date;hwclock -r
2012年 10月 19日 星期五 23:39:44 CST
2012年10月19日 星期五 23时39分45秒  -0.317993 seconds

设置时间
1、date -s
[root@localhost ~]# date;hwclock -r
2012年 10月 19日 星期五 23:39:44 CST
2012年10月19日 星期五 23时39分45秒  -0.317993 seconds

没有网络的情况下可以用这个
date -s 20121019
date -s 23:40:00

2、ntpdate
ntpdate time.windows.com && hwclock -w
连网更新时间,如果成功,将系统时间,写入BOIS
hwclock -w 或 hwclock –systohc
可以做到crontab里

3、启动ntpd服务,开启后2就不能用了。
先用ntpdate更新一下,确保时间不至于差别太大
rpm -qa | grep ntp #查询一下可安装了
chkconfig –list | grep ntp #看下服务情况
chkconifg ntpd on
service ntpd start 或/etc/init.d/ntpd start
必要的话,设置一下/etc/ntp.conf,再把服务reload一下。
ntp的知识参考一下鸟哥的服务器篇

延安城管暴力对待美利达占道一事,客观发表一下自己的意见.

无意中看到视频, 最初看到还是很平和的,

一开始我还没看到后面的时候先看到了评论老是骂,

心里想, 是不是又是那些断章取义的视频又或者只会隔岸观火的无知网友在评论..?

直到3分02秒, 我惊呆了,

城管的行为, 实在太夸张了.. 那完全不是一个正常人能做得出的行为..!

后来根据视频提供的线索搜索, 找到了几篇关联的文章, 自己看…

http://www.pingxiaow.com/gundong/index.php?m=content&c=index&a=show&catid=7&id=43863&page=1000

http://roll.sohu.com/20130610/n378548929.shtml

或者大家直接搜索”延安城管”.

发表一下我的看法:

城管有存在的必要, 他们维护城市的环境是应该的,

谁也不愿意看到自己生活在一个脏乱差的环境当中,

所以合理整治很重要.

之前看过很多视频, 大家只要看到城管的视频就骂, 不动脑袋开口就骂,不站在客观的角度去思考, 完全就是种sb行为,  这也是目前绝大部分网友的脑残表现, 所以我的第一反应是会不会又是那些断章取义的视频..?

直到我看到3分02秒的时候, 我就什么都明白了.

在这个视频中, 那个胖城管被解释为临时工, 估计也是了.

正常来说, 只要有文化的人, 绝对不会做出这样的双腿飞蹬的行为,

因为只要学过数理化, 人很正常会意识到这一行为是会致命的, 不管你的借口是在非常愤怒的情况之下, 很明显那是一个小混混的行为.

可想而知, 没文化, 真可怕.

无论怎样, 那样的城管行为绝对是不可取的, 希望是个别, 而且希望zf能够负责任一点, 不要老把责任推卸到临时工身上, 因为毕竟人事你挑选并且聘用回来的, 这个责任, 你怎样推也是推卸不了的.

最后补充一句: 适当的打人是可以的, 也是可以理解的, 但是视频中的那一脚, 是任何人都不能够原谅的.

在vps上搭建linux+apache+wordpress,解决内存占用无限大的问题.

本来我的服务器上就只有 linux+mysql+lighttpd+tomcat,

后来因为想搭建个自己的博客, 所以在服务器中装上了apache+php.

在此之前, 我768mb内存只占用400+M而已, 后来成功装上了wordpress后,

发现内存占用异常的高, 服务器的内存都没了, 甚至影响到运行在tomcat容器上的客户网站运作

后来经过各种排除, 得出 wordpress 运作的情况之下, 每次刷新wordpress, 内存就增加10-20MB, 直到爆满.

后来搜索各种资料, 在wordpress群里还被人笑我的垃圾openVPS的服务器, 说啥的什么xen之类的啦, 说我的垃圾还把问题赖在wordpress上.

总之, 凭着一贯解决问题的经验告诉我, 不会是这个原因.

中间很多经历省略, 反正最终找到原因是apache的配置问题,

我的apache2.4默认配置文件中没有限制MaxConnectionsPerChild导致的,

于是在conf.cfg中添加 MaxConnectionsPerChild = 10 后发现问题解决了.

当然, MaxConnectionsPerChild 要根据个人的需要而设定,

反正我 MaxConnectionsPerChild = 100 的时候, apache的内存就占200多M…

自己看着办吧…

后来我再在群上说不是那个笑我的vps的人所说的问题, 原来只是 MaxConnectionsPerChild 没有限制而已, 那个当事人立刻哑口无言…

另外说一下题外话:

我一贯都不喜欢一些人, 总以为自己懂得很多, 然后就妄下定论并把自己定位的高高在上.

反正我做人是这样, 想问题, 必须充分考虑各种可能性, 不在自己不清楚具体状况的时候妄下定论, 这种情况下, 其实多加几个字 “在我的认知下” 会看得出一个人平时思考的深度, 当然, 装逼的除外.

mysql无法启动,提示”ERROR! The server quit without updating PID file (/var/lib/mysql/sway.pro.pid).”

某次重启后, 发现再也不能启动mysql服务器了.

使用 service mysql restart 指令, 却提示:

[root@sway ~]# service mysql restart
ERROR! MySQL server PID file could not be found!
Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/sway.pro.pid).

回想了一下刚刚的操作, 我曾经不小心把在系统根目录使用的递归权限设置指令 chown -R virtual / , 致使出现了一连串的问题(本来我是想添加所有文件夹的修改权限给virtual的,没想到是全部改成了权限只属于virtual一人了), 当我重新使用 chown -R root / 指令后, 发现基本恢复正常了. 后来经历了一次重启, 发现我服务器的网站提示数据库连接出错, 于是上网搜索了一堆资料, 一开始还以为是什么僵尸进程导致的, 后来继续找, 发现是权限问题, 估计是mysql丢失了原本是属于他的文件权限了.

使用这个指令”chown -R mysql.mysql /var/lib/mysql”后, 再使用  service mysql start 指令, 一切正常..!

以下是我找到的原文记录:

现在又进行了如下操作:
mkdir /var/lib/mysql
chown -R mysql.mysql /var/lib/mysql

然后再运行mysqld_safe --user=mysql &

发现还是错误,立马进入/var/lib/mysql进行查看,发现文件夹里面的文件,不是lib文件,而是mysql数据库
发现问题,立马在mysqld_safe后面加上--basedir和--datadir目录,结果可以运行,而且一切正常

后修改mysql服务启动文件,修改basedir和datadir,结果启动发现sock出错。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

目前继续排错中。。。。

一到公司运行
/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql &
发现又出现错误了,NND

出自于: http://forum.ubuntu.org.cn/viewtopic.php?t=333605

修改文件目录的权限(chown chgrp)

linux下,每一个文件、每一个目录都有一个属主,并针对用户自己、用户所在组、其它所有帐号(组)分别设定读、写、执行三种权限。例如,我(假定是webusers组的floatboat帐户的拥有者)使用如下命令建立一个新的文件 touch mytestfile
然后我们使用ls -l mytestfile这一命令来查看这个文件的权限状态(关于ls命令,可以查阅本站的命令查询),可以得到如下的屏幕输出显示:
-rw-rw-r– 1 floatboat webusers 0 Feb 6 21:37 mytestfile
输出由空格分为9个部分,我们比较关心第一、三、四个字段,分别表示文件权限属性、文件所有者帐户、文件所属组。
◆使用chown命令修改文件的主人
当你新建立一个文件的时候,文件的所有者当然就是你了。这一事实只有超级用户(比如说root)才可以通过chown命令改变(例如 chown otheruser mytestfile,把mytestfile文件的属主改为otheruser)。普通用户不能把自己的文件“送”给别人,不然你把有特殊目的的程序给了root怎么办?:)
chown命令的用法比较简单。这里我先假设你现在拥有超级用户权限,那么你就可以使用如下命令将一个文件“送给”floatboat了:
chown floatboat /home/floatboat/thefileisrootcreate.txt (假定该文件是由root创建的)
修改一个目录的所有者也是类似的:
chown floatboat /home/newboat
当然,如果这个目录还有子目录及文件需要同时送给floatboat,chown也是支持-R参数的:
chown -R floatboat /home/newboat
如果你同时想修改文件/目录所属的组的话,你可以使用以下命令方便的达到目的:
chown -R floatboat.ftpusers /home/newboat
这样,不但文件主人得到了修改,文件所属的组也变成了ftpusers
◆ 修改文件的组属性
文件所属组你倒是可以改变,前提是:
1、你的超级用户。
2、你同时属于两个或两个以上的组。
两个条件你至少具备一个,你才能够把文件所属旧组变为新组。使用如下的命令将当前目录下所有html文件所属的组改为httpd:
chgrp httpd *.html
和chown命令一样,chgrp也可以使用-R参数对一个目录内的所有文件和子目录进行递归的修改组属性。
:你可以使用不带参数的groups命令查看自己属于哪个组。

close