使用h5标签需要兼容,不使用没有标签进行语义化,如何取舍?兼容IE6,7,8,canvas,video

2023-11-19

HTML5已向开发人员提供了很多新的标签,如section,nav,article,header和footer等。这些标签语义化程度高,会被经常使用,但在IE6,IE7,IE8和Firefox 2等老式浏览器中却不能识别和正常使用。

很多浏览器(比如Firefox 3.6和Safari4)解析的时候都会将div作为最外层的元素,然后div里面是一个识别不了的元素(section),它会在DOM中创建,并被作为一个行内元素存在。IE8不能识别article标签, 定义在标签上的CSS样式没有起作用。 在IE8中,<article>被解释成命名为<article />和</article />两个空的标签元素,与文章内容并列为兄弟节点。IE9之前的版本会认为section标签是一个错误,并直接将其忽略.当然,支持HTML5的浏览器比如IE9,Firefox4+,Safari5+会创建正确的DOM结构,然后这些标签会默认附带HTML5规范中定义的默认样式。那么,我们所面临的最大问题就是同样的代码在不同的浏览器中形成了不同的DOM结构,并且含有不同的样式。

或许会有很多人在质疑:为什么老式的浏览器不能识别这些标签?其实错不在浏览器,因为在那个时代根本不存在这种标签,所以不能正确识别出来,而这种不寻常的标签识别令DOM结构变得异常。对此,人们想出了很多在现阶段页面中使用HTML5元素的解决方案。

通过document.createElement(tagName)即可以让浏览器识别标签和CSS引擎知道该标签的存在。这个方法可以确保HTML5标签能在旧版本IE中对应创建DOM节点,然后可以对其应用样式。这个方法将HTML5块级元素设置成display:block,从而可以在各个浏览器中做到兼容。

在你的html的头部中引入

<!--if lt IE 9]>  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>  <![endif]-->

在你的CSS文件中加上以下代码

header,nav,article,section,aside,footer{display:block;}

这是对IE6的canvas兼容

<!--if lte IE 6]>  <script src="http://letskillie6.googlecode.com/svn/trunk/letskillie6.zh_CN.pack.js"></script>  <![endif]-->

所有浏览器对video的兼容

http://html5media.googlecode.com/svn/trunk/src/html5media.min.js

虽然有各种各样的方法可以解决html5对各浏览器的兼容,但是,需要修改的Web应用视图越多,你越有可能制造bug。将改变限制到一个视图也就限制了bug的出现,即使出现了bug,也可以减少你查找错误的范围。如果一个视图破相了,我可以知道这是因为我增加了一个section元素,而不是考虑是不是CSS文件或者是js文件修改来带的影响。

