Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

177
Views
How to add background color to text inside textbox?

I do not know how to ask this question correctly and I do not know how to find solutions in google because it leads me to how to add entire background color to a textbox which I am not looking for. I am trying to achieve such results like image below:

enter image description here

I want to add background to each text(of course characters) inside a input tag except spaces. User will start typing stuff inside input tag and will apply background color but spaced text won't color.

I do not have any code because I do not know how to do it using css or JS if neccesary. I just have a

<input type="text">

I think it might use only JS but I do not know how to(of course I know JS). How do I achieve that?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

You can use div with contentEditable and use little js to append text as span

<div contentEditable></div>

CSS

span {
  background-color: red;
  margin-right: 2px;
}
div {
  border: 1px solid black;
}
var el = document.querySelector("div");

el.addEventListener("blur", () => {
  var content = el.textContent;
  var contents = content.split(" ");
  el.innerHTML = "";

  contents.forEach((item) => {
    el.innerHTML += `<span>${item}</span>`;
  });
});

Something like this

about 4 years ago · Juan Pablo Isaza Report

0

Another method is to overlap the input box with a "mirroring" element. The overlap must be precise, both in layout and text characteristics. Here is a minimal example:

var input = document.getElementById("input"),
  mirror = document.getElementById("input-mirror");

input.addEventListener("keyup", function() {
  var words = input.value.split(" ").map(function(a) {
    var span = document.createElement("span");
    span.textContent = a;
    return span;
  });
  mirror.innerHTML = "";
  for (let i = 0; i < words.length; i++) {
    mirror.append(words[i], " ");
  }
});
.container {
  display: grid;
}

#input,
#input-mirror {
  font: inherit;
  box-sizing: border-box;
  margin: 0;
  border: 1px solid;
  padding: 0;
  grid-row: 1;
  grid-column: 1;
}

#input {
  background: transparent;
}

#input-mirror > span {
  background: #0f0;
}
<div class="container">
  <span id="input-mirror"></span>
  <input id="input" type="text" />
</div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!