我正在使用优秀的HTML5样板文件。这是一个很棒的项目但我在IE 8和7中有一些大问题(可能是8但还没有尝试过)
这些文件包含HTML5 doctype:
<!doctype html>
<head>
但问题是没有完整而丑陋的doctype,如......
<!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">
我得到了各种渲染问题:以边距为中心:auto不起作用,高度,宽度,集合和填充都表现得像疯了一样,我的所有布局都被<!doctype>
打破但是如果切换到旧的,一切都很好(好吧,不是很好,它仍然是IE,但正如预期的那样)
HTML5 Boilerplate随附了Modernizer,我认为应该解决这个问题,但它不起作用。从我的“研究”(谷歌)我发现IE进入怪癖模式宽度<!doctype>
,所以问题是......
有没有办法阻止IE使用<!doctype>
进入怪癖模式?
或者至少不要破坏边距,宽度,填充等?
编辑:这是完整的负责人:
<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
答案 0 :(得分:16)
IE不会进入具有该doctype的怪癖模式。样板应该修复IE问题,而不是引起它们。您缺少doctype之后的<html>
元素。添加它以查看是否有变化。 HTML5并不需要它,但如果缺少,IE或样板可能会根据文档发疯。
另外,只需删除doctype之后的注释,这样就可以解决问题。
答案 1 :(得分:9)
尝试将其放入<head></head>
标记:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
如果它已经存在,则将其删除,您可能会收到所需的结果。
答案 2 :(得分:7)
IE不会对HTML doctype产生任何疑问 - 这就是重点!
这个新的DOCTYPE有什么好处,尤其是当前的所有 浏览器(IE,FF,Opera,Safari)将查看它并切换 内容进入标准模式 - 即使它们没有实现HTML5。 这意味着您可以使用HTML5开始编写网页 今天,让它们持续很长很长时间。
(http://ejohn.org/blog/html5-doctype/)
但是,在doctype(换行符,注释等)之前有任何内容。
我会检查你在做什么 - HTML5 doctype不会让你的浏览器陷入困境。
答案 3 :(得分:1)
尝试将文件另存为无BOM的UTF-8 。它帮助了我。
答案 4 :(得分:0)
我不太喜欢“wiz”,但是不能用有条件的html来为IE8及以下版本声明HTML 4.01 doctype:
<!-- HTML 5 doctype -->
<!doctype html>
<!-- HTML 4.01 Doctype -->
<!--[if lte IE 8]>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<![endif]-->
如果这在旧浏览器中不起作用(由于浏览器读取两种文档类型),您可以尝试这样做:
<!DOCTYPE HTML <!--[if lte IE 8]>PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
<![endif]-->>
答案 5 :(得分:0)
很可能它会与条件注释进入兼容模式。我们建议您在.htaccess文件或其他服务器配置文件中设置x-ua-compatible
标头服务器端。
答案 6 :(得分:0)
我发布您发布的标题标记没有错。这是一个广泛用于样板的标准标记,包括Modernizr,这是一个用于检测浏览器功能的漂亮的JavaScript库。
<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
我在我当前的应用程序中使用它并且在任何浏览器上都没有问题。虽然我这样使用它:
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
为了测试IE条件评论,我在IE9
,IE8
和IE7
上测试了大写和小写 doctype ,用于仔细检查。
我在IE7
上观察到的唯一奇怪的事情是,当我使用 <!doctype html>
代替<时,webfonts(我的应用中的所有四个)都无法呈现EM> <!DOCTYPE html>
仅供参考:我刚刚在2013年9月24日检查并看到HTML5 Boilerplate Project已removed support for IE conditional comments。我无法确认何时向项目引入了条件评论,但可以看到{{3在2010年1月24日。
答案 7 :(得分:-4)
尝试DOCTYPE html而不是doctype html doctype标签区分大小写,这就是原因。