当前位置: 首页 > 知识库问答 >
问题:

当display:inline自定义元素包含display:block元素时会出现什么问题?

姚晋
2023-03-14

我正在构建一个自定义元素来标记示例(在http://jsbin.com/kiboxuca/1/edit):

<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.2.0/platform.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.2.0/polymer.js"></script>
<polymer-element name="my-example" noscript>
  <template>
    <style>
      :host { display: inline }
    </style>
    [ <em>Example:</em>
    <content></content>
    — <em>end example</em> ]
  </template>
</polymer-element>
<div>
  Some text <my-example>Introduction
  <pre>Some code here</pre>
  More example</my-example>
</div>

这将产生我想要的外观:

部分文本[示例:简介

Some code here

更多示例-结束示例]

但是,因为它使

样式

像这样违反CSS-box模型会产生什么样的问题,我该如何缓解这些问题?


共有1个答案

荀子轩
2023-03-14

第9.2节对此进行了规定。CSS2的第1.1条。1个规范,描述匿名块框。

规范中的描述非常详细,所以我不会在这里引用,但基本上发生的是

虽然内联框包含块级框可能没有多大意义——毕竟,规范确实说为了呈现的目的将其分解成一堆匿名框——但这种情况下的行为定义非常明确,因此(或至少应该)跨浏览器是可靠的。除了晦涩难懂的浏览器bug之外,你不应该遇到任何问题,我目前还不知道这些bug,尽管Chrome在包含块框的a元素中表现得非常怪异。

下面是一个例子:

<polymer-element name="my-example" noscript>
  <!-- ... -->
</polymer-element>
<div>

  <anonymous-block>
    <anonymous-inline>Some text </anonymous-inline>
    <my-example>
      [ <em>Example:</em>
      Introduction
    </my-example>
  </anonymous-block>

  <pre>Some code here</pre>

  <anonymous-block>
    <my-example>
      More example
      — <em>end example</em> ]
    </my-example>
  </anonymous-block>

</div>

当然要注意,

 类似资料:
  • 问题内容: 当具有边距的元素包含在另一个元素中时,父级不会始终包裹/包含该边距。 许多事情将导致父母控制孩子的保证金: (这只是经过一点测试,毫无疑问,还有更多。) 我认为这与利润下降有关,但是: W3C规范页面没有此类行为的描述。 这里没有重叠的边距。 在此问题上,所有浏览器的行为似乎都是一致的。 该行为受到与边距无关的触发器的影响。 根据逻辑,默认元素应包含与溢出设置为自动元素不同的材料? 为

  • 使用Ember.Component子类自定义元素,并将tagName属性设置为它。 语法 (Syntax) import Ember from 'ember'; export default Ember.Component.extend ({ tagName: 'tag_name' }); 例子 (Example) 下面给出的示例指定使用tagName属性自定义组件的元素。 创建一个名为p

  • 问题内容: 我正在试验粘性导航,但遇到了问题。问题是,当我将导航栏放在其他元素中时,它不再具有粘性。 问题答案: 粘性位置考虑父元素的行为。在您的情况下,父元素的高度由sticky元素定义,因此该元素没有粘性。 添加边框以更好地查看问题: 现在将高度添加到父元素,看看发生了什么: 粘性行为很好,因为父元素上有足够的高度,可以在特定阈值之后固定该元素。 粘性放置的元素是其计算的位置值为粘性的元素。它

  • 我试图实现一个自定义元素,以便由Micronaut的Infoendpoint发布,但是当查询时,不会出现自定义数据。使用Micronaut 2.4.0版。 以下是我到目前为止的代码: null null 谢谢 基督徒

  • 使用以下json: 当请求id A时,返回值1的jsonpath是什么? 根据https://stackoverflow.com/a/47576707我可以检索包含以下内容的ids元素: or 与结果: 但是我想访问它的兄弟姐妹的值()。 提前谢谢!

  • 问题内容: 我想问一下高度和漂浮物是如何工作的。我有一个外部div和一个内部div,其中包含内容。它的高度可能取决于内部div 的内容,但似乎我的内部div会溢出其外部div。正确的做法是什么? 问题答案: float大多数初学者都误解了该属性。好吧,到底是做float什么的?最初,float引入了该属性,以使文字围绕图像浮动left或浮动right。这是 @Madara Uchicha 的另一种