欢迎光临散文网 会员登陆 & 注册

HTML5:可用来做自定义片头的动画效果,地理定位,时钟,拖放,彩虹,画布上面写字,飘雪

2021-02-24 15:01 作者:诗书画唱  | 我要投稿

前言:本期的内容非常精彩,HTML5的动画有时甚至可以媲美AE创作出来的动画。我会用AE创作一些炫酷的片头,但有时会用HTML5自定义地创作片头动画。喜欢的话,别忘了给up主的这篇专栏点个赞哦!

本期专栏内容概览:

H5拖放.html 

彩虹.html

地理定位.html

可以用来做自定义片头的动画效果.html

画布上面写字.html 

飘雪.html

时钟.html









H5拖放.html START

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

#cart {

width: 200px;

height: 200px;

padding: 10px;

border: 10px solid #aaaaaa;

position: absolute;

left: 400px;

top: 300px;

}

</style>

<script>

function dg(e){

//将拖动的元素的id传递后面的事件函数中

//e.target指的是img标签

e.dataTransfer.setData("eid",e.target.id);

//e.dataTransfer.setData("msg","hello world");

}


function dro(e){

//获取被拖动的元素的id

//var id = e.dataTransfer.getData("eid");

//阻止元素的默认行为

e.preventDefault();

}


function drop(e){

e.preventDefault();

//获取被拖动的元素的id

var id = e.dataTransfer.getData("eid");

//进行dom操作

//e.target指的就是div

e.target.appendChild(document.getElementById(id));

//alert(e.dataTransfer.getData("msg"));

}

</script>

</head>

<body>

<img id="myImg" src="img/14.png" draggable="true" width="128"

height="128" ondragstart="dg(event);"/>

    <div id="cart" ondragover="dro(event);"

    ondrop="drop(event);"></div>

</body>

</html>





H5拖放.html END



彩虹.html START


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

window.onload = function(){

var cv = document.getElementById('ctx');

var dw = cv.getContext('2d');

var colorArr = [

    'red',

    'orange',

    'yellow',

    'green',

    'cyan',

    'blue',

    'violet'

];


var r = 320;

for(var i = 0;i < colorArr.length;i ++) {

    dw.beginPath();

dw.strokeStyle = colorArr[i];

dw.lineWidth = 10;

dw.arc(350,350,r,Math.PI * 7.0 / 6.0,Math.PI * 11.0 / 6.0);

dw.stroke();

r -= 10;

    dw.closePath();

}

}

</script>

</head>

<body>

<canvas id="ctx" width="800" height="500"></canvas>

</body>

</html>




彩虹.html END

地理定位.html START


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

    body, html,#allmap {

    width: 100%;

    height: 100%;

    overflow: hidden;

    margin:0;

    font-family:"微软雅黑";

    }

</style>

<script type="text/javascript" srcc="http://api.map.baidu.com/api?v=2.0&ak=NhDTGeni3RxqCA3mQPTfDpb1"></script>

<script>

//检测是否支持地理定位

function getLocation(){

if(navigator.geolocation) {

//获取当前的地理位置

navigator.geolocation.getCurrentPosition(function(pos){

alert('你当前的地理位置,纬度:' + pos.coords.latitude +

    ',经度:' + pos.coords.longitude);

// 百度地图API功能

var map = new BMap.Map("allmap");    // 创建Map实例

map.centerAndZoom(new BMap.Point(pos.coords.longitude,pos.coords.latitude), 15);  // 初始化地图,设置中心点坐标和地图级别

map.addControl(new BMap.MapTypeControl());   //添加地图类型控件

//map.setCurrentCity("长沙");          // 设置地图显示的城市

map.enableScrollWheelZoom(true);

})

} else {

alert('你的浏览器不支持地理定位!');

}

}


getLocation();

</script>

</head>

<body>

<div id="allmap"></div>

</body>

</html>

推荐:

https://www.cnblogs.com/beileixinqing/p/7988770.html



<!DOCTYPE html>

<html> 

<head> 

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

    <title>前端定位模块</title> 

    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">

    <style>

        * {

            margin: 0;

            padding: 0;

            border: 0;

        }

        body {

            position: absolute;

            width: 100%;

            height: 100%;

            text-align: center;

        }

        #pos-area {

            background-color: #009DDC;

            margin-bottom: 10px;

            width: 100%;

            overflow: scroll;

            text-align: left;

            color: white;

        }

        #demo {

            padding: 8px;

            font-size: small;

        }

        #btn-area {

            height: 100px;

        }

        button {

            margin-bottom: 10px;

            padding: 12px 8px;

            width: 42%;

            border-radius: 8px;

            background-color: #009DDC;

            color: white;

        }

    </style>

    <script type="text/javascript" srcc="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>

