Search code examples
javascripthtmlcsspseudo-element

How to update placeholder color using Javascript?


I'm searching online and I didn't find anything. I'm trying to update the placeholder color of a textbox using javascript, but how can I do that? I have a color picker and the color is changing.

If I have something like this in my CSS, how can I update it?

::placeholder {
  color: red;
}
<input placeholder="placeholder" />

Is there a javascript command to edit this? Something like

document.getElementById('text').style.placeholderColor = newColor;

Solution

  • Use CSS variables. You can also target only the needed element

    function update() {
      document.querySelector('input[type=text]').style.setProperty("--c", "blue");
    }
    ::placeholder {
      color: var(--c, red);
    }
    <input type="text" placeholder="I will be blue">
    <input type="number" placeholder="I will remain red">
    <button onclick="update()">change</button>

    CSS variables are useful when it comes to modify pseudo elements that you cannot access with JS such as :before/:after/::placeholer/::selection, etc. You simply define your custom property that you can easily update on the main element and the pseudo element will inherit it.

    Related : Selecting and manipulating CSS pseudo-elements such as ::before and ::after using jQuery