加入<!doctype html public>后错乱(css基本无效)

Jsp中的DOCTYPE问题——解决css中的margin居中无效问题
写好的html复制到jsp文件中,在浏览器中会出现margin居中无效的情况,纯html中没有这个问题。Jsp是使用myeclipse新建的(Advanced Templates),其生成的DOCTYPE如下:
3C//DTDHTML 4.01
Transitional//EN"&
而使用dreamweaver创建的html文件中的DOCTYPE如下:
3C//DTDXHTML 1.0
Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
正是由于这个DOCTYPE的不同导致在浏览器下css的margin居中失效。
当然,有时候我们需要浏览器css兼容问题时,我们可能会选择css hack。相对于css
hack来说,选择正确的DOCTYPE来实现css兼容来的更加简单。只要我们选择一个合适的DOCTYPE,同时css写的比较规范,那么出现浏览器兼容性的问题的几率就会减小。
对于DOCTYPE中DTD的类型,目前来说大多选择Transitional类型,一般如果我们使用专门的网页制作软件新建HTML时都会使用这个DOCTYPE。
但是在myeclipse下新建的JSP(AdvancedTemplate)页面中并不是使用这个DOCTYPE(DTD都没有指定),那么就可能会引发浏览器兼容性问题,为了避免这个问题我们最好还是使用通用的格式。
在myeclipse中新建Jsp时选择JSP(Basic Templates)时,我们可以自己选择使用哪个模版页面。
这样我们就可以自定义一个合适的JSP模版,然后新建JSP的时候就使用我们自己定义的模版就可以了。
打开首选项,在左边展开JSP - & JSP
Template点击右边窗口的 new 选项 填写相关信息,保存即可。
在新建JSP页面的时候选择JSP(Basic Template)然后点击 next 选择要使用的 JSP模版,然后点击finish即可。下次在使用的时候就不用再选择模版了,系统会使用上一次的选择。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。&  DOCTYPE是对Document type的缩写,说明用XHTML或者HTML是什么版本的。必须出现在&html&标签的前面,不需要关闭标签。  &!DOCTYPE&声明不是标签,它指示Web浏览器关于页面使用哪个HTML版本编写的,请始终向HTML文档添加&!DOCTYPE&声明,这样浏览器才能获知文档类型,最终如何显示你的Web文档。所以,要想制作符合W3C标准的页面,DOCTYPE声明是必不可少的关键组成部分。 缺少HTML Doctype造成的样式问题  当使用XHTML标准开发的网页,第一行就是:1 &!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&  这是xhtml的W3C标准。  DOCTYPE指定了HTML文档遵循的文档类型定义(DTD),声明的写法遵循一定的规则,指出阅读程序用什么规则集解释文档中的标记。规则样式:  语法:     &HTML   顶级元素  可用性  &注册//组织//类型//标签//定义// 语言& & "URL"  可能值:顶级元素:指定的DTD中声明的顶级元素类型,这与声明的SGML文档类型相对应。默认是:HTML可用性: 指定正式公开标示符(FPI)是可访问的对象还是系统资源。默认是:PUBLIC,可公开访问的对象。SYSTEM 系统资源,如本地文件或 URL。&注册: 指定组织是否是国际化标准组织(ISO)。&+ 默认。组织名称已注册。&组织名称未注册:IETF和W3C不是注册的ISO组织。组织: 指定表明负责由!DOCTYPE声明引用的DTD的创建和维护的团队或组织名称。类型: 指定公开文本类,即所引用的对象类型。默认:DTD。标签: 指定公开文本描述,对所引用的公开文本唯一描述性名称。可附带版本号。默认:HTML定义: 指定文档类型定义。Frameset框架集文档。Strict排除所有W3C专家希望逐步淘汰的代表性属性和元素。Transition包含排除Frameset元素的全部内容。语言:指定公开文本语言,即创建所引用对象的自然语言编码系统。默认:EN.URL: 指定所引用对象的位置。(转自:/tomatoxml/p/3585741.html)  DTD(例子中的:xhtml1-transitional.dtd)即文档类型定义,包含文档的规划,浏览器根据定义的DTD来解释页面的标示,然后展现出来。  xhtml1.0提供三种DTD声明可供选择:Transitional: 包含所有HTML元素和属性,包含展示性和弃用的元素,不允许使用框架集(Framesets),必须以正确的格式来编写XML。&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&Strict: 包含所有HTML元素和属性,但是不包含展示性和弃用的元素(比如:font),不允许使用框架集(Framesets),必须以正确的格式来编写XML。&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd"&Frameset: 等同于XHTML 1.0 Transitional, 但是允许包含框架集内容。&!DOCTYPE html PUBLIC "-//W3C//DTD//XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&&  相比xhtml的三种DTD声明和HTML 4.01的三种声明,HTML5 中只有一种&!DOCTYPE&声明:&!DOCTYPE html&  HTML4.01中,&!DOCTYPE&声明引用DTD,因为HTML4.01是基于SGML,DTD规定了标记语言的规划,这样浏览器才能正确显示内容,HTML5不是基于SGML的,所以不需要引用DTD。解释下关于XHTML1.0,HTML 4.0和HMTL5:  XHTML 1.0 是对HTML 4.0按照XML标准要求的改造,是XML风格化的HTML4.01,而HTML5是下一代HTML,用来取代HTML 4.01。W3C 原本确实计划用 XHTML 系列替代 HTML 4.01,但 XHTML 系列实际上只活到了 1.1(1.1 和夭折的 1.2 已经体现出过分 XML 的迹象,而 W3C 的理想其实在疯狂的 XHTML 2 身上,当然,它没能诞生),还没脱离 HTML 4.01 的阴影就死了。还没等 XHTML 兴起,它的地位就被 HTML5 取代了。(摘自/question/)&  在DOCTYPE声明后面的是一个XHTML的命名空间(namespace):&html xmlns="http://www.w3.org/1999/xhtml"&  当需要使用符合XML规范的XHTML文档,则应该在&html&标签中使用xmlns属性。&检查工具:需要检查自己的页面是否符合在DOCTYPE中声明的标准,可以使用W3C提供的验证工具:http://validator.w3.org/&html转成jsp之后,部分css失效,加了这个&!DOCTYPE 。。Transitional&#47;&#47;EN&。。还是失效,是怎么回事?_百度知道
先确保页面已经加载了样式表,然后看看样式表文件所用的编码格式,试试用记事本另存为utf-8编码。
其他类似问题
为您推荐:
doctype的相关知识
其他2条回答
doctype声明必须在第一行
这样不行,放jsp页面最前面也不行,,,,360跟谷歌就可以显示我要的效果
ie内查看下源码,有时候可能是不可见字符引起的。或者你的html直接改下后缀看是什么效果?另外,css文件和jsp的编码是否一致。
这个与CSS无关
那是浏览器兼容么?谷歌和360显示正常,到ie就不行了,而且还没有我设置的圆角效果
IE本来就不支持圆角效果 IE9及以上才支持
如果你不放心 可以删除 没关系的
我浏览器都IE10啦,就是html文件用IE打开时是我想要的效果,然后把它弄成jsp就效果不出来了,圆角不重要,重要的是布局变乱了,比如某个div左边距变大,某个div宽度变小这样的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于用margin:0 auto 居中问题(用HTML5的DOCTYPE)
看到好多网页居中用margin:0 auto而不是margin-left:margin-right:auto,而我自己编写只有火狐和chrome能居中,IE不行。为什么?( PS:Html文件头部是
!DOCTYPE html
)&br&&br&代码:&br&HTML:&br&&br&& ! DOCTYPE html &&br&& html lang=&zh-CN&
&&br&& head &&br&& meta http-equiv=&Content-Type& content=&text/ charset=utf-8&
&&br&& title & dou & /title &&br&& link rel=&stylesheet& type=&text/css& href=&style.css& &&br&& /head &&br&& body &&br&& div class=&anony-nav& &&br&
& div class=&hd-wrap& &&br&
& div class=&hd& &&br&
& div class=&logo& & LOGO & /div &&br&
& div class=&top-nav-items& & ABC & /div &&br&
& /div &&br&
& /div &&br&& /div &&br&& /body &&br&& /html &&br&&br&CSS:&br&&br&html,div{&br&
display:&br&}&br&body, div, dl, dt, dd, ul, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button,&br&textarea, blockquote {&br&margin: 0;&br&padding: 0;&br&}&br&.anony-nav .hd{&br&
clear:width:950margin:0&br&}&br&.anony-nav .hd{&br&
height:74&br&}&br&.anony-nav .logo{&br& float:margin-top:23&br&}
看到好多网页居中用margin:0 auto而不是margin-left:margin-right:auto,而我自己编写只有火狐和chrome能居中,IE不行。为什么?( PS:Html文件头部是
!DOCTYPE html
)代码:HTML:& ! DOCTYPE html && html lang="zh-CN"
&& head && meta http-equiv="Content-Type" content="text/ charset=utf-8"
&& title & dou & /title && link rel="stylesheet" type="text/css" href="style.css" && /head && body && div class="anony-nav" &
& div class="hd-wrap" &
& div class="hd" &
& div class="logo" & LOGO & /div &
& div class="top-nav-items" & ABC & /div &
& /div &…
按投票排序
去掉!和DOCTYPE 间的空格
首先,按@zhangshengchun,去掉!和DOCTYPE 间的空格。其次,去除每个html标签, ‘&’之后的空格,‘&’之前的空格。在IE8/7下可以居中,IE6未测试。
除了楼主说的margin:0 auto外~能使用标签居中的css条件还有两个:它是个块元素、他有固定宽度~width:50display: 这样~楼主的css有遗漏吗------------------add:看到码了~有过类似困惑~祝顺利~^^========感谢@杜潇 的指正,已修订
你那问题应该是模式问题,,我觉得你那有一个空格。只有在怪异模式下ie需要在 body中加入一个text-align:
margin:后面的值 只有一个:上下左右相同;有两个:第一个上下,第二个左右;有三个:第一个上,第二个左右,第三个下;有四个:第一个上,第二个右,第三个下,第四个左;ie要在父div设置 text-align:center

我要回帖

更多关于 html5 doctype 无效 的文章

 

随机推荐