</head>

<body>

    <div id="pos-area">

        <p id="demo">点击下面的按钮,获得对应信息:<br /></p>

    </div>

 

    <div id="btn-area">

        <button onClick="geolocation.getLocation(showPosition, showErr, options)">获取精确定位信息</button>

        <button onClick="geolocation.getIpLocation(showPosition, showErr)">获取粗糙定位信息</button>

        <button onClick="showWatchPosition()">开始监听位置</button>

        <button onClick="showClearWatch()">停止监听位置</button>

    </div>

    <script type="text/JavaScript">

        var geolocation = new qq.maps.Geolocation("OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77", "myapp");

 

        document.getElementById("pos-area").style.height = (document.body.clientHeight - 110) + 'px';

 

        var positionNum = 0;

        var options = {timeout: 8000};

        function showPosition(position) {

            positionNum ++;

            document.getElementById("demo").innerHTML += "序号:" + positionNum;

            document.getElementById("demo").appendChild(document.createElement('pre')).innerHTML = JSON.stringify(position, null, 4);

            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;

        };

 

        function showErr() {

            positionNum ++;

            document.getElementById("demo").innerHTML += "序号:" + positionNum;

            document.getElementById("demo").appendChild(document.createElement('p')).innerHTML = "定位失败!";

            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;

        };

 

        function showWatchPosition() {

            document.getElementById("demo").innerHTML += "开始监听位置!<br /><br />";

            geolocation.watchPosition(showPosition);

            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;

        };

 

        function showClearWatch() {

            geolocation.clearWatch();

            document.getElementById("demo").innerHTML += "停止监听位置!<br /><br />";

            document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;

        };

    </script>

</body>

</html>



地理定位.html END



可以用来做自定义片头的动画效果.html START

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

p {

height: 30px;

font-size: 30px;

position: absolute;

animation: move 5s infinite;

}


@keyframes move{

0%{

left: 0px;

top: 0px;

color: black;

}

25%{

left: 500px;

top: 0px;

color: red;

transform: skew(-45deg);

}

50%{

left: 500px;

top: 200px;

color: blue;

}

75%{

left: 300px;

top: 200px;

color: pink;

transform: rotateY(1440deg);

}

100%{

left: 400px;

top: 300px;

color: orange;

}

}

</style>

</head>

<body>

<p>诗书画唱</p>

</body>

</html>




可以用来做自定义片头的动画效果.html END



画布上面写字.html START

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style>

#myCanvas {

display:block;

margin:0 auto;

border:1px solid #aaa;

}

</style>

<script>

window.onload = function(){

//获取canvas元素

var cav = document.getElementById('myCanvas');

//获取画布的内容面板

var ctx = cav.getContext('2d');

//设置canvas的高度和宽度

var w = 500;

var h = 500;

cav.width = w;

cav.height = h;


//画外面的口字

ctx.beginPath();

ctx.strokeStyle = 'red';

ctx.lineWidth = 8;

ctx.moveTo(0,0);

ctx.lineTo(w,0);

ctx.lineTo(w,h);

ctx.lineTo(0,h);

ctx.lineTo(0,0);

ctx.stroke();

ctx.closePath();


//画里面的米字

ctx.beginPath();

ctx.lineWidth = 1;

ctx.moveTo(0,0);

ctx.lineTo(w,h);

ctx.moveTo(w,0);

ctx.lineTo(0,h);

ctx.moveTo(w / 2,0);

ctx.lineTo(w / 2,h);

ctx.moveTo(0,h / 2);

ctx.lineTo(w,h / 2);

ctx.stroke();

ctx.closePath();


//按下鼠标不动移动鼠标就可以写字

//定义一个全局变量存放鼠标的坐标

var los = {x:0,y:0};

var flag = false;//只有当flag为true时才触发移动事件中的代码

//按下鼠标时

cav.onmousedown = function(e){

e.preventDefault();

//获取到鼠标当前的位置

var x = e.offsetX;

var y = e.offsetY;

los.x = x;

los.y = y;

flag = true;

}

//移动鼠标时

cav.onmousemove = function(e){

e.preventDefault();

if(flag) {

//获取鼠标移动到了哪个地方

var loc = {

x:e.offsetX,

y:e.offsetY

};

//在los和loc之间画一条线

ctx.beginPath();

ctx.moveTo(los.x,los.y);

ctx.lineTo(loc.x,loc.y);

ctx.strokeStyle = 'blue';

ctx.lineWidth = 5;

ctx.lineCap = 'round';

ctx.stroke();

ctx.closePath();

//移动的终点就变成起点了

los = loc;

}

}

//松开鼠标时

cav.onmouseup = function(e){

e.preventDefault();

flag = false;

}

}