使用h5标签需要兼容,不使用没有标签进行语义化,如何取舍?


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用h5标签需要兼容,不使用没有标签进行语义化,如何取舍?兼容IE6,7,8,canvas,video 的相关文章

  • 悬停时显示表格行大纲

    我试图在悬停时突出显示表格行的边框 不幸的是 这仅适用于第一行单元格 较低的行有一个不改变颜色的边框 我尝试过使用outline但它不太适合 hover在网络套件中 http jsfiddle net S9pkM 2 http jsfidd
  • 如果子级包含很长的单词,Flexbox 父级将扩展宽度

    我想知道是否有人可以帮助我解决这个问题 我似乎找不到其他人想要用 Flexbox 来做到这一点 我已经设置了一个基本的 Flexbox 场景 其中多个元素 li 出现在 Flexbox 容器 ul 中 我还对其进行了设置 以便在换行之前可容
  • mailto 的语法

    当使用这样的 mailto 链接时 a href title Subject Link Text a 是否可以设置 FROM 地址 更新 我忘了提及 我有一群忠实的受众 他们都将使用 IE8 和 Outlook 不幸的是 事实并非如此 您只
  • 拉伸图像以填充浏览器窗口的宽度

    我有一个图像 我希望宽度能够填满浏览器窗口 无论窗口大小如何 如何在 HTML 和 CSS 中执行此操作 您可以添加宽度和高度为100 的div 也可以设置图像宽度和高度为100 div img src https picsum photo
  • 如何正确设置 100% DIV 高度以匹配文档/窗口高度?

    我有一个包装器 位于中心位置 并带有 y 重复的背景图像 div some content div wrapper width 900px margin 0 auto 0 auto background image url image jp
  • 离子侧菜单和带有嵌套视图的选项卡:选项卡嵌套视图的内容未显示

    我对两者都是新手AngularJS and Ionic 我正在创建一个应用程序 它具有sidemenu and tabs在菜单选项之一内 选项卡应使用以下方式呈现其内容nested view 所以没有简单的HTML here 我可以在侧菜单
  • 响应式 img/srcset/sizes:不同的 jpg 质量取决于设备像素密度?

    我正在寻找一种响应式图像策略 允许根据设备像素密度提供不同的 jpg 质量 在高分辨率的小屏幕上 我会提供低质量但高分辨率的 jpg 在低像素密度的大屏幕上 我会提供高质量的 jpg 与设备分辨率完美匹配 问题 这是否有可能 img 背景
  • 具有不同高度块的三列布局

    我有基于 Twitter Bootstrap 的简单 3 列布局 唯一的问题是 每根柱子都是由不同高度的块组装而成 div class container div class row div class span4 div class bl
  • 无法将 event.target 转换为字符串

    为了识别用户单击的元素 我尝试使用事件对象target document click function e var str e target toString console log str if str indexOf some clas
  • 使用 d3 在两个节点之间绘制多条边

    我一直在关注 Mike Bostock 的代码这个例子 http bl ocks org 1153292学习如何在 d3 中绘制有向图 并且想知道如何构建代码 以便可以在图中的两个节点之间添加多个边 例如 如果上例中的数据集定义为 var
  • TypeError:req.checkBody 不是包含 bodyparser 和expressvalidator 模块的函数

    我收到错误 req checkBody 不是一个函数 我认为我已经包含了express validator和body parser 这是我的代码 var express require express var bodyParser requ
  • VideoJs 在 Firefox 中的 Flash 回退问题

    我尝试将 videoJs 添加到我的网站来播放 MP4 文件 所有这些在 Chrome 中都能完美运行 但当我转到 Firefox 不支持 MP4 文件 时 Flash 播放器停留在黑屏上 按钮不执行任何操作 简单的问题 为什么 我不明白
  • 如何从模板脚本访问 AngularJS 变量

    我的控制器 scope totals totals 我的模板 按 html 注入的预期工作 totals 但我需要的是访问变量totals在模板的脚本中 如下所示 我试过了 scope totals totals totals 等 均无济于
  • 没有操作的 HTML 表单

    在 Django Pinax 中 我遇到过这样的登录表单
  • 如何为 HTML 验证提供自定义验证错误消息?

    当我使用默认 HTML 验证时 它会显示默认错误消息 这不是我想向客户显示的 我需要自定义消息并为每个验证提供不同的信息 例如最小 最大 类型和要求 例如 该字段为必填项 值不匹配 参考传统的HTML代码
  • 我将与 ng-include 一起使用什么文件路径?

    我的角度项目的路径是这样的 web server py flask server program app static app js controllers js etc templates index html home html 索引
  • 统计并限制上传的文件数量(HTML文件输入)

    我有那个基本的 众所周知的多文件上传表单 类似的事情
  • 如何暂时停止标题属性显示工具提示?

    我在右键单击时显示了一个弹出 div 我知道这会破坏预期的功能 但 Google 文档会这样做 所以为什么不呢 但是 我在弹出窗口上显示的元素有一个 标题 属性集 该属性集出现在我的分区 我仍然希望工具提示能够工作 但当弹出窗口出现时就不行
  • HTML Canvas:如何绘制翻转/镜像图像?

    当我在 HTML 画布上绘制图像时 我试图翻转 镜像图像 我发现一个游戏教程显示了角色必须面对的每个方向的精灵表 但这对我来说似乎不太正确 特别是因为每个框架都有不同的尺寸 实现这一目标的最佳技术是什么 我尝试致电setScale 1 1
  • CSS 可见性动画不起作用

    我想在 CSS 可见性属性上制作基于关键帧的动画 我最初在 显示 上尝试过 但发现不支持 显示 上的动画 但支持 可见性 这个想法是让矩形的可见性不断切换 我不想使用 jquery 并且想在 CSS 中实现整个它 以下是我的代码 但它没有给

