【问题标题】:How do I insert quotes inside inline CSS? [duplicate]如何在内联 CSS 中插入引号? [复制]
【发布时间】:2019-02-12 02:27:08
【问题描述】:

如何将下面的 CSS 插入 HTML?

这是我要转换为 HTML 的 CSS:

.group .circular-progress::before {
  ...
  content: "10%";
  ...
}

这是我尝试做的:

<div class="group">
    <div class="circular-progress" style="content: '10%'"></div>
</div>

让我失望的是 ::before 元素,或者单引号不起作用的事实。

更新:

它现在可以与以下代码一起使用,但遇到了一个新的 Ruby 相关问题。

<% if @goals.empty? %>
    <%= "You don't have any goals entered yet." %>
<% else %>
    <% @goals.each do |g| %>
        <% puts g.value %>
        <style>.group .circular-progress::before {content: "<%= g.value %>%";}</style>
        <div class="group">
          <div class="circular-text"><%= g.name %></div>
          <div class="circular-progress" style="background: linear-gradient(90deg, #e0e0e0 50%, transparent 50%, transparent), linear-gradient(270deg, #ff70a6 50%, #e0e0e0 50%, #e0e0e0);"></div>
        </div>
    <% end %>
  <% end %>

在我放置 g.value 的那一行,它存储了正确的输入。例如 - 如果值是 [50, 10, 100, 40],它正在正确打印它们。但是,每次我向@goals 数组添加一个新元素时,它都会覆盖样式内容属性,因此它在网页上四次都显示为 40。例如,如果我添加 30,它会显示 30 全部五次,等等。

【问题讨论】:

  • 只是一个猜测,但您可以搜索双引号的转义字符是什么。此外,您似乎在某处缺少双引号,您现在只有 3 个,这是不完整的。
  • 我只是想指出 CSS 选择器 .group .circular-progress::before 看起来不像是 OP 想要的选择器。在提供的代码中,没有.group - 没有元素具有类名组。不过,有一个具有 group 属性/属性的元素 - [group] .circular-progress::before 看起来像您实际要查找的内容。是否有可能您此时只是尝试内联添加此样式,因为您尝试将第一个选择器作为外部 CSS 的一部分但未能应用您想要的样式?
  • @Chris O'Kelly:看起来这种不一致已经得到纠正。问题确实在于他们试图在一个内联样式属性中指定一个伪元素样式——这是行不通的。

标签: html css ruby-on-rails ruby


【解决方案1】:

您不能为伪元素指定内联样式。 content 用于 :before:after 伪元素。

content 属性与 ::before 和 ::after 一起使用 伪元素,插入生成的内容。

https://www.w3schools.com/cssref/pr_gen_content.asp

所以你最终可能会做这样的事情:

<style>.group .circular-progress::before {content: "10%";}</style>
<div class="group">
    <div class="circular-progress"></div>
</div>

更新:

.group .circular-progress::before 类选择器中的最后一个值将覆盖之前的类参数,因为它具有相同的类选择器名称。要让您的循环正常工作,请设置一个循环索引或简单地在循环上使用您的 g.value 并为您的元素打印一个“唯一”类选择器。

样式将如下所示:

<style>.group .circular-progress.prog-ind-10::before {content: "10%";}</style>

还有元素:

<div class="circular-progress prog-ind-10" ...></div>

因此,每种样式都会有不同的类选择器,例如 prog-ind-10prog-ind-20 等,这样可以避免重载问题。

您的循环将如下所示:

<% if @goals.empty? %>
    <%= "You don't have any goals entered yet." %>
<% else %>
    <% @goals.each do |g| %>
        <% puts g.value %>
        <style>.group .circular-progress.prog-ind-<%= g.value %>::before {content: "<%= g.value %>%";}</style>
        <div class="group">
          <div class="circular-text"><%= g.name %></div>
          <div 
             class="circular-progress prog-ind-<%= g.value %>" 
             style="background: linear-gradient(90deg, #e0e0e0 50%, transparent 50%, transparent), linear-gradient(270deg, #ff70a6 50%, #e0e0e0 50%, #e0e0e0);">
           </div>
        </div>
    <% end %>
  <% end %>

【讨论】:

  • 它几乎可以工作了!我能够动态更改内容样式。但是,它产生了一个与 Ruby 相关的问题,其中的 for 循环每次都会覆盖内容。我现在正在更新帖子。
  • 好吧 40 问题正在发生,因为 CSS 类具有相同的名称。请查看我的更新答案。
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 2021-08-25
  • 1970-01-01
  • 2019-02-15
  • 2016-01-18
  • 2019-12-13
  • 1970-01-01
  • 2021-05-10
相关资源
最近更新 更多