关于选用DOCTYPE及DOCTYPE对页面css及js的影响

css|js|页面

什么是DOCTYPE
    DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。

    要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。

XHTML 1.0 提供了三种DTD声明可供选择:

过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

我们选择什么样的DOCTYPE
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。

注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。

打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会

DOCTYPE对CSS及JS的影响
也许你已经发现选用或不用DOCTYPE对你的页面的影响是非常大的,甚至对于不同浏览器结果也不一样。下文以对一段javascript的影响说明:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>divTest</title>
<script>
 function changeHeight()
 {
 document.getElementById("content").style.height="360";
 alert(document.getElementById("content").style.height);
 alert(document.getElementById("content").offsetHeight);
 }
</script>
</head>
<body>
 <div id="content" style="height: 60px; border: 1px solid #FF0000;"><a href="javascript:changeHeight()">aa</a></div>
</body>

上文页面是通过按aa超链接表现javascript控制div的高度,读者可以自己试一下

1. IE浏览(我用的是IE 6),content的高度会变大,同时alert出height:360,offsetHeight:362

2. firefox,content的高度不会变,同时alert出height:60,offsetHeight:62

3. 去掉最上面的一句<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
在firefox下将得到content的高度会变大,同时alert出height:360,offsetHeight:362

我曾看到好多人运行到这里就会得到一个结论去他的DOCTYPE,用了它好多东西都不对了。我以为不是这样的,DOCTYPE定义了一个规范集,去检验你代码的正确性规范性,去掉了DOCTYPE也许只会在你当前机器上的浏览器正确运行,也就是说你的程序不能做到通用,难道这是你追求的吗?这时你会说那上面的问题怎么办呢,难道在firefox就不能那么做吗?回答是当然可以,仔细看一下上面的代码其实是有问题的,在<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">标准中对象的高度、大小必须指定单位的如px,pt等,如果不指定那就要依赖于应用浏览器的默认或支持情况了,因此修改代码如下:

 

<script>
 function changeHeight()
 {
 document.getElementById("content").style.height="360px";
 alert(document.getElementById("content").style.height);
 alert(document.getElementById("content").offsetHeight);
 }
</script>

运行一下看看是不是对了呢? 定义DOCTYPE是个好习惯,也希望大家能写出标准规范的代码。

 

时间: 2024-12-02 06:49:20

关于选用DOCTYPE及DOCTYPE对页面css及js的影响的相关文章

PHP采集静态页面并把页面css,img,js保存的方法_php技巧

本文实例讲述了PHP采集静态页面并把页面css,img,js保存的方法.分享给大家供大家参考.具体分析如下: 这是一个可以获取网页的html代码以及css,js,font和img资源的小工具,主要用来快速获取模板,如果你来不及设计UI或者看到不错的模板,则可以使用这个工具来抓取网页和提取资源文件,提取的内容会按相对路径来保存资源,因此你不必担心资源文件的错误url导入. 首页 index.php,代码如下: 复制代码 代码如下: <!DOCTYPE html> <html> <

javascript-网站设计中页面css和js问题

问题描述 网站设计中页面css和js问题 最近在写网站,以前写过几个管理网站对外观没什么要求,最近写的这个各种酷炫的要求,所以想请大神帮忙推荐几本学习css和js 的书或者网站,好友大神们写网站的css和js是下载还是自己写呀,要是下载去哪下载比较好呀,写大神 解决方案 锋利的JQuery 解决方案二: js高级程序设计.css多看看模板代码 解决方案三: 其实 你需要学习 js css3 以及html5 解决方案四: 可以参考网上的 但还是自己要懂才行 去看看jquery和js标签库巴 解决方

div标签-用HTML和css和js怎样实现随着页面滑动?

问题描述 用HTML和css和js怎样实现随着页面滑动? div标签跟着滑动但始终在视线里!刚开始div在页面中间 随着页面的往下滑动,div也随之向上滑动,直到div滑动到顶端,页面继续下滑,div在页面顶端保持不变!整个过程 div标签内容始终可见! 解决方案 这个太简单了!完全用CSS控制就可以了,页面在滚动,给这个DIV设置position:fixed;那么页面不管怎么滚动,这个DIV是中在顶端 解决方案二: 显示合作div absolute定位,判断滚动到div位置的时候设置posit

bootstrap-如何把jsp页面头部中那些加载css、js的命令提取出来放在一个jsp页面里

问题描述 如何把jsp页面头部中那些加载css.js的命令提取出来放在一个jsp页面里 是这样的我要做好几个jsp页面,都使用bootstrap作为前端框架 于是在每个jsp页面的 head>中都有这么一大段加载命令: <link href="css/charisma-app.css" rel="stylesheet"> <link href='bower_components/fullcalendar/dist/fullcalendar.c

手机web页面,手机端只有css,html,js,在选购商品之后支付可以调用支付宝App完成支付吗?

问题描述 手机web页面,手机端只有css,html,js,在选购商品之后支付可以调用支付宝App完成支付吗? 手机web页面,手机端只有css,html,js,在选购商品之后支付可以调用支付宝App完成支付吗? 解决方案 可以的.但是不要问我具体怎么做,我也没做过,但是我有经常这样支付的! 解决方案二: 支付宝是有接入口的,百度上有其连接方式. 解决方案三: 当然可以,web app的形式.通过js调用支付宝接口进行支付.

springmvc-访问jsp页面 css没被加载

问题描述 访问jsp页面 css没被加载 解决方案 你看看地址栏中的路径,如果地址栏中的路径中你的jsp不是在pages下的话,这么相对路径是不对的. 用web的绝对路径吧 解决方案二: 样式的路径对吗? 解决方案三: WARNING [http-nio-8080-exec-55] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/css

空间页面CSS说明_CSS/HTML

什么是CSS? CSS就是一种叫做样式表(stylesheet)的技术.也有的人称之为层叠样式表(Cascading Stylesheet). 在主页制作时采用CSS技术,可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控制. 只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式.  空间页面CSS说明 body 整个空间页面{background-color:#FFFFFF} ------------------------------

Centos系统配置Pagespeed压缩网站页面(css,js,html)

Pagespeed 是一个开源项目,该项目在 Github 的开源地址为:https://github.com/pagespeed/ngx_pagespeed Pagespeed 能够压缩您站点上的静态资源(CSS.JS.图片等),从而加快用户的网页加载速度. Pagespeed 支持 Apache.Nginx. 本文,我们以 Nginx 为例进行 Pagespeed 配置.分三个步骤: 1.安装GCC等依赖库 请按您的系统类型执行.  代码如下 复制代码 Redhat.CentOS.Fedor

nodejs实现bigpipe异步加载页面方案_node.js

Bigpipe介绍 Facebook首创的一种减少HTTP请求的,首屏快速加载的的异步加载页面方案.是前端性能优化的一个方向. BigPipe与AJAX的比较 AJAX主要是XMLHttpRequest,前端异步的向服务器请求,获取动态数据添加到网页上.这样的往返请求需要耗费时间,而BigPipe技术并不需要发送XMLHttpRequest请求,这样就节省时间损耗.减少请求带来的另一个好处就是直接减少服务器负载.还有一个不同点就是AJAX请求前服务器在等待.请求后页面在等待.BIGPIPE可以前