Css ::after 与使用 Twig 应用的链接文本未显示在同一行上

Posted

技术标签:

【中文标题】Css ::after 与使用 Twig 应用的链接文本未显示在同一行上【英文标题】:Css ::after NOT displaying on same line for link text as applied using Twig 【发布时间】:2021-04-23 05:13:31 【问题描述】:

问题:

我正在尝试自动在 Drupal 8 站点上的链接文本末尾添加一些内容,该站点使用带有 ::after CSS 函数的 twig。比如:

    &::after 
     content: '!!!!';

虽然内容是在页面上输出的,但当显示设置为“display=block”时,它会被添加到下一行。换句话说,Chrome 控制台中的 html 如下所示:

::before
<div>
     a Twig output <a href=”http://link>Link Title Text</a> 
</div>
::after

看起来像:

Link Title Text
Continuation of Link Title Text
!!!!

我希望输出的样子是:

Link Title Text
Continuation of Link Title Text!!!!

我最接近的方法是将显示更改为“display: inline-flex”。如果标题文本仅在一行上,这可能会正常工作。但是,链接的标题文本通常占用 2 行(或更多)行,因此在这种情况下的结果是:

Link Title Text             !!!!
Continuation of  Link Title Text

而不是想要的:

Link Title Text
Continuation of Link Title Text!!!!

更复杂的是,我注意到从“display:block”更改为“display:inline-flex”会在上方和下方添加额外的间距,这对页面样式不起作用。

我假设 ::after 应用于“href=”而不是链接的标题。是否可以将 ::after 应用于链接的标题文本而不是“href=”链接以获得所需的结果?

Twig 相关的 Twig 代码如下所示:

<div>% for linktitle in linktitle_arr %<a  attributes.addClass(link_classes)  target="_blank" href="url_">linktitle.value</a>% endfor %</div>

非常感谢任何见解。

更新 - 解决方案 - 更新 -

只是想用我的发现以及我如何“解决”这个问题来更新这篇文章。

问题并没有像我最初怀疑的那样出在 Twig 身上。这是一个“明确修复黑客”的问题。如果您不熟悉,代码/hack 如下所示:

@mixin clearfix() 
  &:before,
  &:after 
    content: " "; // 1
    display: table; // 2
  
  &:after 
    clear: both;
  

问题的根源在于使用“display: table”将附加的伪元素“低于”父元素放到一个新列中,而不是像预期的那样沿着同一行,正如上面我的原始问题。

如果您遇到此问题并使用 clear-fix,则必须针对您的特定用例对其进行修改。在我的情况下,我解决了这个问题,同时提出了新的问题来处理,结果超出了这个更新的范围。打地鼠。

还应注意,在我的特定情况下,所讨论的页面是基于 Bootstrap 3 子主题构建的自定义主题。 Bootstrap 本身使用完整的 clear-fix 代码,但是,在 Drupal 核心内部还有一个修改版本,它也影响了 :after 伪元素的正确预期功能。

您可以在以下位置找到 Drupal 核心清除修复:

/core/modules/system/css/components/clearfix.module.css

【问题讨论】:

【参考方案1】:

你可以使用那个a标签的伪元素。

树枝:

<div>% for linktitle in linktitle_arr %<a  attributes.addClass(link_classes)  target="_blank" href="url_">linktitle.value</a>% endfor %</div>

CSS:

a::after 
  content: '!!!!';

演示: https://codepen.io/eliortabeka/pen/rNMPQRP

应该做的工作。

【讨论】:

感谢您的参与。我曾希望它会像您想象的那样简单,但在这个网站上理论上的任务似乎越简单,结果恰恰相反.检查上面的最终解决方案和解释。

以上是关于Css ::after 与使用 Twig 应用的链接文本未显示在同一行上的主要内容,如果未能解决你的问题,请参考以下文章

在带有 Symfony2 的 Twig 中使用 % stylesheets % 标签时通过 Twig 运行 CSS 文件

before与after的一些应用总结

如何创建可重用的 Twig 组件

css中的:before与:after的简单使用

:after 与 ::after

伪元素::before与::after的用法