</script>

</head>

<body>

<canvas id="myCanvas"></canvas>

</body>

</html>



画布上面写字.html END

飘雪.html START

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

window.onload = function(){

var cv = document.getElementById('cv');

//获取画布纸

var ctx = cv.getContext("2d");

//设置画布跟屏幕的高度和宽度一致

var w = window.innerWidth - 30;

var h = window.innerHeight - 30;

cv.width = w;

cv.height = h;


//屏幕上的雪花的总数

var count = 500;

//雪花对象数组

var arr = [];

//在画布上绘制雪花

for(var i = 0;i < count;i ++) {

//随机生成雪花圆心的坐标和雪花的半径

//Math.random()会随机产生一个0到1之间的数字

var snow = {

x: Math.random() * w,

y: Math.random() * h,

r: Math.random() * 20 + 1

};

//将生成的雪花对象放到数组中去

arr.push(snow);

}


//绘制雪花的方法

function drawSnow(){

//清除画布上的所有的雪花

ctx.clearRect(0,0,w,h);

//设置雪花的填充颜色

ctx.fillStyle = 'white';

//开始绘制

ctx.beginPath();

for(var i = 0;i < count;i ++) {

//取出每个雪花对象

var snow = arr[i];

//绘制这片雪花

//画笔移动到圆心的位置

ctx.moveTo(snow.x,snow.y);

ctx.arc(snow.x,snow.y,snow.r,0,2 * Math.PI,false);

}

//填充白色

ctx.fill();

//避免一笔画

ctx.closePath();

//让雪花飘落

fall();

}


//让雪花飘落的方法

function fall(){

//让雪花飘动其实就是改变圆心的坐标

for(var i = 0;i < count;i ++) {

var snow = arr[i];

//圆心的坐标随机的移动1到10个像素

snow.x += Math.random() * 10 + 1;

//如果雪花的坐标超过屏幕的高度或者宽度

if(snow.x > w) {

snow.x = 0;

}

snow.y += Math.random() * 10 + 1;

if(snow.y > h) {

snow.y = 0;

}

}

}


setInterval(drawSnow,100);

}

</script>

</head>

<body>

        <canvas id="cv" style="border: 1px solid black;background-color: black;"></canvas>

</body>

</html>

飘雪.html END


时钟.html START

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

body {

background-color: #cfcfcf;

}


#clock {

width: 196px;

height: 196px;

border-radius: 50%;

border: 13px dashed #fff;

margin: 200px auto;

position: relative;

}


#circle {

width: 0.1px;

height: 0.1px;

border: 10px solid rosybrown;

border-radius: 50%;

margin: 82px auto;

position: relative;

}


#circle::after,#circle::before{

position: absolute;

content: "";

}


#circle::after {/*秒针*/

width: 80px;

height: 5px;

transform-origin: left;

background-color: yellow;

animation: miaozhen 1s linear infinite;

}


#circle::before {/*分针*/

width: 60px;

height: 5px;

transform-origin: left;

background-color: red;

animation: fenzhen 60s linear infinite;

}

/*定义分钟的动画效果*/

@keyframes fenzhen{

from{

transform: rotate(0deg);

}

to{

transform: rotate(360deg);

}

}


/*定义秒针的效果*/

@keyframes miaozhen{

0%{

transform: rotate(0deg);

}

100%{

transform: rotate(360deg);

}

}

</style>

</head>

<body>

<div id="clock">

<div id="circle"></div>

</div>

</body>

</html>





时钟.html END



HTML5:可用来做自定义片头的动画效果,地理定位,时钟,拖放,彩虹,画布上面写字,飘雪的评论 (共 条)

分享到微博请遵守国家法律