为什么CSS使用假元素?

在我的课堂上,我四处游玩,发现CSS使用了构成元素。

例:

imsocool {
    color:blue;
}
<imsocool>HELLO</imsocool>

为什么CSS使用假元素?

(大多数)浏览器被设计为(在某种程度上)与将来添加到HTML的前向兼容。 无法识别的元素被分析到DOM中,但没有与它们相关的语义或专门的默认渲染。

在规范中添加新元素时,有时可以使用CSS,JavaScript和ARIA在旧版浏览器中提供相同的功能(并且元素必须出现在DOM中,以便这些语言能够操作它们以添加该功能)。

(虽然应该指出,目前正在开发定义一种用自定义元素扩展HTML的方法,但是这项工作目前处于开发的早期阶段,所以应该在它成熟之前避免它。)

为什么我的教授不想让我使用化妆元素?

  • 它们不被HTML规范所允许
  • 它们可能与将来具有相同名称的标准元素相冲突
  • 可能存在更适合于该任务的现有HTML元素
  • 也; 为什么他不知道构成元素存在并与CSS一起工作。 他们不常见?

    是。 人们不会使用它们,因为它们有上述问题。


    TL; DR

  • 自定义标签在HTML中无效。 这可能会导致呈现问题。
  • 由于代码不便携,使未来的开发变得更加困难。
  • 有效的HTML提供了许多好处,例如SEO,速度和专业性。
  • 长答案

    有一些参数使用自定义标签的代码更加实用。

    但是,它导致无效的HTML。 这对您的网站不利。

    有效的CSS / HTML |点 堆栈溢出

  • 谷歌更喜欢它,所以它对SEO很有用。
  • 它使您的网页更有可能在尚未测试的浏览器中运行。
  • 它让你看起来更专业(至少对一些开发者而言)
  • 合规的浏览器可以渲染[有效的HTML更快]
  • 它指出了你可能错过的一些晦涩的错误,这些错误会影响你可能没有测试过的东西,例如页面的代码页或语言集。
  • 为什么要验证| W3C

  • 作为调试工具进行验证
  • 验证作为未来的质量检查
  • 验证简化了维护
  • 验证有助于传授良好做法
  • 验证是专业化的标志

  • YADA(又一个(不同的)答案)

    编辑:请参阅BoltClock关于类型vs标记vs元素的评论。 我通常不担心语义,但他的评论是非常合适和信息丰富的。

    虽然已经有一堆好的回复,但你表示你的教授促使你发布这个问题,看起来你(正式)在学校。 我想我会深入阐述一下,不仅是CSS,还有Web浏览器的机制。 根据维基百科,“CSS是用于描述...写标记语言文档的样式表语言。” (我强调了“a”)注意,它没有说“用HTML编写”,更不用说特定版本的HTML。 CSS可用于HTML,XHTML,XML,SGML,XAML等。当然,您需要的东西将呈现每种这些文档类型,这些文档也将应用样式。 根据定义,CSS不知道/理解/关心特定的标记语言标记。 因此,就HTML而言,标签可能是“无效的”,但CSS中没有“有效”标签/元素/类型的概念。

    现代的视觉浏览器不是单一的程序。 它们是具有特定工作要做的不同“发动机”的混合物。 至少我可以考虑3个引擎,渲染引擎,CSS引擎和JavaScript引擎/ VM。 不确定解析器是否是渲染引擎的一部分(反之亦然),或者它是否是单独的引擎,但您明白了。

    无论视觉浏览器(其他人是否已经解决了屏幕阅读器可能遇到处理无效标签的其他挑战)这一事实,格式化取决于解析器是否在文档中留下“无效”标签,然后渲染引擎是否应用样式到那个标签。 由于它会使开发/维护变得更加困难,CSS引擎不会被理解为“这是一个HTML文档,所以这里是有效的标签/元素/类型列表”。 CSS引擎只需找到标签/元素/类型,然后告诉渲染引擎,“这是您应该应用的样式。” 渲染引擎是否决定实际应用这些样式已经过去了。

    这是一个简单的方法来思考从引擎到引擎的基本流程:解析器 - > CSS - >渲染。 事实上它更复杂,但对于初学者来说这已经足够了。

    这个答案已经太长了,所以我会在那里结束。

    链接地址: http://www.djcxy.com/p/71219.html

    上一篇: Why does CSS work with fake elements?

    下一篇: Reverse 3d rotation in CSS3