CSS Zen Garden

03:27

CSS Zen Garden
CSS设计者们休憩领地~

CSS no comments

Nginx是越来越盛行了

03:19

Nginx是越来越盛行了
豆瓣也加入行列了~

子网掩码

06:50

子网掩码 (subnet mask)又叫网络掩码, 地址掩码, 子网络遮罩, 它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码. 子网掩码不能单独存在, 它必须结合 IP 地址一起使用. 子网掩码只有一个作用, 就是将某个 IP 地址划分成网络地址和主机地址两部分.

IP 地址的结构

想理解什么是子网掩码, 就不能不了解 IP 地址的构成. 互联网是由许多小型网络构成的, 每个网络上都有许多主机, 这样便构成了一个有层次的结构. IP 地址在设计时就考虑到地址分配的层次特点, 将每个 IP 地址都分割成网络号和主机号两部分, 以便于 IP 地址的寻址操作.
IP 地址的网络号和主机号各是多少位呢?如果不指定, 就不知道哪些位是网络号, 哪些是主机号, 这就需要通过子网掩码来实现.
子网掩码的设定必须遵循一定的规则. 与 IP 地址相同, 子网掩码的长度也是 32 位, 左边是网络位, 用二进制数字 1表示; 右边是主机位, 用二进制数字 0 表示. 只有通过子网掩码, 才能表明一台主机所在的子网与其他子网的关系, 使网络正常工作.
子网掩码的术语是扩展的网络前缀码不是一个地址, 但是可以确定一个网络层地址哪一部分是网络号, 哪一部分是主机号, 1 的部分代表网络号, 掩码为 0 的部分代表主机号. 子网掩码的作用就是获取主机 IP 的网络地址信息, 用于区别主机通信不同情况, 由此选择不同路由. 其中:

  • A 类地址的默认子网掩码为 255.0.0.0
  • B 类地址的默认子网掩码为 255.255.0.0
  • C 类地址的默认子网掩码为: 255.255.255.0

子网和子网掩码的作用

子网的作用

使用子网是要解决只有一组 (A, B, C类) 地址但需要数个网络编码 (网络号) 的问题, 并不是解决 IP 地址不够用的问题, 因为使用子网反而能使用的 IP 地址会变少, 子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上 Internet, 但只申请到一组C类 IP 地址, 过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接 RemoteBridge 连接, 那便没有使用子网的问题.

子网掩码的作用

通过 IP 地址的二进制与子网掩码的二进制进行与运算, 确定某个设备的网络地址和主机号. 也就是说通过子网掩码分辨一个网络的网络部分和主机部分子网掩码一旦设置, 网络地址和主机地址就固定了.
子网一个最显著的特征就是具有子网掩码. 与 IP 地址相同, 子网掩码的长度也是 32 位, 也可以使用十进制的形式. 例如, 为二进制形式的子网掩码: 11111111111111111111111100000000, 采用十进制的形式为: 255.255.255.0.

子网掩码的概念

子网掩码是一个 32 位地址, 是与 IP 地址结合使用的一种技术. 它的主要作用有两个, 一是用于屏蔽 IP 地址的一部分以区别网络标识和主机标识, 并说明该 IP 地址是在局域网上, 还是在远程网上. 二是用于将一个大的 IP 网络划分为若干小的子网络.

确定子网掩码数

用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目. 在定义子网掩码前, 必须弄清楚本来使用的子网数和主机数目.
定义子网掩码的步骤为:

  • 1 确定哪些组地址归我们使用. 比如我们申请到的网络号为 210.73.a.b, 该网络地址为 C 类 IP 地址, 网络标识为 210.73.a, 主机标识为b.
  • 2 根据我们现在所需的子网数以及将来可能扩充到的子网数, 用宿主机的一些位来定义子网掩码. 比如我们现在需要 12 个子网, 将来可能需要 16 个. 用第四个字节的前四位确定子网掩码. 前四位都置为1 (即把第四字节的最后四位作为主e机位, 其实在这里有个简单的规律, 非网络位的前几位置1原网络就被分为2的几次方个网络, 这样原来网络就被分成了2的4次方16个子网) , 即第四个字节为 11110000, 这个数我们暂且称作新的二进制子网掩码.
  • 3 把对应初始网络的各个位都置为1, 即前三个字节都置为1, 第四个字节低四位置为0, 则子网掩码的间断二进制形式为: 11111111.11111111.11111111.11110000
  • 4 把这个数转化为间断十进制形式为: 255.255.255.240这个数为该网络的子网掩码.
A 利用子网数来计算

在求子网掩码之前必须先搞清楚要划分的子网数目, 以及每个子网内的所需主机数目.

  • a 将子网数目转化为二进制来表示.
  • b 取得该二进制的位数, 为 N.
  • c 取得该 IP 地址的类子网掩码, 将其主机地址部分的的前N位置 1 即得出该 IP 地址划分子网的子网掩码.

如欲将 B 类 IP 地址 168.195.0.0 划分成 27 个子网:

  • a 27=11011
  • b 该二进制为五位数, N = 5
  • c 将 B 类地址的子网掩码 255.255.0.0 的主机地址前 5 位置 1, 得到 255.255.248.0

即为划分成 27 个子网的B类 IP 地址 168.195.0.0的子网掩码.

B 利用主机数来计算
  • a 将主机数目转化为二进制来表示.
  • b 如果主机数小于或等于 254 (注意去掉保留的两个 IP 地址), 则取得该主机的二进制位数, 为 N, 这里肯定 N<8; 如果大于 254, 则 N>8, 这就是说主机地址将占据不止8位.
  • c 使用 255.255.255.255 来将该类 IP 地址的主机地址位数全部置 1, 然后从后向前的将 N 位全部置为 0, 即为子网掩码值.

如欲将 B 类 IP 地址 168.195.0.0 划分成若干子网, 每个子网内有主机 700 台:

  • a 700=1010111100
  • b 该二进制为十位数, N = 10
  • c 将该 B 类地址的子网掩码 255.255.0.0 的主机地址全部置 1, 得到 255.255.255.255, 然后再从后向前将后 10 位置 0, 即为: 11111111.11111111.11111100.00000000, 即 255.255.252.0 , 这就是该欲划分成主机为700台的B类 IP 地址 168.195.0.0的子网掩码.

