8

I'm looking to style a li element, and would like to modify this CSS property:

li:before {
    color: blue; 
}

However, I am restricted to only using html, inline, styling. I don't have access to the section of the document I'm working on.

Is what I am trying to do, doable, and, if so, how?

blueberryfields
  • 45,910
  • 28
  • 89
  • 168

3 Answers3

7

You can insert a new stylesheet inline with the following HTML:

<style>
  li:before { color: red; }
</style>

The reason this is the only way to do it is that :before is a pseudo-element, meaning that it doesn't actually become part of the DOM. Unfortunately, this means there is no way to style it inline, as requested.

As an example:

<li style="color: red;">text</li>

would style the entire LI element, not just it's :before pseudo-element, and because the :before element has no markup, it can not have it's own style= property.

Troy Alford
  • 26,660
  • 10
  • 64
  • 82
  • 1
    [` – zzzzBov May 02 '13 at 19:26
  • While Zzz is right, I commonly see – Sean May 02 '13 at 20:30
  • 1
    @smclark89: yes - my point was not that it is a *good* way to solve the problem, but given the fairly stark restrictions provided by the OP, it seems necessary. – Troy Alford May 02 '13 at 23:10
  • The `scoped` attribute has been removed from all browser support. Including it in this answer will create more confusion than help. – Pluto Feb 12 '20 at 19:13
  • Yes, good point - thank you for the reminder to update this answer. I'll do so shortly. – Troy Alford Feb 12 '20 at 23:03
2

In CSS, inline styles take precedence over linked CSS files, so you could do something like this with your li elements:-

<li style="color: red;">This is a list item</li>

And it would take precedence over either a linked stylesheet, or an internal stylesheet.

If you're wanting to use more complex selectors, you're out of luck unfortunately.

See: CSS Pseudo-classes with inline styles

Community
  • 1
  • 1
Mat Richardson
  • 3,576
  • 4
  • 31
  • 56
1

You can add:

<style scoped>
    li:before {
        color: red;
    }
</style>

Anywhere as a direct child of the <body> element and it will apply to the whole page, while also being valid HTML5.

zzzzBov
  • 174,988
  • 54
  • 320
  • 367