整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

装B技巧,让页面也 High 起来-一起摇摆

记得魔性的小苹果和抖音吗,作为前端的你,有想过让页面也 High 起来、舞动起来吗?

  先看效果:

下面这段代码可直接在控制台执行,略长。可直接跳到本小节末,使用简短 JS 引入的方式进行体验(带音乐效果哟

setTimeout(letDance, 1000);
var bgmSrc =
  'https://nd002723.github.io/carnival/audio/Martin%20Jensen%20-%20Fox%20(Loop%20Remix).mp3';
var cssHref = 'https://nd002723.github.io/carnival/css/high.css';
function letDance() {
  function loadCss() {
    //将css文件引入页面
    var myCss = document.createElement('link');
    myCss.setAttribute('type', 'text/css');
    myCss.setAttribute('rel', 'stylesheet');
    myCss.setAttribute('href', cssHref); //css文件地址
    myCss.setAttribute('class', l);
    document.body.appendChild(myCss);
  }

  function h() {
    var e = document.getElementsByClassName(l);
    for (var t = 0; t < e.length; t++) {
      document.body.removeChild(e[t]);
    }
  }

  function p() {
    var e = document.createElement('div');
    e.setAttribute('class', a);
    document.body.appendChild(e);
    setTimeout(function () {
      document.body.removeChild(e);
    }, 100);
  }

  function getSize(e) {
    //获取目标的宽高
    return {
      height: e.offsetHeight,
      width: e.offsetWidth,
    };
  }

  function checkSize(i) {
    //判断目标大小是否符合要求
    var s = getSize(i); //获取目标的宽高
    return (
      s.height > minHeight &&
      s.height < maxHeight &&
      s.width > minWidth &&
      s.width < maxWidth
    ); //判断目标是否符合条件
  }

  function m(e) {
    var t = e;
    var n = 0;
    while (!!t) {
      n += t.offsetTop;
      t = t.offsetParent;
    }
    return n;
  }

  function g() {
    var e = document.documentElement;
    if (!!window.innerWidth) {
      return window.innerHeight;
    } else if (e && !isNaN(e.clientHeight)) {
      return e.clientHeight;
    }
    return 0;
  }

  function y() {
    if (window.pageYOffset) {
      return window.pageYOffset;
    }
    return Math.max(
      document.documentElement.scrollTop,
      document.body.scrollTop
    );
  }

  function E(e) {
    var t = m(e);
    return t >= w && t <= b + w;
  }

  function setBgm() {
    //设置音乐
    var e = document.createElement('audio');
    e.setAttribute('class', l);
    e.src = bgmSrc; //bgm地址
    e.loop = false;
    e.addEventListener(
      'canplay',
      function () {
        setTimeout(function () {
          x(k);
        }, 500);
        setTimeout(function () {
          N();
          p();
          for (var e = 0; e < O.length; e++) {
            T(O[e]);
          }
        }, 15500);
      },
      true
    );
    e.addEventListener(
      'ended',
      function () {
        N();
        h();
      },
      true
    );
    e.innerHTML =
      ' <p>If you are reading this, it is because your browser does not support the audio element. We recommend that you get a new browser.</p> <p>';
    document.body.appendChild(e);
    e.play();
  }

  function x(e) {
    e.className += ' ' + s + ' ' + o;
  }

  function T(e) {
    e.className += ' ' + s + ' ' + u[Math.floor(Math.random() * u.length)];
  }

  function N() {
    var e = document.getElementsByClassName(s);
    var t = new RegExp('\\b' + s + '\\b');
    for (var n = 0; n < e.length; ) {
      e[n].className = e[n].className.replace(t, '');
    }
  }
  var minHeight = 3; //最小高度
  var minWidth = 3; //最小宽度
  var maxHeight = 800; //最大高度
  var maxWidth = 1400; //最大宽度
  var s = 'mw-harlem_shake_me';
  var o = 'im_first';
  var u = ['im_drunk', 'im_baked', 'im_trippin', 'im_blown'];
  var a = 'mw-strobe_light';
  var l = 'mw_added_css'; //最终要移除的css
  var b = g();
  var w = y();
  var C = document.getElementsByTagName('*');
  var k = null;
  for (var L = 0; L < C.length; L++) {
    var targetDiv = C[L];
    if (checkSize(targetDiv)) {
      if (E(targetDiv)) {
        k = targetDiv;
        break;
      }
    }
  }
  if (targetDiv === null) {
    //如果没找到合适大小的
    console.warn('没能找到合适的大小. 换一个页面试试?.');
    return;
  }

  loadCss(); //将自定义css文件引入页面
  setBgm(); //添加背景音乐

  var O = [];
  for (var L = 0; L < C.length; L++) {
    var targetDiv = C[L];
    if (checkSize(targetDiv)) {
      O.push(targetDiv);
    }
  }

  //网页整体倾斜效果(这块儿本来是JQuery实现的,为了避免引入JQuery,做了改动。)
  var style = document.createElement('style');
  style.type = 'text/css';
  try {
    style.appendChild(
      document.createTextNode(
        'body{overflow-x:hidden;transform: rotate(1deg);-webkit-transform: rotate(1deg);-moz-transform: rotate(1deg);-o-transform: rotate(1deg);-ms-transform: rotate(1deg)}'
      )
    );
  } catch (ex) {
    style.styleSheet.cssText = 'body{background-color:red}'; //针对IE
  }
  var head = document.getElementsByTagName('head')[0];
  head.appendChild(style);
}

  或者更简洁一点,在页面 URL 栏或者控制台键入以下代码直接体验:

在浏览器地址栏黏贴以下内容的话,有三点需要注意,一是必须是已有内容的页面;二是如果是通过复制黏贴代码到浏览器地址栏的话,IE 及 Chrome会自动去掉代码开头的javascript:,所以需要手动添加起来才能正确执行,而 Firefox 中虽然不会自动去掉,但它根本就不支持在地址栏运行 JS 代码;三是引用的carnival.js会依赖JQuery(没有的话也没事,只是页面少了一个倾斜的效果)。

javascript: void (function () {
  var d = document,
    a = 'setAttribute',
    s = d.createElement('script');
  s[a]('tyle', 'text/javascript');
  s[a]('src', 'https://nd002723.github.io/carnival/js/carnival.js');
  d.head.appendChild(s);
})();
  • 一个能让你的网站 high 起来的 js

们将为大家介绍 Highcharts 的动态图。

我们在前面已经了解了 Highcharts 配置语法。接下来让我们来看下 Highcharts 的其他配置。


每秒更新曲线图

chart.events

chart.event 属性中添加 load 方法(图表加载事件)。在 1000 毫秒内随机产生数据点并生成图表。

chart: {
 events: {
 load: function () {
 // 图表每秒更新一次
 var series = this.series[0];
 setInterval(function () {
 var x = (new Date()).getTime(), // 当期时间
 y = Math.random();
 series.addPoint([x, y], true, true);
 }, 1000);
 }
 }}

实例

文件名:highcharts_dynamic_spline.htm

<html><head><meta charset="UTF-8" /><title>Highcharts 教程 | 菜鸟教程(runoob.com)</title><script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script src="http://code.highcharts.com/highcharts.js"></script></head><body><div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div><script language="JavaScript">$(document).ready(function() { 
 var chart = {
 type: 'spline', animation: Highcharts.svg, // don't animate in IE < IE 10.
 marginRight: 10, events: {
 load: function () {
 // set up the updating of the chart each second
 var series = this.series[0];
 setInterval(function () {
 var x = (new Date()).getTime(), // current time
 y = Math.random();
 series.addPoint([x, y], true, true);
 }, 1000);
 }
 }
 };
 var title = {
 text: 'Live random data' 
 }; 
 var xAxis = {
 type: 'datetime',
 tickPixelInterval: 150
 };
 var yAxis = {
 title: {
 text: 'Value'
 },
 plotLines: [{
 value: 0,
 width: 1,
 color: '#808080'
 }]
 };
 var tooltip = {
 formatter: function () {
 return '<b>' + this.series.name + '</b><br/>' +
 Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +
 Highcharts.numberFormat(this.y, 2);
 }
 };
 var plotOptions = {
 area: {
 pointStart: 1940,
 marker: {
 enabled: false,
 symbol: 'circle',
 radius: 2,
 states: {
 hover: {
 enabled: true
 }
 }
 }
 }
 };
 var legend = {
 enabled: false
 };
 var exporting = {
 enabled: false
 };
 var series= [{
 name: 'Random data',
 data: (function () {
 // generate an array of random data
 var data = [],time = (new Date()).getTime(),i;
 for (i = -19; i <= 0; i += 1) {
 data.push({
 x: time + i * 1000,
 y: Math.random()
 });
 }
 return data;
 }()) 
 }]; 
 var json = {}; 
 json.chart = chart;
 json.title = title; 
 json.tooltip = tooltip;
 json.xAxis = xAxis;
 json.yAxis = yAxis;
 json.legend = legend; 
 json.exporting = exporting; 
 json.series = series;
 json.plotOptions = plotOptions;
 Highcharts.setOptions({
 global: {
 useUTC: false
 }
 });
 $('#container').highcharts(json);
 });</script></body></html>

Highcharts 饼图


通过点击添加数据

chart.events

在 chart.event 属性中添加 click 方法(整个图表的绘图区上所发生的点击事件)。该方法在图表绘图区上发生点击时会添加新的数据点。

chart: {
 events: {
 click: function (e) {
 // 获取点击坐标和数据项
 var x = e.xAxis[0].value,
 y = e.yAxis[0].value,
 series = this.series[0];
 // 添加点击的坐标
 series.addPoint([x, y]);
 }
 }}

实例

文件名:highcharts_dynamic_click.htm

tyle 属性用于改变 HTML 元素的样式。

<html>

<body style="background-color:PowderBlue;">

<h1>Look! Styles and colors</h1>

<p style="font-family:verdana;color:red">

This text is in Verdana and red</p>

<p style="font-family:times;color:green">

This text is in Times and green</p>

<p style="font-size:30px">This text is 30 pixels high</p>

</body>

</html>

HTML 的 style 属性

style 属性的作用:

提供了一种改变所有 HTML 元素的样式的通用方法。

样式是 HTML 4 引入的,它是一种新的首选的改变 HTML 元素样式的方式。通过 HTML 样式,能够通过使用 style 属性直接将样式添加到 HTML 元素,或者间接地在独立的样式表中(CSS 文件)进行定义。

不赞成使用的标签和属性

在 HTML 4 中,有若干的标签和属性是被废弃的。被废弃(Deprecated)的意思是在未来版本的 HTML 和 XHTML 中将不支持这些标签和属性。

这里传达的信息很明确:请避免使用这些被废弃的标签和属性!

应该避免使用下面这些标签和属性:

HTML 样式实例 - 背景颜色

background-color 属性为元素定义了背景颜色:

<html>
<body style="background-color:yellow">
<h2 style="background-color:red">This is a heading</h2>
<p style="background-color:green">This is a paragraph.</p>
</body>
</html>

HTML 样式实例 - 字体、颜色和尺寸

font-family、color 以及 font-size 属性分别定义元素中文本的字体系列、颜色和字体尺寸:

<html>
<body>
<h1 style="font-family:verdana">A heading</h1>
<p style="font-family:arial;color:red;font-size:20px;">A paragraph.</p>
</body>
</html>

HTML 样式实例 - 文本对齐

text-align 属性规定了元素中文本的水平对齐方式: