我可以使用自定义标签名称而不使用 Web 组件,仅用于样式设置吗?

2024-01-01

令我惊讶的是,如果我使用自定义标签名称,然后将这些标签的样式设置为普通 html 标签的样式,现代浏览器似乎不会抱怨,它们的行为就像 span 元素,并且像 div 元素,如果我设置display: block;.

我的意思是,即使我不使用聚合物,或者尝试注册自定义元素。

例如,我有这个:https://jsfiddle.net/hvybz0nq/4/ https://jsfiddle.net/hvybz0nq/4/

<flex-fixed>
  <sections>
    <section>Section 1</section>
    <section>Section 2</section>
    <section>Section 3</section>
    <div>Add Section</div>
  </sections>
  <splitter></splitter>
  <pages>
    <page>Page 1</page>
    <page>Page 2</page>
    <page>Page 3</page>
    <div>Add Page </div>
  </pages>
</flex-fixed>

加上一些CSS:

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

flex-fixed, sections, section, div, pages, page {
  display: flex;
}

body {
  height: 100vh;
}

flex-fixed {
  width: 100%;
  height: 100%;
  flex-direction: column; 
  position: fixed;
}

section {
  border-right: 1px solid lightgrey;
}

splitter {
  height: 1px;
  background: lightgrey;
}

pages {
  height: 100%;
  border-left: 1px solid lightgrey;
  align-self:flex-end; 
  flex-direction: column;
}

page {
  border-bottom: 1px solid lightgrey;
}

section, page, div {
  padding: 10px;
}

请注意:几年后,由用户评论提示返回此内容,我想指出这已经过时了;如果这个问题今天发布,我会给出一个非常不同的答案。在 2018 年的美好新年里,人们通常不会对自定义元素的想法感到害怕。2016 年的原始答案如下:

你绝对可以做到这一点。它会起作用的。自定义元素是HTML5 规范 http://w3c.github.io/webcomponents/spec/custom/;包括对未注册自定义元素的显式支持(参见第 7 节)。所有现代浏览器都支持它们(默认情况下它们被视为内联元素,就像<span>),例如 Angular.js 中对它们有一流的支持。从功能上来说,两者之间没有任何区别<foo> and <span class="foo">.

那么你应该吗?我把它分解如下:

不使用自定义元素的原因

  • 一些较旧的浏览器(IE8 及更早版本)仅在您使用 javascript shim 时才支持它们(至少document.createElement('foo').)
  • HTML 验证器(或某些尝试验证代码的 HTML 编辑器)可能会因这些标签而阻塞或将其解释为错误。这范围从不存在问题到完全破坏交易,具体取决于您的工作流程。
  • 未来的兼容性。根据您选择的标签名称,您发明的任何自定义标签名称在将来的某个时刻都有可能成为“真正的”html 标签,该标签具有您不期望的特定行为。2018年更新:当前的惯例是在所有自定义元素的名称中包含连字符,这消除了这种风险;未来的 HTML、SVG 和 MathML 元素的名称中永远不会包含连字符。
  • 您将不得不花费大量时间向惊愕的开发人员和维护人员解释不,这很好,它确实有效,不,它不是 XML,是的,它可以与屏幕阅读器一起使用,是的,它看起来确实很奇怪,但老实说,它完全没问题规范中有正确的
  • 通常没有特别的理由这样做,因为<span class="foo">做同样的事情<foo>没有 tsuris

使用自定义元素的原因

  • 因为你能

总的来说,我觉得不值得。

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

我可以使用自定义标签名称而不使用 Web 组件,仅用于样式设置吗? 的相关文章

