JSFiddle - React, Tailwind, and code Playground

by Sascha

HTML

<!DOCTYPE HTML>
<html>
<head>
<style>
#div1 {
  width: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
</style>
<script>
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("Text", ev.target.id);
}

function drop(ev) {
  var data = ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementById(data));
  ev.preventDefault();
  focusInputElement();
}

function focusInputElement() {  
  document.getElementById('inputEl').classList.add('focused');
}

function removeBlink() {
  document.getElementById('inputEl').classList.remove('focused');
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<p id="drag1" draggable="true" ondragstart="drag(event)">This is a draggable paragraph. Drag this element into the rectangle.</p>
<input id="inputEl" onfocus="removeBlink()" />
<button onclick="focusInputElement()">focus</button>

</body>
</html>

CSS

input:focus {
  background-image:none;
}
input.focused {
  animation: blink-empty 2s infinite;
  background-image:/*linear-gradient(black,black)*/ linear-gradient(black,black);
  background-position: 1px  center;
  background-repeat: no-repeat;
  background-size:1px 1.2em;
}
@keyframes blink-empty {
  10%, 90%{background-size:1px 1.2em;}
  50% {background-size: 0 1.2em;}
}