页面伪装异步加载中...
关闭/显示侧边栏
返回首页 mail me! 订阅rss Follow me

像拼图一样设计布局网页。

当然,我说的前提是要去手写HTML 和 CSS.

像用DW那样用DIV拼出来的网页,我真的会很担心而且怀疑是否会在实际的浏览器中错位,这是我坚持一直不用Dreamweaver软件来设计网页的主要原因,虽然有人告诉我Dreamweaver在不停的新版本中都有改进,也有老师给我说,新的Dreamweaver将HTML文档和CSS样式文件结合的更紧密,但对那些在所见所得的环境下机器所生成的代码下,我依然不信任,而对自己手写的代码抱更大的好感。

当然还有一点,我们拼图的过程中要尽量少量的用到<table>,而大部分的布局框架都是用div来完成的。

当我们在开始拼图的时候,我们还需要准备和了解一些东西。

  • 你需要知道什么是CSS盒子模型,而且你需要知道position这个选择器。
  • 你得会在CSS文件的开头写上这么一句*{padding:0; margin:0, outline:0}
  • 当然还有一些会用到的,比如float,overflow等这些控制位置和内容的。
  • 布局的时候,你要习惯用div的background来代替 <img /> 标签。

这样一切就变的简单起来。

阅读全文>>>

让DIV居网页底端

我要将一个图片作为网站的底部,直接在body 的backgroud 中写成bottom 属性显然是达不到我的要求的,因为我的页面在浏览器高度比较高的情况下内容是无法撑满整个浏览器的,所以在body 的background 将图片写成bottom属性在这种情况下面会显示一片空白,像这样:

很容易看到页面下面是一片空白。
这个时候想到用一个层来让他浮动在底部来放置这张图片,但要适应浏览器高度让层在底部,所以CSS这样写。

1
2
3
4
5
6
7
8
#foot{
  width:100%;
  height:500px;
  position:absolute;
  top:100%;
  margin-top:-500px;
  background:url(footer.jpg) center bottom no-repeat;
}

刷新页面后,咋一看,好像已经得到了想要的效果:

阅读全文>>>

关于那个经典的指针冒泡法排序。

这是这学期C语言考试的最后一道程序设计题的题目,对一组数进行从小到大排序输出,要求操作数组使用指针。此题15分。

用久了PHP,还真对数组排序的算法变的生疏起来,还好记得原理,冒泡法排序难倒一些初学C语言的人,因为数组的操作比起前面的基本运算符操作复杂了不少,尤其还要使用指针这东西。冒泡法的原理很简单,就是从第一个开始,每相邻两个数开始比较,如果前面的数大于后面的数,则交换两个数的位置(针对从小到大排序),然后开始第二个和第三个进行比较,全部比较完毕后,这个时候会有个最大值放在最后,然后继续对N-1个数进行同样的操作,直到两次循环完毕。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
main()
{
 int a[10];
 int i,j,temp;
 int *p=a;
 printf("input:");
 for(i=0;i<10;i++)
  scanf("%d",p+i);
 for(i=1;i<10;i++)
  for(j=0;j<10-i;j++)
   if(*(p+j)>*(p+j+1))
   {temp=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=temp;}
 for(i=0;i<10;i++)
  printf("%4d",*(p+i));
 printf("\n");
}

win7(vista)下恢复Linux引导并设置默认启动Linux.

关于这个,在网上有很多的办法,有一个比较通用的办法便是手动编写boot.ini放在c盘文件夹,但网上往往给出了这个办法,但却不能设置默认启动linux。

在这里先废话一下重装了windows 7后恢复Linux引导的办法。

首先在网上下载grub4dos工具,把文件包中的 grldr 和 grldr.mbr 文件放到C盘(系统盘)根目录下,然后在根目录中新建文件 boot.ini 编写下面的内容:

[boot loader]
[operating systems]
c:\grldr.mbr=”Archlinux”

重起后你就可以看到了效果,这时候在启动菜单中多了一个Archlinux的菜单,并正确的引导进入你的Linux系统。

你也可以下载我已经编辑好的三个文件,直接解压放到C盘根目录即可。

点此下载

一般来说,这样便就可以了,但这里有一个不完美的地方,不能设置默认启动Linux ,即使在boot.ini中书写上defaut的代码。虽然大多数人或许用不到默认启动Linux,但对于我们这样主系统在Linux下的人来说,就比较麻烦了,每次开机的时候都要守到机器到选择启动菜单。

因为现在windows使用BCD来管理启动项,即使添加了boot.ini文件,但是在win7中系统启动选项中却依然只有windows7一个选项。

考虑到这点,我们便从BCD入手。

我们需要一个工具,easyBCD,软件安装好后,选择 Add/Remove Entries选项,在下面添加一个Linux的启动菜单。

设置如图,这个时候你可以重起启动系统试试,如果在新出现的Arch Linux菜单中,能正确的引导进入你的Linux系统的话,那么就可以不用再做其他的了,并且可以删除之前在C盘的的boot.ini grldr grldr.mbr文件。并在windows 默认启动选项中选择新添加的Arch Linux即可。

但如果你的情况和我一样,新添加的Arch Linux并不能正确的引导进入Linux系统的话,那便将c盘的grldr.mbr文件拷贝至C:/NST/文件目录下,并将之重命名替换之前目录下的NeoGrub.mbr文件。然后重起,若是能成功的进入Linux , 那么可以删除掉c盘根目录下的boot.ini文件。然后在windows启动设置中选择Arch Linux默认启动即可。

当然,有人或许会质疑,为什么不用Live CD来恢复Grub 让Linux下的Grub来接管启动设置,当然这是一个比较好的办法,但是考虑到这样的情况,windows每次重装时,都会强制性的写入mbr,只要我们将boot.ini grldr grldr.mbr三个文件备份,每次重装后拷贝到c盘即可,而且我长期处于手里没有任何CD 或者U盘工具的情况下,我可以通过硬盘来完成重装系统,恢复引导。况且,linux重装的可能性比较小,而windows的重装可能性,大家就都知道了。

ThinkPHP验证码制作

ThinkPHP中的image类中已经集成了验证码的制作,非常的方便。

使用方法如下:
首先在当前控制器中引用验证码:

1
2
3
4
5
6
7
8
9
10
11
12
function verify()
        {
                import('ORG.Util.Image');
                if(isset($_REQUEST['adv']))
                {
                        Image::showAdvVerify();
                }
                else
                {
                        Image::buildImageVerify();
                }
        }

这个时候我们就可以在模板中引用验证码了,但为了验证码不过期,我们在模板中加上一个刷新验证码的JS函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script type="text/javascript">
function $(id) {
        return document.getElementById(id);
}
function fleshVerify(){
//重载验证码
var timenow = new Date().getTime();
document.getElementById('verifyImg').src= '__URL__/verify/'+timenow;
}
</script>
 
 
 
<form method="post" name="form1" action="__URL__/writes">
请输入验证码:<input type="text" name="seccode" id="seccode" size="11"  /> 
<A HREF="javascript:fleshVerify()"><img SRC="__URL__/verify/" name="verifyImg" BORDER="0" id="verifyImg" title="如果您无法识别验证码,请点图片更换" /></a>
<input type="submit" name="Submit2" value="提交" />
</form>

当然最后,我们需要在提交表单内容后对首先对验证码进行判断:

1
2
3
4
5
6
7
public function writes()
        {
                $seccode=trim($_POST['seccode']);
                if(md5($seccode)!=Session::get('verify'))$this->error('验证码错误!!!');
 
       ........
}

到这里,整个验证码的判断过程就结束了。

Page 1 of 212