schema.org.ComputerLanguage.Hover.201702151327

Animate SVG with CSS.

by ytyaru

HTML

<script id="lang-ld" type="application/ld+json">
[{
  "@context": "http://schema.org",
  "@type": "ComputerLanguage",
  "name": "C",
  "description": "汎用プログラミング言語",
  "disambiguatingDescription": "手続き型言語、関数型言語、コンパイラ言語。",
  "url": "https://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E",
  "image": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI1NnB4IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjU2IDI1NjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cGF0aCBkPSJNMTY5LjE0MywxNzYuOTgxYy03LjcwMywzLjczMS0xNy43NjIsNS41OTEtMzAuMTcsNS41OTFjLTE2LjE5NiwwLTI4LjkyOS00Ljc1OC0zOC4xOTctMTQuMjc3CgljLTkuMjg0LTkuNTIxLTEzLjkxOC0yMi4yMDMtMTMuOTE4LTM4LjA1MWMwLTE2Ljg3OSw1LjIxNS0zMC41NjksMTUuNjQ2LTQxLjA2NmMxMC40MjMtMTAuNTAxLDIzLjk1My0xNS43NTEsNDAuNTg0LTE1Ljc1MQoJYzEwLjMwOCwwLDE4Ljk4NiwxLjI5OCwyNi4wNTUsMy45MDJ2MjIuODg1Yy03LjA2OC00LjIxNi0xNS4xMTEtNi4zMjQtMjQuMTQxLTYuMzI0Yy05LjkwMywwLTE3LjkwOCwzLjExNS0yMy45OTIsOS4zNDYKCWMtNi4wODQsNi4yMzEtOS4xMjEsMTQuNjY3LTkuMTIxLDI1LjMxNGMwLDEwLjIwNiwyLjg2NywxOC4zMzksOC42MDksMjQuMzkyYzUuNzM0LDYuMDY3LDEzLjQ2OSw5LjA5NSwyMy4xOCw5LjA5NQoJYzkuMjc1LDAsMTcuNzYyLTIuMjUyLDI1LjQ2NS02Ljc3M1YxNzYuOTgxeiIvPgo8L3N2Zz4K"
},
{
  "@context": "http://schema.org",
  "@type": "ComputerLanguage",
  "name": "C++",
  "alternateName": "cpp",
  "description": "汎用プログラミング言語",
  "disambiguatingDescription": "C言語の拡張として開発された。",
  "url": "https://ja.wikipedia.org/wiki/C%2B%2B",
  "sameAs": ["https://ja.wikipedia.org/wiki/C%2B%2B",...

CSS

.LangImg {
  transition: all 200ms 0s ease;
}
.LangImg:hover {
  background: #ccc;
  width: 96px;
  height: 96px;
}

JavaScript

langs = JSON.parse(document.getElementById('lang-ld').text); document.body.insertBefore(createLanguageTags(langs), document.body.firstChild);

function createLanguageTags(langs)
{
  var fragment = document.createDocumentFragment();
  for (var i = 0; i < langs.length; i++)
  {      
  fragment.appendChild(createImageLinkTag(langs[i].image, langs[i].url, langs[i].description));
  }
  fragment.appendChild(document.createElement('br'));
  return fragment;
}
function createImageLinkTag(src, href, title)
{
  var a = document.createElement('a');
  a.appendChild(crateImageTag(src));
  //a.appendChild(crateImageByObjectTag(src));
  a.setAttribute("href", href);
  a.setAttribute("title", title);
  return a;
}
function crateImageTag(src)
{
  var img = document.createElement('img');
  img.setAttribute("src", src);
  img.setAttribute("width", 64);
  img.setAttribute("width", 64);
  img.setAttribute("class", "LangImg");
  return img;
}