JSFiddle - React, Tailwind, and code Playground
by secretgspot
HTML
<header>
<h1>DATA URI Playground</h1>
</header>
<div id="wrapper">
<div id="source">
<div>
<textarea readonly></textarea>
<p></p>
</div>
</div>
<div id="datauri">
<div><textarea></textarea></div>
</div>
</div>
CSS
/**
* @charset utf-8
* @modified October 23, 2010
* @description DATA URI Playground用
* @author Tohl SMALLFIELD @ blades
*/
/*------------------------------------------------------------------------------
テキスト画像代替
------------------------------------------------------------------------------*/
h1
{
display: block;
margin: 0;
padding: 0;
border-style: none;
text-indent: -10000px;
text-decoration: none;
text-align: left;
}
/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/
html,
body,
h1,
div,
p,
textarea,
img,
span{
margin: 0;
padding: 0;
font-size: 100%;
}
body{
background: #002b66 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAABGCAMAAADRobVsAAABDlBMVEUAK2YAKmcAK2cAK2kAKWUALGkAKmgAKWYAMXEALGgAOo0AIlQALmwANJUAI1QAHUcAMXIAHkYAOJIAKWcAKWQAJFgAIlUAGjwAH0wAGDkAM5QAN5IAGTsAOoUAI1cAKGMAOIEAL24AO4wAKGIALpMAOYgAHUYAKI4AHEMAJ18AGDgAHkkAJFoAH00ANXoAOY4AHEQANn0AIFAAGToAM3UALJEAI1kANpQAIk4AOH8AGz8AIEsAH0gAJl0AOZEAH0oAJmAAJV0ANHcAKWMAOYQAMJUAH08AMZQAJV4AJ40AKpAAHEIAHUIAOYkAGj0AJloAGz0AIVMAJ2IAJFsAI1gAJ2EAK2gAG0AAIVIAJl/CWkQ6AAAAo0lEQVRo3m3Ix0LCQAAA0dnNJhTpoihKb4pUwYoFEEGqoKb9/49I7szhHYb6nPMtvRqXNqkFmxXPd9hxlmWuXuh8Uh0QnXHzyHuaM4dmmGmE2wecE3YXHH1zmiD7yt8b99c02vyajIJ8feAWcRXDNaaPnwolQS5D0kBNUBoq7+l7QuztcqwhWggdY4zUkX3vixiGhvQjA8gC0kKEEBJ0EGBxqH+qPRGw5e5nHAAAAABJRU5ErkJggg==) repeat-x scroll left top;
}
h1{
position: absolute;
top: 2px;
left: 7px;
width: 351px;
height: 53px;
background-image:...
JavaScript
/**
* @charset utf-8
* @modified October 27, 2010
* @description DATA URI Playground用
* @author Tohl SMALLFIELD @ blades
*/
window.FileReader ? (function(){
var win = this,
doc = win.document,
bdy = doc.body;
var initialized = false;
//検証中/未使用
var atobAsync = function(b64, onSuccess, onError){
var ifr = doc.createElement("iframe");
ifr.onload = function(){
try{
//chrome contentWindow取得できず
var idoc = ifr.contentWindow.document;
//onSuccess( idoc.body.getElementsByTagName("pre")[0].innerHTML );
onSuccess( idoc.body.textContent );
}catch(err){
try{
onSuccess( atob(b64) );
}catch(err){
onError(err);
}
}finally{
ifr.onload = null;
bdy.removeChild(ifr);
ifr = null;
}
};
try{
ifr.src = "data:text/plain;charset=utf-8;base64," + b64;
}catch(err){
onError(err);
}
bdy.appendChild(ifr);
};
var source = (function(){
var txt = doc.querySelector("#source textarea"),
p = doc.querySelector("#source p");
return {
clear : function(){
txt.blur();
p.style.display = "block";
p.innerHTML = txt.value = "";
},
add : function(data, data2){
initialized || (initialized = true) && (bdy.className = "initialized");
if(!data){
datauri.cls("-invalid");
return;
}
//
// data:[<MIME-type>][;charset=<encoding>][;base64],<data>
//
var mtc = /^data:([^\/]+)\/[^,]+,/.exec(data);
if(mtc){
var typ = mtc[1],
b64 = data.replace(mtc[0], "");
switch(typ){
case "image" :
var spn = doc.createElement("span"),
img = new Image(),
tmr;
p.style.display = "block";
img.onload = function(){
var sty = img.style,
...