随机推荐

  • 在 JavaScript 中,如何在不修改原始对象的情况下修改嵌套对象的值?

    如何在不使用额外空间的情况下将所有嵌套对象值更改为 true 任何人都可以帮助我吗 我已经尝试过这种方式 但我没有得到处理嵌套对象的逻辑 P S 请不要关注字符串中的 true 或 false 因为它是模拟数据 我只想实现我未能做到的逻辑
  • 防止锁传播

    在 bash 下进行锁定的一种简单且看似可靠的方法是 exec 9 gt gt lockfile flock 9 然而 众所周知 bash 会将这样的 fd 锁传播到所有分叉的东西 包括执行的程序等 有什么办法告诉 bash 不要重复 fd
  • 如何将服务暴露到k8s集群之外?

    我已经使用以下命令运行了 Hello World 应用程序 kubectl run hello world replicas 2 labels run load balancer example image gcr io google sa
  • 重新安装 WAMP,未找到 WordPress 表,但在 PHPMYADMIN 中

    好吧 情况很奇怪 我希望我不仅仅是运气不好 我从 Windows 7 升级到 8 当我升级时 WAMP 无法工作 我不假思索地重新安装了 WAMP 并按照网上的说明让 WAMP 正常工作 现在 我的 WordPress 站点将我重定向到安装
  • 两次dispatchKeyEvent调用方法

    我在我的活动中实现了dispatchKeyEvent来监听按下的Enter键 问题是 当我单击 Enter 时 它会调用我的方法两次 我怎样才能解决这个问题 谢谢 祝你有美好的一天 Override public boolean dispa
  • 可扩展列表适配器的问题

    我是Android开发的新手 所以我希望有人能帮助我解决这个问题 我正在尝试创建一个可扩展的列表 我尝试过谷歌搜索 并阅读了谷歌文档 但不知怎的 我无法理解它 我的代码在 eclipse 中没有给出错误 但是当在模拟器中运行它时 它会在启动
  • 为什么 Eclipse Juno 4.2 运行“JPA Java Change Event Handler”进程?

    我刚刚升级到 Eclipse Juno 4 2 我有一个完全干净的新工作区 但导入了以前在 Eclipse 3 7 中使用过的项目 因此其中有一些 Eclipse 元数据 当迁移到 4 2 时 我将项目转换为使用 Project Facet
  • 反应本机弹出不适用于反应本机 0.60.0

    Is 反应本机弹出不再工作了吗 它是否完全从react native中删除了 我在用反应本机版本 0 60 0 我什至无法在反应本机帮助 请检查图像以获取更多参考 同样在这里 此时 对您的项目进行全新备份 然后复制 android 和 io
  • Python 执行速度:笔记本电脑与台式机

    我正在运行一个进行简单数据处理的程序 解析文本 填充字典 对结果数据计算一些函数 该程序仅使用CPU RAM和HDD 从 Windows 命令行运行 输入 输出到本地硬盘 屏幕上没有显示或打印任何内容 没有网络 相同的程序运行在 台式机 W
  • 通过 VSTS API 将一个分支合并到另一个分支

    有没有一种方法可以使用 API 将一个分支合并到另一个分支 我看了这里 但它似乎没有为我提供我想要的解决方案 推送单个文件很乏味 https www visualstudio com en us docs integrate api git
  • 如何增强 lpsolve R 优化解决方案以在 hadoop 集群上运行?

    我正在使用 R lpsolve 包来优化我的交通模型 我的代码运行良好 但由于我有大量节点和路径 因此需要花费大量时间才能运行 我计划在 hadoop 集群上运行我的代码 请指导我需要对代码进行的更改 我认为在 hadoop 集群上运行优化
  • 如何在vba中的字符串中添加双引号?

    我想通过 vba 在单元格中插入包含双引号的 if 语句 这是我的代码 Worksheets Sheet1 Range A1 Value IF Sheet1 B1 0 Sheet1 B1 由于双引号 我在插入字符串时遇到问题 如何处理双引号
  • Perl 无法在具有 32 GB RAM 的 Snow Leopard Mac 服务器上分配超过 1.1 GB 的空间

    我有一台具有 32GB RAM 的 Mac 服务器 雪豹 当我尝试在 Perl v 5 10 0 中分配超过 1 1GB RAM 时 出现内存不足错误 这是我使用的脚本 usr bin env perl My snow leopard MA
  • 学习 JavaScript 最好、最有效的书是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 pandas 数据帧生成 sas7bdat 文件

    我想知道是否有任何Python库支持这种转换 目前我找到的选项是SASpy csv或SQL数据库 但不成功 这实际上不是一个编程问题 但希望这不会成为问题 我找到了这个帖子 将 pandas 数据框导出为 SAS sas7bdat 格式 h
  • pandas 相当于对多列使用 STRING_AGG 进行分组

    那么有没有一种方法可以对 DataFrame 对象进行分组 然后对于剩余的列 将所有条目放入一个集合 或具有过滤的唯一值的列表 中 所以像这样的事情 Name Date Amount purchase 0 Jack 2016 01 31 1
  • 绘制日志(n 除以 k)

    我以前从未使用过 Matlab 我真的不知道如何修复代码 我需要绘制 log 1000 over k 其中 k 从 1 到 1000 y x log nchoosek 1000 x fplot y 1 1000 Error Warning
  • 为什么 C# 中的字典对象不能进行 XmlSerialized?

    看来序列化是非常简单的 假设键和值都是可序列化的 还有什么比用 XML 表示键值对更简单的呢 对于所有评论者 首先 我很欣赏您的回答 但是 我对 workoraunds 不太感兴趣 网络上确实有很多 SerializedDictionary
  • jQuery 电子表格/网格插件,可从 Excel 复制/粘贴到 Excel [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用于电子表格或网格之类的 jQuery 插件 我发现了很多 jQuery Gridplugins https stackov
  • 我可以使用自定义标签名称而不使用 Web 组件,仅用于样式设置吗?

    令我惊讶的是 如果我使用自定义标签名称 然后将这些标签的样式设置为普通 html 标签的样式 现代浏览器似乎不会抱怨 它们的行为就像 span 元素 并且像 div 元素 如果我设置display block 我的意思是 即使我不使用聚合物