化学元素周期表(Periodic table of elements)是根据原子量从小至大排序的化学元素列表。列表大体呈长方形,某些元素周期中留有空格,使特性相近的元素归在同一族中,如碱金属元素、碱土金属、卤族元素、稀有气体,非金属,过渡元素等。这使周期表中形成元素分区且分有七主族、七副族、Ⅷ族、0族。由于周期表能够准确地预测各种元素的特性及其之间的关系,因此它在化学及其他科学范畴中被广泛使用,作为分析化学行为时十分有用的框架。
俄国化学家德米特里·伊万诺维奇·门捷列夫(Dmitri Mendeleev)于1869年总结发表此周期表(第一代元素周期表),此后不断有人提出各种类型周期表不下170余种,归纳起来主要有:短式表(以门捷列夫为代表)、长式表(以维尔纳式为代表)、特长表(以波尔塔式为代表);平面螺线表和圆形表(以达姆开夫式为代表);立体周期表(以莱西的圆锥柱立体表为代表)等众多类型表。

化学元素是构成这个世界的基石,也是无数科学工作者的梦幻表格。我对这种东西很感兴趣,偶尔看到一个超炫酷的js绘制的化学元素周期表,跟大家分享一下,下面是效果图:

在线预览地址

index.html代码段:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title>three.js css3d - periodic table</title>
<style>
html, body {height: 100%;
}body {background-color: #000000;margin: 0;font-family: Helvetica, sans-serif;;overflow: hidden;
}a {color: #ffffff;
}#info {position: absolute;width: 100%;color: #ffffff;padding: 5px;font-family: Monospace;font-size: 13px;font-weight: bold;text-align: center;z-index: 1;
}#menu {position: absolute;bottom: 20px;width: 100%;text-align: center;
}.element {width: 120px;height: 160px;box-shadow: 0px 0px 12px rgba(0,255,255,0.5);border: 1px solid rgba(127,255,255,0.25);text-align: center;cursor: default;
}.element:hover {box-shadow: 0px 0px 12px rgba(0,255,255,0.75);border: 1px solid rgba(127,255,255,0.75);
}.element .number {position: absolute;top: 20px;right: 20px;font-size: 12px;color: rgba(127,255,255,0.75);}.element .symbol {position: absolute;top: 40px;left: 0px;right: 0px;font-size: 60px;font-weight: bold;color: rgba(255,255,255,0.75);text-shadow: 0 0 10px rgba(0,255,255,0.95);}.element .details {position: absolute;bottom: 15px;left: 0px;right: 0px;font-size: 12px;color: rgba(127,255,255,0.75);}button {color: rgba(127,255,255,0.75);background: transparent;outline: 1px solid rgba(127,255,255,0.75);border: 0px;padding: 5px 10px;cursor: pointer;
}
button:hover {background-color: rgba(0,255,255,0.5);
}
button:active {color: #000000;background-color: rgba(0,255,255,0.75);
}
</style>
</head>
<body>
<script src="js/three.min.js"></script>
<script src="js/tween.min.js"></script>
<script src="js/TrackballControls.js"></script>
<script src="js/CSS3DRenderer.js"></script><div id="container"></div>
<div id="info"><a href="http://threejs.org" target="_blank">three.js css3d</a> - periodic table. <a href="https://plus.google.com/113862800338869870683/posts/QcFk5HrWran" target="_blank">info</a>.</div>
<div id="menu">
<button id="table">TABLE</button>
<button id="sphere">SPHERE</button>
<button id="helix">HELIX</button>
<button id="grid">GRID</button>
</div><script>var table = ["H", "Hydrogen", "1.00794", 1, 1,"He", "Helium", "4.002602", 18, 1,"Li", "Lithium", "6.941", 1, 2,"Be", "Beryllium", "9.012182", 2, 2,"B", "Boron", "10.811", 13, 2,"C", "Carbon", "12.0107", 14, 2,"N", "Nitrogen", "14.0067", 15, 2,"O", "Oxygen", "15.9994", 16, 2,"F", "Fluorine", "18.9984032", 17, 2,"Ne", "Neon", "20.1797", 18, 2,"Na", "Sodium", "22.98976...", 1, 3,"Mg", "Magnesium", "24.305", 2, 3,"Al", "Aluminium", "26.9815386", 13, 3,"Si", "Silicon", "28.0855", 14, 3,"P", "Phosphorus", "30.973762", 15, 3,"S", "Sulfur", "32.065", 16, 3,"Cl", "Chlorine", "35.453", 17, 3,"Ar", "Argon", "39.948", 18, 3,"K", "Potassium", "39.948", 1, 4,"Ca", "Calcium", "40.078", 2, 4,"Sc", "Scandium", "44.955912", 3, 4,"Ti", "Titanium", "47.867", 4, 4,"V", "Vanadium", "50.9415", 5, 4,"Cr", "Chromium", "51.9961", 6, 4,"Mn", "Manganese", "54.938045", 7, 4,"Fe", "Iron", "55.845", 8, 4,"Co", "Cobalt", "58.933195", 9, 4,"Ni", "Nickel", "58.6934", 10, 4,"Cu", "Copper", "63.546", 11, 4,"Zn", "Zinc", "65.38", 12, 4,"Ga", "Gallium", "69.723", 13, 4,"Ge", "Germanium", "72.63", 14, 4,"As", "Arsenic", "74.9216", 15, 4,"Se", "Selenium", "78.96", 16, 4,"Br", "Bromine", "79.904", 17, 4,"Kr", "Krypton", "83.798", 18, 4,"Rb", "Rubidium", "85.4678", 1, 5,"Sr", "Strontium", "87.62", 2, 5,"Y", "Yttrium", "88.90585", 3, 5,"Zr", "Zirconium", "91.224", 4, 5,"Nb", "Niobium", "92.90628", 5, 5,"Mo", "Molybdenum", "95.96", 6, 5,"Tc", "Technetium", "(98)", 7, 5,"Ru", "Ruthenium", "101.07", 8, 5,"Rh", "Rhodium", "102.9055", 9, 5,"Pd", "Palladium", "106.42", 10, 5,"Ag", "Silver", "107.8682", 11, 5,"Cd", "Cadmium", "112.411", 12, 5,"In", "Indium", "114.818", 13, 5,"Sn", "Tin", "118.71", 14, 5,"Sb", "Antimony", "121.76", 15, 5,"Te", "Tellurium", "127.6", 16, 5,"I", "Iodine", "126.90447", 17, 5,"Xe", "Xenon", "131.293", 18, 5,"Cs", "Caesium", "132.9054", 1, 6,"Ba", "Barium", "132.9054", 2, 6,"La", "Lanthanum", "138.90547", 4, 9,"Ce", "Cerium", "140.116", 5, 9,"Pr", "Praseodymium", "140.90765", 6, 9,"Nd", "Neodymium", "144.242", 7, 9,"Pm", "Promethium", "(145)", 8, 9,"Sm", "Samarium", "150.36", 9, 9,"Eu", "Europium", "151.964", 10, 9,"Gd", "Gadolinium", "157.25", 11, 9,"Tb", "Terbium", "158.92535", 12, 9,"Dy", "Dysprosium", "162.5", 13, 9,"Ho", "Holmium", "164.93032", 14, 9,"Er", "Erbium", "167.259", 15, 9,"Tm", "Thulium", "168.93421", 16, 9,"Yb", "Ytterbium", "173.054", 17, 9,"Lu", "Lutetium", "174.9668", 18, 9,"Hf", "Hafnium", "178.49", 4, 6,"Ta", "Tantalum", "180.94788", 5, 6,"W", "Tungsten", "183.84", 6, 6,"Re", "Rhenium", "186.207", 7, 6,"Os", "Osmium", "190.23", 8, 6,"Ir", "Iridium", "192.217", 9, 6,"Pt", "Platinum", "195.084", 10, 6,"Au", "Gold", "196.966569", 11, 6,"Hg", "Mercury", "200.59", 12, 6,"Tl", "Thallium", "204.3833", 13, 6,"Pb", "Lead", "207.2", 14, 6,"Bi", "Bismuth", "208.9804", 15, 6,"Po", "Polonium", "(209)", 16, 6,"At", "Astatine", "(210)", 17, 6,"Rn", "Radon", "(222)", 18, 6,"Fr", "Francium", "(223)", 1, 7,"Ra", "Radium", "(226)", 2, 7,"Ac", "Actinium", "(227)", 4, 10,"Th", "Thorium", "232.03806", 5, 10,"Pa", "Protactinium", "231.0588", 6, 10,"U", "Uranium", "238.02891", 7, 10,"Np", "Neptunium", "(237)", 8, 10,"Pu", "Plutonium", "(244)", 9, 10,"Am", "Americium", "(243)", 10, 10,"Cm", "Curium", "(247)", 11, 10,"Bk", "Berkelium", "(247)", 12, 10,"Cf", "Californium", "(251)", 13, 10,"Es", "Einstenium", "(252)", 14, 10,"Fm", "Fermium", "(257)", 15, 10,"Md", "Mendelevium", "(258)", 16, 10,"No", "Nobelium", "(259)", 17, 10,"Lr", "Lawrencium", "(262)", 18, 10,"Rf", "Rutherfordium", "(267)", 4, 7,"Db", "Dubnium", "(268)", 5, 7,"Sg", "Seaborgium", "(271)", 6, 7,"Bh", "Bohrium", "(272)", 7, 7,"Hs", "Hassium", "(270)", 8, 7,"Mt", "Meitnerium", "(276)", 9, 7,"Ds", "Darmstadium", "(281)", 10, 7,"Rg", "Roentgenium", "(280)", 11, 7,"Cn", "Copernicium", "(285)", 12, 7,"Uut", "Unutrium", "(284)", 13, 7,"Fl", "Flerovium", "(289)", 14, 7,"Uup", "Ununpentium", "(288)", 15, 7,"Lv", "Livermorium", "(293)", 16, 7,"Uus", "Ununseptium", "(294)", 17, 7,"Uuo", "Ununoctium", "(294)", 18, 7
];var camera, scene, renderer;
var controls;var objects = [];
var targets = { table: [], sphere: [], helix: [], grid: [] };init();
animate();function init() {camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );camera.position.z = 3000;scene = new THREE.Scene();// tablefor ( var i = 0; i < table.length; i += 5 ) {var element = document.createElement( 'div' );element.className = 'element';element.style.backgroundColor = 'rgba(0,127,127,' + ( Math.random() * 0.5 + 0.25 ) + ')';var number = document.createElement( 'div' );number.className = 'number';number.textContent = (i/5) + 1;element.appendChild( number );var symbol = document.createElement( 'div' );symbol.className = 'symbol';symbol.textContent = table[ i ];element.appendChild( symbol );var details = document.createElement( 'div' );details.className = 'details';details.innerHTML = table[ i + 1 ] + '<br>' + table[ i + 2 ];element.appendChild( details );var object = new THREE.CSS3DObject( element );object.position.x = Math.random() * 4000 - 2000;object.position.y = Math.random() * 4000 - 2000;object.position.z = Math.random() * 4000 - 2000;scene.add( object );objects.push( object );//var object = new THREE.Object3D();object.position.x = ( table[ i + 3 ] * 140 ) - 1330;object.position.y = - ( table[ i + 4 ] * 180 ) + 990;targets.table.push( object );}// spherevar vector = new THREE.Vector3();for ( var i = 0, l = objects.length; i < l; i ++ ) {var phi = Math.acos( -1 + ( 2 * i ) / l );var theta = Math.sqrt( l * Math.PI ) * phi;var object = new THREE.Object3D();object.position.x = 800 * Math.cos( theta ) * Math.sin( phi );object.position.y = 800 * Math.sin( theta ) * Math.sin( phi );object.position.z = 800 * Math.cos( phi );vector.copy( object.position ).multiplyScalar( 2 );object.lookAt( vector );targets.sphere.push( object );}// helixvar vector = new THREE.Vector3();for ( var i = 0, l = objects.length; i < l; i ++ ) {var phi = i * 0.175 + Math.PI;var object = new THREE.Object3D();object.position.x = 900 * Math.sin( phi );object.position.y = - ( i * 8 ) + 450;object.position.z = 900 * Math.cos( phi );vector.x = object.position.x * 2;vector.y = object.position.y;vector.z = object.position.z * 2;object.lookAt( vector );targets.helix.push( object );}// gridfor ( var i = 0; i < objects.length; i ++ ) {var object = new THREE.Object3D();object.position.x = ( ( i % 5 ) * 400 ) - 800;object.position.y = ( - ( Math.floor( i / 5 ) % 5 ) * 400 ) + 800;object.position.z = ( Math.floor( i / 25 ) ) * 1000 - 2000;targets.grid.push( object );}//renderer = new THREE.CSS3DRenderer();renderer.setSize( window.innerWidth, window.innerHeight );renderer.domElement.style.position = 'absolute';document.getElementById( 'container' ).appendChild( renderer.domElement );//controls = new THREE.TrackballControls( camera, renderer.domElement );controls.rotateSpeed = 0.5;controls.minDistance = 500;controls.maxDistance = 6000;controls.addEventListener( 'change', render );var button = document.getElementById( 'table' );button.addEventListener( 'click', function ( event ) {transform( targets.table, 2000 );}, false );var button = document.getElementById( 'sphere' );button.addEventListener( 'click', function ( event ) {transform( targets.sphere, 2000 );}, false );var button = document.getElementById( 'helix' );button.addEventListener( 'click', function ( event ) {transform( targets.helix, 2000 );}, false );var button = document.getElementById( 'grid' );button.addEventListener( 'click', function ( event ) {transform( targets.grid, 2000 );}, false );transform( targets.table, 5000 );//window.addEventListener( 'resize', onWindowResize, false );}function transform( targets, duration ) {TWEEN.removeAll();for ( var i = 0; i < objects.length; i ++ ) {var object = objects[ i ];var target = targets[ i ];new TWEEN.Tween( object.position ).to( { x: target.position.x, y: target.position.y, z: target.position.z }, Math.random() * duration + duration ).easing( TWEEN.Easing.Exponential.InOut ).start();new TWEEN.Tween( object.rotation ).to( { x: target.rotation.x, y: target.rotation.y, z: target.rotation.z }, Math.random() * duration + duration ).easing( TWEEN.Easing.Exponential.InOut ).start();}new TWEEN.Tween( this ).to( {}, duration * 2 ).onUpdate( render ).start();}function onWindowResize() {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize( window.innerWidth, window.innerHeight );render();}function animate() {requestAnimationFrame( animate );TWEEN.update();controls.update();}function render() {renderer.render( scene, camera );}</script>
</body>
</html>

