記得魔性的小蘋果和抖音嗎,作為前端的你,有想過讓頁面也 High 起來、舞動起來嗎?
??先看效果:
下面這段代碼可直接在控制臺執(zhí)行,略長。可直接跳到本小節(jié)末,使用簡短 JS 引入的方式進(jìn)行體驗(yàn)(帶音樂效果喲)
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) {
//獲取目標(biāo)的寬高
return {
height: e.offsetHeight,
width: e.offsetWidth,
};
}
function checkSize(i) {
//判斷目標(biāo)大小是否符合要求
var s = getSize(i); //獲取目標(biāo)的寬高
return (
s.height > minHeight &&
s.height < maxHeight &&
s.width > minWidth &&
s.width < maxWidth
); //判斷目標(biāo)是否符合條件
}
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() {
//設(shè)置音樂
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('沒能找到合適的大小. 換一個(gè)頁面試試?.');
return;
}
loadCss(); //將自定義css文件引入頁面
setBgm(); //添加背景音樂
var O = [];
for (var L = 0; L < C.length; L++) {
var targetDiv = C[L];
if (checkSize(targetDiv)) {
O.push(targetDiv);
}
}
//網(wǎng)頁整體傾斜效果(這塊兒本來是JQuery實(shí)現(xiàn)的,為了避免引入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);
}
??或者更簡潔一點(diǎn),在頁面 URL 欄或者控制臺鍵入以下代碼直接體驗(yàn):
在瀏覽器地址欄黏貼以下內(nèi)容的話,有三點(diǎn)需要注意,一是必須是已有內(nèi)容的頁面;二是如果是通過復(fù)制黏貼代碼到瀏覽器地址欄的話,IE 及 Chrome會自動去掉代碼開頭的javascript:,所以需要手動添加起來才能正確執(zhí)行,而 Firefox 中雖然不會自動去掉,但它根本就不支持在地址欄運(yùn)行 JS 代碼;三是引用的carnival.js會依賴JQuery(沒有的話也沒事,只是頁面少了一個(gè)傾斜的效果)。
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);
})();
們將為大家介紹 Highcharts 的動態(tài)圖。
我們在前面已經(jīng)了解了 Highcharts 配置語法。接下來讓我們來看下 Highcharts 的其他配置。
每秒更新曲線圖
chart.events
chart.event 屬性中添加 load 方法(圖表加載事件)。在 1000 毫秒內(nèi)隨機(jī)產(chǎn)生數(shù)據(jù)點(diǎn)并生成圖表。
chart: { events: { load: function () { // 圖表每秒更新一次 var series = this.series[0]; setInterval(function () { var x = (new Date()).getTime(), // 當(dāng)期時(shí)間 y = Math.random(); series.addPoint([x, y], true, true); }, 1000); } }}
實(shí)例
文件名: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 餅圖
通過點(diǎn)擊添加數(shù)據(jù)
chart.events
在 chart.event 屬性中添加 click 方法(整個(gè)圖表的繪圖區(qū)上所發(fā)生的點(diǎn)擊事件)。該方法在圖表繪圖區(qū)上發(fā)生點(diǎn)擊時(shí)會添加新的數(shù)據(jù)點(diǎn)。
chart: { events: { click: function (e) { // 獲取點(diǎn)擊坐標(biāo)和數(shù)據(jù)項(xiàng) var x = e.xAxis[0].value, y = e.yAxis[0].value, series = this.series[0]; // 添加點(diǎn)擊的坐標(biāo) series.addPoint([x, y]); } }}
實(shí)例
文件名: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 元素,或者間接地在獨(dú)立的樣式表中(CSS 文件)進(jìn)行定義。
不贊成使用的標(biāo)簽和屬性
在 HTML 4 中,有若干的標(biāo)簽和屬性是被廢棄的。被廢棄(Deprecated)的意思是在未來版本的 HTML 和 XHTML 中將不支持這些標(biāo)簽和屬性。
這里傳達(dá)的信息很明確:請避免使用這些被廢棄的標(biāo)簽和屬性!
應(yīng)該避免使用下面這些標(biāo)簽和屬性:
HTML 樣式實(shí)例 - 背景顏色
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 樣式實(shí)例 - 字體、顏色和尺寸
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 樣式實(shí)例 - 文本對齊
text-align 屬性規(guī)定了元素中文本的水平對齊方式:
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。