随机推荐

  • 《斗破CPP》 第叁章(中) ---- 左值右值问题

    斗破CPP 第叁章将会分成上中下三部分分享给大家 上 偏向于讲述循环 中 讲1个中级难度的运算符 下 偏向于讲解具有强大功能的语句以及控制符 不管有基础还是没基础的小伙伴 都可以重点看看 上 后半部分 中 前半部分 下 后半部分小总结 目录
  • java实现简单的生成52张牌、三个人洗牌、码牌算法

    定义一个Pocker类 用于定义牌类 package demo public class Poker private String suit 花色 private int rank 数字 构造函数 public Poker String s
  • Java学习day17

    异常处理 异常处理机制 代码 public class Demo01 public static void main String args int a 1 int b 0 假如要捕获多个异常 从小到大 try if b 0 throw t
  • Mybatis一对多查询,分页显示问题解决方案

    分页查询在我们的开发中也许是遇到最多的功能 一张表的分页 多张表一对一功能的分页相信大家写来都是得心应手 但是在一对多分页查询的时候大家写法不对的时候 可能会遇到查询的总条数和实际总条数对不上的问题 不多说下面请看演示 1 先提供2张表的建
  • 3254 Corn Fields 这题解真的不能再详细了!

    题意 农场主John新买了一块长方形的新牧场 这块牧场被划分成 M M M行 N N N列 1
  • 大数据建模与数据模型工具

    一 什么是大数据 大数据一般指在数据量在10TB以上的数据集 通常有以下5个特点 1 容量 Volume 数据量大 数据量的大小决定所考虑的数据的价值和潜在的信息 2 种类 Variety 数据类型多 包括但不仅限于文本 音频 视频以及图片
  • Unity—UGUI

    每日一句 读数 学习 去更远的地方 才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例 用户名和密码 Toggle组件 案例 冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容
  • 菜鸟学python之计算第10次球体反弹高度

    题目 一球从100米高度自由落下 每次落地后反跳回原高度的一半 再落下 求它在第10次落地时 共经过多少米 第10次反弹多高 n 0 落地次数 high 0 反弹高度 hight 100 落地前n次高度 tour 0 经过的路程 for i
  • python string前加b的原因

    From https stackoverflow com questions 6269765 what does the b character do in front of a string literal they produce an
  • python 下载及安装-CentOS下python的下载及安装

    针对 CentOS下python的下载及安装 的问题 下面由IT产品经理 陆亦晓为您解答 Python这门编程语言在数据分析 数据发掘以及服务端开发等方面都有非常好的使用 我们之前介绍过Windows环境下python开发工具的安装 今天为
  • HTML 表格td中无内容时不显示边框的解决办法

    有时我们想实现不输入内容展示时 会不显示边框 解决方法 1 在单元格中加入一个空格 这样 td nbsp td 2 直接在table里这样写 table border 0 cellspacing 0 table
  • BUG处理流程图

    流程描述 1 测试人员发现bug提交给开发 2 开发人员判断是否是bug 3 如果是bug 进行修改 修改完成后更改bug状态为已解决 4 如果不是bug 退回给测试人员并描述退回原因 或为设计如此 或为外部原因 或者不能重现 5 开发人员
  • 【Linux】自动化构建工具:make/Makefile

    内容专栏 Linux操作系统基础 本文概括 工具使用的背景 理解make makefile工具 探索工作原理 文件修改时间的对比 PHONY伪目标 特性等 本文作者 阿四啊 发布时间 2023 9 14 背景 make 和 Makefile
  • C4D和3dmax有什么区别?

    很多小伙伴都知道3d Max和C4D都是一款三维制作软件 可是 很少见到游戏公司使用C4D软件制作模型呢 反而设计师们用的最多的就是3dmax 而C4D往往用于广告行业 那么C4D和3d max的区别是什么呢 一 性质不同 1 3Dmax
  • 2-4、React+antd页面UI美化——登录界面设计

    React Antd 实现组件的UI美化示例 目标UI 创建一个页面page 用于用户登录 要求页面简洁 美观 易懂 要求有背景 要求引入antd登录表单组件 要求有登录样式 基于antd的表单对页面完成简单的渲染 图示 UI拆解 背景渲染
  • linux spring mvc tomcat配置,Spring MVC配置详解

    一 Spring MVC处理流程 1 Spring MVC将所有请求都交由DispatchServlet进行处理 2 DispatchServlet获取HandlerMapping 处理映射器 然后找到对应的HandlerBean处理Con
  • python列表增加元素的三种方法

    本文主要介绍了关于python列表增加元素的几种操作方法 主要有insert方法 extend方法和append方法 每种方法给大家介绍的非常详细 希望对你有所帮助 1 insert方法 该方法包含两个参数 第一个参数为插入的位置参数 第二
  • 解决Eclipse没有serve及无tomcat9.0

    网上一般提供的 Kepler repository http download eclipse org releases kepler 版本老 在Eclipse help install new 直接输入版本时间 出现如下 我的版本是201
  • 区块链java的demo_区块链-java入门Demo-Go语言中文社区

    正在创建第一个区块链 创建区块 00000d3c0681cd67f8050ab996e1400f99c0060ba4cb22d0c07685d9ae50cd10 正在创建第二个区块链 创建区块 00000eafdd53bed5586d480
  • 使用h5标签需要兼容,不使用没有标签进行语义化,如何取舍?兼容IE6,7,8,canvas,video

    HTML5已向开发人员提供了很多新的标签 如section nav article header和footer等 这些标签语义化程度高 会被经常使用 但在IE6 IE7 IE8和Firefox 2等老式浏览器中却不能识别和正常使用 很多浏览