IP 掩码的标注

A 无子网的标注法

对无子网的 IP 地址, 可写成主机号为 0 的掩码. 如 IP 地址 210.73.140.5, 掩码为 255.255.255.0, 也可以缺省掩码, 只写 IP 地址.

B 有子网的标注法

有子网时, 一定要二者配对出现. 以 C 类地址为例.
(以下一段没有指定掩码为 27 位, 在掩码为 27 位的情况下才成立~~)

  • I IP 地址中的前 3 个字节表示网络号, 后一个字节既表明子网号, 又说明主机号, 还说明两个 IP 地址是否属于同一个网段. 如果属于同一网络区间, 这两个地址间的信息交换就不通过路由器. 如果不属同一网络区间, 也就是子网号不同, 两个地址的信息交换就要通过路由器进行. 例如: 对于 IP 地址为 210.73.140.5 的主机来说, 其主机标识为 00000101, 对于 IP 地址为 210.73.140.16 的主机来说它的主机标识为 00010000, 以上两个主机标识的前面三位全是 000, 说明这两个 IP 地址在同一个网络区域中, 这两台主机在交换信息时不需要通过路由器进行. 210.73.60.1 的主机标识为 00000001, 210.73.60.252 的主机标识为 11111100, 这两个主机标识的前面三位 000 与 111 不同, 说明二者在不同的网络区域, 要交换信息需要通过路由器. 其子网上主机号各为 1 和 252.
  • II 掩码的功用是说明有子网和有几个子网, 但子网数只能表示为一个范围, 不能确切讲具体几个子网, 掩码不说明具体子网号, 有子网的掩码格式(对 C 类地址).
  • 子网掩码的表示方法

    子网掩码通常有以下 2 种格式的表示方法:

    • a 通过与 IP 地址格式相同的点分十进制表示, 如: 255.0.0.0 或 255.255.255.128.
    • b 在 IP 地址后加上/符号以及 1-32 的数字, 其中 1-32 的数字表示子网掩码中网络标识位的长度, 如: 192.168.1.1/24 的子网掩码也可以表示为 255.255.255.0.

    子网掩码和 IP 地址的关系

    注: 这讲的都是有内网
    子网掩码是用来判断任意两台计算机的 IP 地址是否属于同一子网络的根据. 最为简单的理解就是两台计算机各自的 IP 地址与子网掩码进行AND运算后, 如果得出的结果是相同的, 则说明这两台计算机是处于同一个子网络上的, 可以进行直接的通讯. 就这么简单.
    请看以下示例:
    运算演示之一

    IP 地址 192.168.0.1
    子网掩码 255.255.255.0
    AND运算 (AND运算法则: 1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0, 0 & 0 = 0)

    转化为二进制进行运算:

    IP 地址 11000000.10101000.00000000.00000001
    子网掩码 11111111.11111111.11111111.00000000
    AND运算 11000000.10101000.00000000.00000000
    转化为十进制 192.168.0.0

    运算演示之二

    IP 地址 192.168.0.254
    子网掩码 255.255.255.0
    转化为二进制进行运算
    IP 地址 11000000.10101000.00000000.11111110
    子网掩码 11111111.11111111.11111111.00000000
    AND运算 11000000.10101000.00000000.00000000
    转化为十进制 192.168.0.0

    运算演示之三

    IP 地址 192.168.0.4
    子网掩码 255.255.255.0
    转化为二进制进行运算
    IP 地址 11000000.10101000.00000000.00000100
    子网掩码 11111111.11111111.11111111.00000000
    AND运算 11000000.10101000.00000000.00000000
    转化为十进制 192.168.0.0

    通过以上对三组计算机 IP 地址与子网掩码的 AND 运算后, 我们可以看到它运算结果是一样的. 均为 192.168.0.0, 所以计算机就会把这三台计算机视为是同一子网络, 然后进行通讯的. 我现在单位使用的代理服务器, 内部网络就是这样规划的.

    也许又要问, 这样的子网掩码究竟有多少了 IP 地址可以用呢? 你可以这样算.
    根据上面我们可以看出, 局域网内部的 IP 地址是我们自己规定的 (当然和其他的 IP 地址是一样的), 这个是由子网掩码决定的通过对 255.255.255.0 的分析. 可得出: 前三位 IP 码由分配下来的数字就只能固定为 192.168.0, 所以就只剩下了最后的一位了, 那么显而易见了, IP 地址只能有 (2的8次方-2), 即256-2=254, 一般主机地址全为0或者1 (二进制) 有其特殊的作用.
      
    那么你可能要问了:如果我的子网掩码不是 255.255.255.0 呢? 你也可以这样做, 假设你的子网掩码是 255.255.128.0, 那么局域网内的 IP 地址的前两位已固定, 这样, 就可以按照下边的计算来看看同一个子网内到底能有多少台机器

    • A 十进制 128 = 二进制 1000 0000
    • B IP 要和子网掩码进行 AND 运算
    • C
      IP 地址 11000000.10101000.1*******.********
      子网掩码 11111111.11111111.10000000.00000000
      AND运算 11000000.10101000.10000000.00000000
      转化为十进制 192.168.128.0
    • D 可知我们内部网可用的 IP 地址为: 11000000.10101000.10000000.00000000 到 11000000.10101000.11111111.11111111 (也可以是: 11000000.10101000.00000000.00000000 到 11000000.10101000.01111111.11111111)
    • E 转化为十进制: 192 .168.128.0 到 192.168.255.255 (或者192.168.0.0到192.168.127.255)
    • F 0 和 255 通常作为网络的内部特殊用途. 通常不使用.
    • G 于是最后的结果如下, 所有可用的 IP 地址为:
      192.168.128.1-192.168.128.254
      192.168.129.1-192.168.129.254
      192.168.130.1-192.168.130.254
      192.168.131.1-192.168.131.254
      . . . . . . . . . . . . .
      192.168.139.1-192.168.139.254
      192.168.140.1-192.168.140.254
      192.168.141.1-192.168.141.254
      192.168.142.1-192.168.142.254
      192.168.143.1-192.168.143.254
      . . . . . . . . . . . . .
      192.168.254.1-192.168.254.254
      192.168.255.1-192.168.255.254
      
    • H 总数为(255-128+1)*(254-1+1) =128 * 254 = 32512
      子网内包含的机器数目应该是 2^n-2, 比如说上面的子网掩码是 255.255.128.0, 那么他的网络号是 17 位, 主机号是 15 位, 只要主机号不全是 0 或者 1 就是可以的, 所以 IP 地址是 192.168.192.0(11000000.10101000.11000000.00000000)也允许, 除掉全 0 全 1, 结果为 2^15-2=32766, 上面的落了好多地址
    • I 看看的结果是否正确
      a 设定 IP 地址为 192.168.128.1, Ping 192.168.129.233通过测试, 访问 http://192.168.129.233 可以显示出主页.
      b 设定 IP 地址为 192.168.255.254, Ping 192.168.255.254 通过测试, 访问 http://192.168.255.254 可以显示出主页.
    • J 结论: 以上证明我们的结论是对的

    现在就可以看子网中能有多少台机器了, 255.255.255.128, 分解, 11111111.11111111.11111111.10000000, 所以内部网络的 IP 地址只能是 xxxxxxxx.xxxxxxxx.xxxxxxxx.0??????? 到 xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111.

    Apache配置文件中文详解

    06:45

    #
    # 基于 NCSA 服务器的配置文件 由 Rob McCool 编写,龙子翻译
    #
    # Apache服务器主配置文件. 包括服务器指令的目录设置.
    # 详见 http://www.apache.org/docs/
    #
    # 请在理解用途的基础上阅读各指令。
    #
    # 除非用ResourceConfig或AccessConfig覆盖这儿的标识
    #
    配置标识由三个基本部分组成:

    • 作为一个整体来控制Apache服务器进程的标识 (the ‘global environment’)
    • 用于定义主(默认)服务器参数的标识。
    • 响应虚拟主机不能处理的请求。
      同时也提供所有虚拟主机的设置值。

    • 虚拟主机的设置。在一个Apache服务器进程中配置不同的IP地址和主机名

    #
    # 配置和日志文件名:指定服务器控制文件命名时,
    # 以 “/” (或 “drive:/” for Win32)开始,服务器将使用这些绝对路径。
    # 如果文件名不是以”/”开始的,预先考虑服务器根目录–
    # 因此 “logs/foo.log”,如果服务器根目录是”/usr/local/apache”,
    # 服务器将解释为 “/usr/local/apache/logs/foo.log”.
    #
    # 注: 指定的文件名需要用”/”代替”\”。
    # (例, “c:/apache” 代替 “c:\apache”).
    # 如果省略了驱动器名,默认使用Apache.exe所在的驱动器盘符
    # 建议指定盘符,以免混乱。
    #

    ### Section 1: Global Environment
    #当服务器响应主机头(header)信息时显示Apache的版本和操作系统名称

    ServerTokens OS
    

    #设置服务器的根目录

    ServerRoot "/etc/httpd"
    #ScoreBoardFile run/httpd.scoreboard
    

    #设置运行Apache时使用的PidFile的路径

    PidFile run/httpd.pid
    

    #若300秒后没有收到或送出任何数据就切断该连接

    Timeout 300
    

    #不使用保持连接的功能,即客户一次请求连接只能响应一个文件,建议用户将此参数的值设置为On,即允许使用保持连接的功能

    KeepAlive Off
    

    #在使用保持连接功能时,设置客户一次请求连接能响应文件的最大上限

    MaxKeepAliveRequests 100
    

    #在使用保持连接功能时,两个相邻的连接的时间间隔超过15秒,就切断连接

    KeepAliveTimeout 15
    

    ##
    ## Server-Pool Size Regulation (MPM specific)
    ##

    # prefork MPM
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which are kept spare
    # MaxSpareServers: maximum number of server processes which are kept spare
    # MaxClients: maximum number of server processes allowed to start
    # MaxRequestsPerChild: maximum number of requests a server process serves
    

    #设置使用Prefork MPM运行方式的参数,此运行方式是Red hat默认的方式

    <IfModule prefork.c>
    

    #设置服务器启动时运行的进程数

    StartServers 8
    

    #Apache在运行时会根据负载的轻重自动调整空闲子进程的数目
    #若存在低于5个空闲子进程,就创建一个新的子进程准备为客户提供服务

    MinSpareServers 5
    

    #若存在高于20个空闲子进程,就创建逐一删除子进程来提高系统性能

    MaxSpareServers 20
    

    #限制同一时间的连接数不能超过150

    MaxClients 150
    

    #限制每个子进程在结束处理请求之前能处理的连接请求为1000

    MaxRequestsPerChild 1000
    </IfModule>
    
    # worker MPM
    # StartServers: initial number of server processes to start
    

    #设置使用Worker MPM运行方式的参数

    <IfModule worker.c>
    StartServers 2
    MaxClients 150
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
    </IfModule>
    
    # perchild MPM
    # NumServers: constant number of server processes
    

    #设置使用perchild MPM运行方式的参数

    <IfModule perchild.c>
    NumServers 5
    StartThreads 5
    MinSpareThreads 5
    MaxSpareThreads 10
    MaxThreadsPerChild 20
    MaxRequestsPerChild 0
    </IfModule>
    

    #设置服务器的监听端口

    #Listen 12.34.56.78:80
    Listen 202.112.85.101:80
    

    #

    # Load config files from the config directory "/etc/httpd/conf.d".
    

    #将/etc/httpd/conf.d目录下所有以conf结尾的配置文件包含进来

    Include conf.d/*.conf
    

    #
    # Dynamic Shared Object (DSO) Support
    #动态加载模块(DSO)
    # Example:
    # LoadModule foo_module modules/mod_foo.so
    #

    LoadModule access_module modules/mod_access.so
    LoadModule auth_module modules/mod_auth.so
    LoadModule auth_anon_module modules/mod_auth_anon.so
    LoadModule auth_dbm_module modules/mod_auth_dbm.so
    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule include_module modules/mod_include.so
    LoadModule log_config_module modules/mod_log_config.so
    LoadModule env_module modules/mod_env.so
    LoadModule mime_magic_module modules/mod_mime_magic.so
    LoadModule cern_meta_module modules/mod_cern_meta.so
    LoadModule expires_module modules/mod_expires.so
    LoadModule headers_module modules/mod_headers.so
    LoadModule usertrack_module modules/mod_usertrack.so
    LoadModule unique_id_module modules/mod_unique_id.so
    LoadModule setenvif_module modules/mod_setenvif.so
    LoadModule mime_module modules/mod_mime.so
    LoadModule dav_module modules/mod_dav.so
    LoadModule status_module modules/mod_status.so
    LoadModule autoindex_module modules/mod_autoindex.so
    LoadModule asis_module modules/mod_asis.so
    LoadModule info_module modules/mod_info.so
    LoadModule cgi_module modules/mod_cgi.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule vhost_alias_module modules/mod_vhost_alias.so
    LoadModule negotiation_module modules/mod_negotiation.so
    LoadModule dir_module modules/mod_dir.so
    LoadModule imap_module modules/mod_imap.so
    LoadModule actions_module modules/mod_actions.so
    LoadModule speling_module modules/mod_speling.so
    LoadModule userdir_module modules/mod_userdir.so
    LoadModule alias_module modules/mod_alias.so
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    

    #当使用内置模块perfork.c时动态加载cgi_module

    <IFModule prefork.c>
    LoadModule cgi_module modules/mod_cgi.so
    </IfModule>
    #ExtendedStatus On
    

    ### Section 2: ‘Main’ server configuration
    #设置运行Apache服务器的用户和组

    User apache
    Group apache
    

    #设置Apache服务器管理员的E_mail地址

    ServerAdmin admin at astro dot bnu.edu.cn
    
    ServerName www.livingelsewhere.net
    

    #关闭此选项,当Apache服务器需要指向本身的连接时使用
    #serverName:port作为主机名,例如www.livingelsewhere.net:80
    #若打开此选项将使用www.livingelsewhere.net port 80作为主机名

    UseCanonicalName Off
    

    #设置根文档路径

    #DocumentRoot "/var/www/html"
    DocumentRoot "/home/httpd"
    

    #设置apache服务器根的访问权限

    <Directory />
    #允许符号链接跟随,访问不在本目录下的文件
    Options FollowSymLinks
    #禁止读取.htaccess配置文件的内容
    AllowOverride None
    </Directory>
    

    #设置根文档目录的访问权限

    <Directory "/home/httpd">
    #Indexes:当在目录中找不到DirectoryIndex列表中指定的文件
    #就生成当前目录的文件列表
    #FollowSymLinks允许符号链接跟随,访问不在本目录下的文件
    Options Indexes FollowSymLinks
    
    #禁止读取.htaccess配置文件的内容
    AllowOverride None
    
    #指定先执行Allow(允许)访问规则,在执行Deny访问规则
    Order allow,deny
    # Allow from 202.112.85.0/16
    #设置Allow(允许)访问规则,允许所有连接
    Allow from all
    # Deny from all
    </Directory>
    

    #对Apache服务器的根的访问不生成目录列表,同时指定错误输出页面

    <LocationMatch "^/$>
    Options -Indexes
    ErrorDocument 403 /error/noindex.ht
    

    #不允许每用户的服务器配置

    <IfModule mod_userdir.c>
    

    #不允许每用户的服务器配置

    UserDir disable
    

    ##基于安全考虑,禁止root用户使用自己的个人站点

    #UserDir disable root
    

    ##配置对每个用户web站点目录的设置

    #UserDir public_html
    </IfModule>
    

    #设置对每个用户web站点目录的访问权限

    #<Directory /home/*/public_html>
    # AllowOverride FileInfo AuthConfig Limit
    # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    # <Limit GET POST OPTIONS>
    # Order allow,deny
    # Allow from all
    # </Limit>
    # <LimitExcept GET POST OPTIONS>
    # Order deny,allow
    # Deny from all
    # </LimitExcept>
    #</Directory>
    

    #当访问服务器时,依次查找页面Index.html index.htm.var

    DirectoryIndex index.html index.html.var
    

    #指定保护目录配置文件的名称

    AccessFileName .htaccess
    

    #拒绝访问以.ht开头的文件,即保证.htaccess不被访问

    <Files ~ "^.ht">
    Order allow,deny
    Deny from all
    </Files>
    

    #指定负责处理MIME对应格式的配置文件的存放位置

    TypesConfig /etc/mime.types
    

    #指定默认的MIME文件类型为纯文本或HTML文件

    DefaultType text/plain
    

    #当mod_mime_magic.c模块被加载时,指定magic信息码配置文件的存放位置

    <IfModule mod_mime_magic.c>
    # MIMEMagicFile /usr/share/magic.mime
    MIMEMagicFile conf/magic
    </IfModule>
    

    #只记录连接Apache服务器的Ip地址,而不纪录主机名

    HostnameLookups Off
    

    #指定错误日志存放位置

    ErrorLog logs/error_log
    

    #指定记录的错误信息的详细等级为warn等级

    LogLevel warn
    

    #定义四中记录日志的格式

    LogFormat "%h %l %u %t "%r" %>s %b "%{ Referer }i" "%{ User-Agent }i"" combined
    LogFormat "%h %l %u %t "%r" %>s %b" common
    LogFormat "%{ Referer }i -> %U" referer
    LogFormat "%{ User-agent }i" agent
    

    #指定访问日志的纪录格式为combined(混合型),并指定访问日志存放位置

    # CustomLog logs/access_log common
    CustomLog logs/access_log combined
    #CustomLog logs/referer_log referer
    #CustomLog logs/agent_log agent
    #CustomLog logs/access_log combined
    

    #设置apache自己产生的页面中使用apache服务器版本的签名

    ServerSignature On
    

    #设置内容协商目录的访问别名

    Alias /icons/ "/var/www/icons/"
    

    #设置/var/www/icons/的访问权限

    <Directory "/var/www/icons">
    #MultiViews 使用内容协商功决定被发送的网页的性质
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    

    #设置网页邮件服务

    Alias /webmail "/usr/share/squirrelmail"
    
    <Directory "/usr/share/squirrelmail">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    

    #设置apache手册的访问别名

    Alias /manual "/var/www/manual"
    
    <Directory "/var/www/manual">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    

    #设置浏览器匹配

    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
    BrowserMatch "RealPlayer 4.0" force-response-1.0
    BrowserMatch "Java/1.0" force-response-1.0
    BrowserMatch "JDK/1.0" force-response-1.0
    BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
    BrowserMatch "^WebDrive" redirect-carefully
    

    #
    # Allow server status reports, with the URL of http:#servername/server-status
    # Change the “.your-domain.com” to match your domain to enable.
    #

    #<Location /server-status>
    # SetHandler server-status
    # Order deny,allow
    # Deny from all
    # Allow from .your-domain.com
    #</Location>
    

    #
    # Allow remote server configuration reports, with the URL of
    # http:#servername/server-info (requires that mod_info.c be loaded).
    # Change the “.your-domain.com” to match your domain to enable.
    #

    #<Location /server-info>
    # SetHandler server-info
    # Order deny,allow
    # Deny from all
    # Allow from .your-domain.com
    #</Location>
    

    #设置APache为代理服务器
    # Proxy Server directives. Uncomment the following lines to
    # enable the proxy server:
    #

    #<IfModule mod_proxy.c>
    #ProxyRequests On
    

    #

    #<Proxy *>
    # Order deny,allow
    # Deny from all
    # Allow from .your-domain.com
    #</Proxy>
    

    #
    # Enable/disable the handling of HTTP/1.1 “Via:” headers.
    # (“Full” adds the server version; “Block” removes all outgoing Via: headers)
    # Set to one of: Off | On | Full | Block
    #

    #ProxyVia On
    

    #
    # To enable the cache as well, edit and uncomment the following lines:
    # (no cacheing without CacheRoot)
    #

    #CacheRoot "/etc/httpd/proxy"
    #CacheSize 5
    #CacheGcInterval 4
    #CacheMaxExpire 24
    #CacheLastModifiedFactor 0.1
    #CacheDefaultExpire 1
    #NoCache a-domain.com another-domain.edu joes.garage-sale.com
    
    #</IfModule>
    # End of proxy directives.
    

    #设置虚拟主机
    ### Section 3: Virtual Hosts
    #
    # VirtualHost: If you want to maintain multiple domains/hostnames on your
    # machine you can setup VirtualHost containers for them. Most configurations
    # use only name-based virtual hosts so the server doesn’t need to worry about
    # IP addresses. This is indicated by the asterisks in the directives below.
    #
    # Please see the documentation at
    # <URL:http:#httpd.apache.org/docs-2.0/vhosts/>
    # for further details before you try to setup virtual hosts.
    #
    # You may use the command line option ‘-S’ to verify your virtual host
    # configuration.

    #
    # Use name-based virtual hosting.
    #指令监听本地计算机上所有的IP地址请求

    #NameVirtualHost *
    

    #
    # VirtualHost example:
    # Almost any Apache directive may go into a VirtualHost container.
    # The first VirtualHost section is used for requests without a known
    # server name.
    #

    #<VirtualHost *>
    #定义虚拟主机的设置,此设置将覆盖前面有的的相同指令
    # ServerAdmin webmaster at dummy-host dot example.com
    # DocumentRoot /www/docs/dummy-host.example.com
    # ServerName dummy-host.example.com
    # ErrorLog logs/dummy-host.example.com-error_log
    # CustomLog logs/dummy-host.example.com-access_log common
    #</VirtualHost>
    

    #指定DAV加锁数据库文件的存放位置

    <IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
    </IfModule>
    
    Alias /docs "/home/EMU/webmail/docs/"
    
    <Directory "/home/EMU/webmail/docs">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>
    
    <IfModule mod_dav_fs.c>
    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb
    </IfModule>
    

    #设置CGI目录的访问别名

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    

    #由于red hat中不使用worker MPM运行方式,所以不加载mod_cgid.c模块

    <IfModule mod_cgid.c>
    

    #
    # Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
    # for setting UNIX socket for communicating with cgid.
    #

    #Scriptsock logs/cgisock
    </IfModule>
    

    #设置CGI目录的访问权限

    <Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    </Directory>
    

    #重定向连接

    # Redirect permanent /foo http:#www.example.com/bar
    

    #设置自动生成目录列表的显示方式

    #FancyIndexing 对每种类型的文件前加上一个小图标以示区别
    #VersionSort 对同一个软件的多个版本进行排序
    #NameWidth=* 文件名字段自动适应当前目录下的最长文件名
    IndexOptions FancyIndexing VersionSort NameWidth=*
    

    #当使用IndexOptions FancyIndexing之后,配置下面的参数
    #用于告知服务器在遇到不同的文件类型或扩展名时采用MIME编码格式
    #辨别文件类型并显示相应的图标

    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
    
    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*
    

    #当使用IndexOptions FancyIndexing之后,配置下面的参数
    #用于告知服务器在遇到不同的文件类型或扩展名时采用所指定的格式
    #并显示相应的图标

    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core
    
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
    

    #当使用IndexOptions FancyIndexing之后,且无法识别文件类型时
    #显示此处定义的图标

    DefaultIcon /icons/unknown.gif
    

    #
    # AddDescription allows you to place a short description after a file in
    # server-generated indexes. These are only displayed for FancyIndexed
    # directories.
    # Format: AddDescription “description” filename
    #

    #AddDescription "GZIP compressed document" .gz
    #AddDescription "tar archive" .tar
    #AddDescription "GZIP compressed tar archive" .tgz
    

    #当服务器自动列出目录列表时,在所生成的页面之后显示readme.html的内容

    ReadmeName README.html
    

    #当服务器自动列出目录列表时,在所生成的页面之前显示header.html的内容

    HeaderName HEADER.html
    

    #
    # IndexIgnore is a set of filenames which directory indexing should ignore
    # and not include in the listing. Shell-style wildcarding is permitted.
    #
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

    #设置在线浏览用户可以实时解压缩.z .gz .tgz类型的文件
    #并非所有浏览器都支持

    AddEncoding x-compress Z
    AddEncoding x-gzip gz tgz
    

    #
    # DefaultLanguage nl
    # Danish (da) – Dutch (nl) – English (en) – Estonian (et)
    # French (fr) – German (de) – Greek-Modern (el)
    # Italian (it) – Norwegian (no) – Norwegian Nynorsk (nn) – Korean (kr)
    # Portugese (pt) – Luxembourgeois* (ltz)
    # Spanish (es) – Swedish (sv) – Catalan (ca) – Czech(cz)
    # Polish (pl) – Brazilian Portuguese (pt-br) – Japanese (ja)
    # Russian (ru) – Croatian (hr)
    #
    #设置网页内容的语言种类(浏览器要启用内容协商)
    #对中文网页,此项无实际意义

    AddLanguage da .dk
    AddLanguage nl .nl
    AddLanguage en .en
    AddLanguage et .et
    AddLanguage fr .fr
    AddLanguage de .de
    AddLanguage he .he
    AddLanguage el .el
    AddLanguage it .it
    AddLanguage ja .ja
    AddLanguage pl .po
    AddLanguage kr .kr
    AddLanguage pt .pt
    AddLanguage nn .nn
    AddLanguage no .no
    AddLanguage pt-br .pt-br
    AddLanguage ltz .ltz
    AddLanguage ca .ca
    AddLanguage es .es
    AddLanguage sv .se
    AddLanguage cz .cz
    AddLanguage ru .ru
    AddLanguage tw .tw
    AddLanguage zh-tw .tw
    AddLanguage hr .hr
    

    #当启用内容协商时,设置语言的先后顺序
    LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw

    #Prefer 当有多种语言可以匹配时,使用LanguagePriority 列表的第一项
    #Fallback 当没有语言可以匹配时,使用LanguagePriority 列表的第一项

    ForceLanguagePriority Prefer Fallback
    

    #设置默认字符集

    AddDefaultCharset ISO-8859-1
    
    #设置各种字符集
    AddCharset ISO-8859-1 .iso8859-1 .latin1
    AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
    AddCharset ISO-8859-3 .iso8859-3 .latin3
    AddCharset ISO-8859-4 .iso8859-4 .latin4
    AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
    AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
    AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
    AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
    AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
    AddCharset ISO-2022-JP .iso2022-jp .jis
    AddCharset ISO-2022-KR .iso2022-kr .kis
    AddCharset ISO-2022-CN .iso2022-cn .cis
    AddCharset Big5 .Big5 .big5
    # For russian, more than one charset is used (depends on client, mostly):
    AddCharset WINDOWS-1251 .cp-1251 .win-1251
    AddCharset CP866 .cp866
    AddCharset KOI8-r .koi8-r .koi8-ru
    AddCharset KOI8-ru .koi8-uk .ua
    AddCharset ISO-10646-UCS-2 .ucs2
    AddCharset ISO-10646-UCS-4 .ucs4
    AddCharset UTF-8 .utf8
    
    # The set below does not map to a specific (iso) standard
    # but works on a fairly wide range of browsers. Note that
    # capitalization actually matters (it should not, but it
    # does for some browsers).
    #
    # See ftp:#ftp.isi.edu/in-notes/iana/assignments/character-sets
    # for a list of sorts. But browsers support few.
    #
    AddCharset GB2312 .gb2312 .gb
    AddCharset utf-7 .utf7
    AddCharset utf-8 .utf8
    AddCharset big5 .big5 .b5
    AddCharset EUC-TW .euc-tw
    AddCharset EUC-JP .euc-jp
    AddCharset EUC-KR .euc-kr
    AddCharset shift_jis .sjis
    

    #添加新的MIME类型(避免用户编辑/etc/mime.types)

    AddType application/x-tar .tgz
    

    #
    # AddHandler allows you to map certain file extensions to “handlers”:
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add “ExecCGI” to the “Options” directive.)
    #
    #AddHandler cgi-script .cgi

    #
    # For files that include their own HTTP headers:
    #
    #AddHandler send-as-is asis

    #设置apcche对某些扩展名的处理方式

    AddHandler imap-file map
    AddHandler type-map var
    

    #使用过滤器执行SSI

    AddOutputFilter INCLUDES .shtml
    

    #设置错误页面目录的别名

    Alias /error/ "/var/www/error/"
    
    <IfModule mod_negotiation.c>
    <IfModule mod_include.c>
    <Directory "/var/www/error">
    AllowOverride None
    Options IncludesNoExec
    AddOutputFilter Includes html
    AddHandler type-map var
    Order allow,deny
    Allow from all
    LanguagePriority en es de fr
    ForceLanguagePriority Prefer Fallback
    </Directory>
    #设置错误输出页面
    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
    ErrorDocument 410 /error/HTTP_GONE.html.var
    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
    ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
    
    </IfModule>
    </IfModule>
    

    Google 推出DNS 服务器

    09:02

    今日看到一消息,Google推出DNS 服务器
    首选: 8.8.8.8
    备选: 8.8.4.4

    这地址真是深谙中国人心理啊~

    固定位置CSS

    09:05

    TOP:

    .toolbar{
        position:fixed;
        z-index:50;
        top:0px;
        left:0;
        width:100%;
        _top:expression(offsetParent.scrollTop);
        _position:absolute;
    }
    

    BOTTOM:

    #bottombar {
        position:fixed;
        bottom:0;
        z-index:50;
        _position: absolute;
        _bottom: auto;
        _clear: both;
    	_top:expression(eval(document.compatMode && document.compatMode=='CSS1Compat') ? documentElement.scrollTop+(documentElement.clientHeight-this.clientHeight) - 6: document.body.scrollTop+(document.body.clientHeight-this.clientHeight) - 6);
    

    网页中的CSS滤镜使用详解

    06:15

    语法: STYLE="filter:filtername(fparameter1, fparameter2...)"

    • Filtername 滤镜的名称
    • fparameter1, fparameter2… 滤镜的参数

    滤镜说明

    • alpha 设置透明层次
    • blur 创建高速度移动效果, 即模糊效果
    • chroma 制作专用颜色透明
    • DropShadow 创建对象的固定影子
    • FlipH 创建水平镜像图片
    • FlipV 创建垂直镜像图片
    • glow 加光辉在附近对象的边外
    • gray 把图片灰度化
    • invert 反色
    • light 创建光源在对象上
    • mask 创建透明掩膜在对象上
    • shadow 创建偏移固定影子
    • wave 波纹效果
    • Xray 使对象变得像被x光照射一样
    滤镜 Alpha

    STYLE="filter:Alpha(Opacity=opacity, FinishOpacity=finishopacity, Style=style, StartX=startX, StartY=startY, FinishX=finishX, FinishY=finishY)"
    说明:

    • Opacity 起始取值为0~100, 0 为透明, 100 为原图.
    • FinishOpacity 目标值.
    • Style 1 或 2 或 3
    • StartX 任意值
    • StartY 任意值
    filter:Alpha(Opacity="0",FinishOpacity="75",Style="2")
    
    滤镜 blur

    STYLE="filter:Blur(Add = add, Direction = direction, Strength = strength)"
    说明:

    • Add 一般为1, 或0.
    • Direction 角度, 0~315度, 步长为45度.
    • Strength 效果增长的数值, 一般5即可.
    filter:Blur(Add="1",Direction="45",Strength="5")
    
    滤镜 Chroma

    STYLE="filter:Chroma(Color = color)"
    说明:

    • color #rrggbb格式, 任意.
    filter:Chroma(Color="#FFFFFF")
    
    滤镜 DropShadow

    STYLE="filter:DropShadow(Color=color, OffX=offX, OffY=offY, Positive=positive)"
    说明:

    • Color #rrggbb格式, 任意.
    • Offx X轴偏离值.
    • Offy Y轴偏离值.
    • Positive 1或0.
    filter:DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1")
    
    滤镜 FlipH

    STYLE="filter:FlipH"

    filter:FlipH
    
    滤镜 FlipV

    STYLE="filter:FlipV"

    filter:FlipV
    
    滤镜 glow

    STYLE="filter:Glow(Color=color, Strength=strength)"
    说明:

    • Color 发光颜色.
    • Strength 强度(0-100)
    filter:Glow(Color="#6699CC",Strength="5")
    
    滤镜 gray

    STYLE="filter:Gray"

    filter:Gray
    
    滤镜 invert

    STYLE="filter:Invert"

    filter:Invert
    
    滤镜 mask

    STYLE="filter:Mask(Color=color)"

    filter:Mask (Color="#FFFFE0")
    
    滤镜 shadow

    filter:Shadow(Color=color, Direction=direction)
    说明:

    • Color #rrggbb格式.
    • Direction 角度, 0-315度, 步长为45度.
    filter:Shadow (Color="#6699CC", Direction="135")
    
    滤镜 wave

    filter: Wave(Add=add, Freq=freq, LightStrength=strength, Phase=phase, Strength=strength)
    说明:

    • Add 一般为1, 或0.
    • Freq 变形值.
    • LightStrength 变形百分比.
    • Phase 角度变形百分比.
    • Strength 变形强度.
    filter: wave(Add="0", Phase="4", Freq="5", LightStrength="5", Strength="2")
    
    滤镜 Xray

    STYLE="filter:Xray"

    filter:Xray
    

    IE与FireFox的js和css 区别

    06:12

    firefox 不能对 innerText 支持
    firefox 支持 innerHTML 但却不支持 innerText ,它支持 textContent 来实现 innerText,不过默认把多余的空格也保留了。如果不用 textContent,如果字符串里面不包含 HTML 代码也可以用 innerHTML 代替。

    禁止选取网页内容
    在 IE 中一般用 JS:obj.onselectstart = function(){return false;}
    firefox 用 CSS: -moz-user-select:none

    滤镜的支持(例:透明滤镜)
    IE:filter:alpha(opacity=10);
    firefox 3.0:-moz-opacity:.10;

    捕获事件
    IE:obj.setCapture()obj.releaseCapture()
    Firefox:document.addEventListener("mousemove",mousemovefunction,true);, document.removeEventListener("mousemove",mousemovefunction,true);

    获取鼠标位置
    IE:event.clientX, event.clientY
    firefox:需要事件函数传递事件对象 obj.onmousemove=function(ev){ X= ev.pageX;Y=ev.pageY;}

    DIV 等元素的边界问题
    比如:设置一个div的CSS: {width:100px;height:100px;border:#000000 1px solid;}
    IE中:div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px;
    firefox:div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;

    判断浏览器类型
    var isIE=document.all ? true : false; 如果支持 document.all 语法那么 isIE=true,否则 isIE=false

    在不同浏览器下的CSS处理
    一般可以用!important来优先使用css语句(仅firefox支持)
    eg: {border-width:0px!important;border-width:1px;}, 在 firefox 下这个元素是没有边框的,在 IE 下边框宽度是 1px。

    document.formName.item(“itemName”) 问题
    IE下,可以使用 document.formName.item("itemName")document.formName.elements["elementName"]
    Firefox下,只能使用 document.formName.elements["elementName"]

    集合类对象问题
    IE下,可以使用 () 或 [] 获取集合类对象;
    Firefox下,只能使用 [] 获取集合类对象。

    自定义属性问题
    IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;
    Firefox下,只能使用 getAttribute() 获取自定义属性。

    eval(“idName”)问题
    IE下,可以使用 eval(“idName”) 或 getElementById(“idName”) 来取得 id 为 idName 的HTML对象;
    Firefox下,只能使用 getElementById(“idName”) 来取得 id 为 idName 的HTML对象。

    变量名与某 HTML 对象 ID 相同的问题
    IE下,HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用,
    Firefox下则不能;Firefox下,可以使用与 HTML 对象 ID 相同的变量名,IE下则不能。

    const 问题
    Firefox 下,可以使用 const 关键字或 var 关键字来定义常量;
    IE下,只能使用 var 关键字来定义常量。

    input.type 属性问题
    IE下 input.type 属性为只读;
    Firefox 下 input.type 属性为读写。

    window.event 问题
    window.event 只能在 IE 下运行,而不能在 Firefox 下运行,这是因为 Firefox 的 event 只能在事件发生的现场使用。

    event.x 与 event.y 问题
    IE下,event 对象有 x、y 属性,但是没有 pageX、pageY 属性;
    Firefox下,event 对象有pageX、pageY属性,但是没有x、y属性。
    兼容处理:var myX = event.x ? event.x : event.pageX; var myY = event.y ? event.y:event.pageY;

    event.srcElement 问题
    问题说明:IE下,event 对象有 srcElement 属性,但是没有 target 属性;Firefox 下,even对象有 target 属性,但是没有 srcElement 属性。
    兼容处理:srcObj = event.srcElement ? event.srcElement : event.target;

    模态和非模态窗口问题
    IE下,可以通过 showModalDialogshowModelessDialog 打开模态和非模态窗口;Firefox下则不能。
    兼容处理:直接使用 window.open(pageURL,name,parameters) 方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用 window.opener来访问父窗口。如果需要父窗口控制子窗口的话,使用 var subWindow = window.open(pageURL,name,parameters); 来获得新开的窗口对象。

    frame 和 iframe 问题
    以下面的 frame 为例:<frame src="xxx.html" id="frameId" name="frameName" />
    1 访问frame对象
    IE:使用 window.frameId 或者 window.frameName 来访问这个frame对象;
    Firefox:使用window.frameName来访问这个frame对象;
    兼容处理:统一使用 window.document.getElementById(“frameId”) 来访问这个 frame 对象;
    2 切换 frame 内容
    在 IE 和 Firefox 中都可以使用 window.document.getElementById(“frameId”).src = “xxx.html” 或 window.frameName.location = “xxx.html” 来切换 frame 的内容;
    如果需要将 frame 中的参数传回父窗口,可以在 frame 中使用 parent 关键字来访问父窗口。

    事件委托方法
    问题说明:IE下,使用 document.body.onload = inject; 其中 function inject()在这之前已被实现;在Firefox下,使用 document.body.onload = inject();
    兼容处理:统一使用 document.body.onload=new Function("inject()");或者 document.body.onload = function() { /* 这里是代码 */}
    [Function和function的区别]

    访问的父元素的区别
    在 IE 下,使用 obj.parentElementobj.parentNode 访问 obj 的父结点;
    firefox 下,使用 obj.parentNode 访问 obj 的父结点。

    对象宽高赋值问题
    FireFox 中类似 obj.style.height = imgObj.height 的语句无效。
    兼容处理:统一使用 obj.style.height = imgObj.height + “px";

    CSS圆角问题
    IE:IE7 以下版本不支持圆角。
    FF:-moz-border-radius:4px;,或者 -moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius- bottomright:4px;

    CSS中的透明度属性

    03:52

    Firefox3.5已不支持私有属性-moz-opacity了,在Mozilla 1.7 (Firefox 0.9)之前FF都是使用这个私有属性的,Firefox 0.9-Firefox3同时支持-moz-opacity和opacity这两个属性,Firefox升级到3.5之后,一些网站原来有的透明没有了,呵呵。

    除了IE之外,目前主流浏览器, Opera 9.0及更高版本,Safari 1.2(WebKit 125) 及更高版本,chrome等等都支持opacity这个设置透明度的属性,opacity的属性值是0 < number <1的数值,默认值是1。

    例如50%透明的类:.example { opacity: 0.5;}

    IE的透明度的属性从IE4-IE8使用filter: alpha(opacity=number),这里的number是0-100之间的整数数值,IE8中我们也可以用-ms-filter: "alpha(opacity=number)"。IE中还支持 progid:DXImageTransform.Microsoft.Alpha(Opacity=xx)这种写法,但是不建议使用。

    所以我们可以这样写透明度类:

    .example { /* make the box translucent (80% opaque) */
       opacity: 0.8;                    /* Firefox, Safari(WebKit), Opera */
       -ms-filter: “alpha(opacity=80)”; /* IE 8 */
       filter: alpha(opacity=80);       /* IE 4-7 */
       zoom: 1;/* set “zoom”, “width” or “height” to trigger “hasLayout” in IE 7 and lower */
    }
    

    这些可以参照:https://developer.mozilla.org/En/CSS:-moz-opacity

    当然我们还会用js来设置元素的透明度,例如:

    var el=document.getElementById("mybox");
    el.style.opacity=50/100; //这里写出50/100主要是为了和ie的写法统一,便于一参数形式传入
    el.style.filter='Alpha(Opacity=50)';
    

    这里要说的是,Firefox3.5在css上已不支持私有属性-moz-opacity了,但是js中的el.style.MozOpacity=val/100;还是被Firefox3.5支持的,但是我不建议使用,因为这是ff的私有的,其他浏览器不支持。

    前两天,开发中显示图片时,需要条件将图片灰度显示
    找了好久,就是没找到FF下可以解决的方法
    之后,看到了这篇文章,讲述的很是全面
    于是,转载了过来

    overflow:hidden

    03:52

    很久以来
    一直都对于overflow的用法很是模糊
    也曾多次看过手册
    却总是不太明白
    昨日真真切切的感受了一回~
    原来overflow 为hidden时是不显示超过对象尺寸的内容
    ….

    « Previous PageNext Page »