当前位置: 首页 > 面试题库 >

将CSS应用于HTML5自定义元素的正确方法

连志义
2023-03-14
问题内容

我有一个名为的自定义HTML5标签<scroll-content>。实际上,此标记是由框架在HTML文件内部的某些位置为我创建和插入的。现在,我想修改此标记的CSS,以便在我的CSS文件中:

scroll-content{
  overflow: hidden;
}

它确实完成了预期的工作,但这是自定义标签样式的正确方法吗?

我不能向它们添加类,因为我没有创建标签,框架却没有,因此我无法在代码中访问它们,并且我想避免使用Javascript查找这些标签并以这种方式添加类。

我想知道修改自定义标签的标准/最安全的方法。


问题答案:

您可以将CSS应用于自定义元素,就像将其应用于标准HTML元素一样。

scroll-content { ... }正如您的代码所写,没什么问题。

一点背景

在基本级别上,浏览器不知道存在哪些元素。它无法识别任何内容, 直到将其暴露给默认样式表(sample) 为止

默认样式表将浏览器引入HTML元素。

因此,可以将自定义元素定义为默认样式表中未包含的元素。(存在但浏览器不支持的元素可以共享此定义。)

但是,可以以作者样式将自定义元素引入浏览器。

这里有一些重要的考虑因素:

如果浏览器无法识别元素(即,它不在默认样式表中),它将应用CSS 初始值

6.1.1指定值

用户代理必须首先根据以下机制(优先顺序)为每个属性分配一个指定的值:

  1. 如果级联产生一个值,请使用它。

  2. 否则,如果该属性被继承并且该元素不是文档树的根,请使用父元素的计算值。

  3. 否则,请使用属性的初始值。每个属性的初始值在属性的定义中指示。

如上所述,如果无法识别元素(#1和#2不适用),请使用属性定义中的初始值(#3适用)。

因此,在您的情况下:

  • 您的自定义元素是: <scroll-content>

  • 您的CSS是: scroll-content { overflow: hidden; }

  • 您在问题中说这段代码可以实现预期的功能。但是,除非您提到的框架为自定义元素提供其他样式,否则它将无法工作(demo)。

原因如下:

  • 由于<scroll-element>不在默认样式表中,因此它将使用CSS初始值。

  • 好,该display属性的初始值为inline

  • 但是该overflow属性仅适用于块元素

因此,有没有办法这个HTML / CSS组合可以工作-
overflow属性将被忽略,因为会heightwidth并且不适用任何其他属性内联元素。

需要自定义元素才能display:block申请overflow工作(demo)。

类似地,唯一的原因bodydivh1pul的形式存在的块元素是因为它们被以这种方式定义的默认的样式表(样品)。

因此,撇开支持和反对自定义元素的参数,这是底线:

添加display: block到您的自定义元素,您就可以做到。



 类似资料:
  • 问题内容: 我一直无法找到关于自定义标记在HTML5中是否有效的明确答案,如下所示: 而且自定义标签似乎无法通过W3C验证器进行验证。 问题答案: “ 自定义元素”规范在Chrome和Opera中可用,并且在其他浏览器中也可用。它提供了一种以正式方式注册自定义元素的方法。 自定义元素是作者可以定义的新型DOM元素。与无状态且短暂的装饰器不同,自定义元素可以封装状态并提供脚本接口。 自定义元素以及模

  • 问题内容: 是否可以为元素定义CSS样式,仅在匹配的元素包含特定元素(作为直接子项)时才适用? 我认为最好用一个例子来解释。 注意 :我正在尝试设置 父元素的样式 ,具体取决于其包含的子元素。 注意2 :我知道我可以使用javascript来实现,但是我只是想知道是否可以使用一些(对我而言)未知的CSS功能。 问题答案: 据我所知,基于子元素设计父元素的样式不是CSS的可用功能。您可能需要为此编写

  • 问题内容: 我有一个现有的网站,上面有很多用表格布置的旧页面和表格,我正尝试逐步过渡到CSS。我想使用Twitter Bootstrap样式表-特别是表单样式- 但仅在我明确要求它们的页面部分中使用。例如,我可能将整个表单围绕在div中,如下所示: 我希望所有其他形式保持与现在相同,因为我将无法同时更改所有形式。有没有简单的方法可以做到这一点?我可以遍历Bootstrap CSS中的每种样式,并添

  • 主要内容:什么是语义元素?,浏览器支持,HTML5中新的语义元素,HTML5 <section> 元素,实例,HTML5 <article> 元素,实例,HTML5 <nav> 元素,实例,HTML5 <aside> 元素,实例,HTML5 <header> 元素,实例,HTML5 <footer> 元素,实例,HTML5 <figure> 和 <figcaption> 元素,实例,我们可以开始使用这些语义元素吗?,Internet Explorer 8 及更早IE版本中的问题语义= 意义 语义

  • 语义= 意义 语义元素 = 有意义的元素 什么是语义元素? 一个语义元素能够清楚的描述其意义给浏览器和开发者。 无语义 元素实例: <div> 和 <span> - 无需考虑内容. 语义元素实例: <form>, <table>, and <img> - 清楚的定义了它的内容. 浏览器支持 Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera

  • 我正在用Vaadin创建一个web应用程序。我发现可以使用CSS添加自定义布局,或者在现有的vaadin组件中创建自己的主题。是否有可能在Vaadin应用程序中添加您自己的html元素和css?如果是,您如何实现?(Java 8,Intellij IDEA)