再来一张网页端显示化学元素周期表的效果图,很是很赞的

js绘制超炫酷3D化学元素周期表相关推荐

  1. js和CSS3炫酷3D相册展示

    <!doctype html> <html> <head> <meta charset="UTF"> <title>js ...

  2. js制作的炫酷3D太阳系行星运行效果

    想象着打开网页就能浏览太阳系行星的运行情况,促进我们更好的了解这个宇宙星空,于是找到了这样一段代码可以完美的实现这个功能,通过css和js就可以实现在网页上展示一个完美的太阳系行星的运行情况,效果炫酷 ...

  3. R语言:使用REmap绘制超炫酷的地图

    REmap这个包是通过调用百度地图API的一个程序包,与Google的ggmap包相比,不用翻墙就可以使用.其函数主要有:remap(),remapB().remapC().remapH()四个.该程 ...

  4. 实战案例,手把手教你使用 Tableau 绘制超炫酷可视化图表

    有一种美叫数据的美,Tableau可以让你看到这种数据美,以及探索数据美的可能,如下图表均是由强大的tableau可视化而成的. 喜欢点赞.收藏 使用tableau的优势就在于不需要懂技术,更不需要写 ...

  5. python3d相册源代码_js和CSS3炫酷3D相册展示

    js和CSS3炫酷3D相册展示 *{margin:0;padding:0;} body{background:url(img/bg.jpg);width:100%;height:100%;overfl ...

  6. ❤唯美满天星❤ html+css+js炫酷3D相册(含音乐/可自定义文字)程序员表白必备

    元旦节快到了,在跨年夜前夕.是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现3D立体动态相册.赶紧学会了,来制作属于我们程序员的浪漫吧! ❤元旦节表白3D相册,在元 ...

  7. 经典回顾超炫酷阅读效果3D Book使用方法

    经典回顾超炫酷阅读效果3D Book使用方法 现在有很多人都喜欢在电脑上看小说,而电脑上看小说基本都是以记事本TXT电子书形式阅读,看起来总是觉得没有书本的那种感觉:你是不是已经受够了使用记事本看小说 ...

  8. canvas炫酷3d网页背景动画js特效

    下载地址canvas画布实现的炫酷3d网页背景动画特效 dd:

  9. 炫酷3D相册❤ 520七夕情人节表白网页制作❤(HTML+CSS+JavaScript)

    师妹直呼"这也太哇塞了吧" ❤520七夕情人节表白网页制作❤(HTML+CSS+JavaScript) 520七夕节告白,也就是中国的情人节,你除了送花你还会什么?? 快来制作高端 ...

最新文章

  1. 配合使用自制的PE3.0启动盘和Windows部署服务,实现Ghost网克
  2. supermap iobect .net 7.1.2 图例的拆分
  3. Linux安装配置Redis CentOS 7 下安装Redis
  4. apache启动报错记录
  5. 你怎样看待比自己强的人?
  6. IOS_SearchBar搜索栏及关键字高亮
  7. 【模板】最大流之上下界可行流
  8. python写入数据到excel_python实现查询的数据写入到excel
  9. 一个使用numpy.ones()的矩阵| 使用Python的线性代数
  10. 大学计算机二级培训蹭课,本人在复旦大学蹭课总结的一点小小的经验
  11. 关于GPS定位反欺诈研究
  12. 影响历史进程的三只苹果
  13. TCP/IP模型及OSI七层参考模型各层的功能和主要协议
  14. 概率图模型_马尔可夫随机场
  15. oracle 新增配额,Oracle 用户配额
  16. Linux elf可执行文件加密
  17. 连接MySQL实现增删改查的动态网页
  18. L1-079 天梯赛的善良 - java
  19. 1588分析和实现总纲
  20. 传递函数极点和零点的几何表示

热门文章

  1. 为什么深度学习中一般使用mean=[0.485, 0.456, 0.406]和std=[0.229, 0.224, 0.225]来归一化图像?
  2. 服务器RAID 硬盘容量扩展 Extend - Dell
  3. 原生js实现扫雷游戏
  4. dorado7.x积累
  5. 客户机操作系统已禁用cpu_CPU硬件辅助虚拟化技术
  6. 生活-就是每天撕一张饭票
  7. 工程监测多通道振弦模拟信号采集仪VTN的四种工作模式
  8. 上海交通大学计算机科学杨岚青博士,孤立性肺结节外科诊断相关问题的研究
  9. win10DVWA搭建教程(2021最新版)
  10. 我制作了一个基于Python 的电影订票系统