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;}
}