js做的好看好看html抽奖,分享一款纯css3+JS实现的漂亮的404页面

摘要:分享一款纯css3+JS实现的漂亮的404页面,无需加载任何图片,纯代码实现雪花渲染,有详细的代码提供大家学习,感兴趣的朋友可以参考下...

分享一款纯css3+JS实现的漂亮的404页面,无需加载任何图片,纯代码实现雪花渲染,一起看下最终效果图:

1e739e4569d8115ca4c9a3bd1804abbd.gif

实现代码:html>

404页面

html,

body {

height: 100%;

min-height: 450px;

font-size: 32px;

font-weight: 500;

color: #5d7399;

margin: 0;

padding: 0;

border: 0;

}

.content {

height: 100%;

position: relative;

z-index: 1;

background-color: #d2e1ec;

background-image: -webkit-linear-gradient(top, #bbcfe1 0%, #e8f2f6 80%);

background-image: linear-gradient(to bottom, #bbcfe1 0%, #e8f2f6 80%);

overflow: hidden;

}

.snow {

position: absolute;

top: 0;

left: 0;

pointer-events: none;

z-index: 20;

}

.main-text {

padding: 20vh 20px 0 20px;

text-align: center;

line-height: 2em;

font-size: 5vh;

}

.main-text h1 {

font-size: 45px;

line-height: 48px;

margin: 0;

padding: 0;

}

.main-text-a {

height: 32px;

margin-left: auto;

margin-right: auto;

text-align: center;

}

.main-text-a a {

font-size: 16px;

text-decoration: none;

color: #0066CC;

}

.main-text-a a:hover {

color: #000;

}

.home-link {

font-size: 0.6em;

font-weight: 400;

color: inherit;

text-decoration: none;

opacity: 0.6;

border-bottom: 1px dashed rgba(93, 115, 153, 0.5);

}

.home-link:hover {

opacity: 1;

}

.ground {

height: 160px;

width: 100%;

position: absolute;

bottom: 0;

left: 0;

background: #f6f9fa;

box-shadow: 0 0 10px 10px #f6f9fa;

}

.ground:before,

.ground:after {

content: '';

display: block;

width: 250px;

height: 250px;

position: absolute;

top: -62.5px;

z-index: -1;

background: transparent;

-webkit-transform: scaleX(0.2) rotate(45deg);

transform: scaleX(0.2) rotate(45deg);

}

.ground:after {

left: 50%;

margin-left: -166.66667px;

box-shadow: -340px 260px 15px #8193b2, -620px 580px 15px #8193b2, -900px 900px 15px #b0bccf, -1155px 1245px 15px #b4bed1, -1515px 1485px 15px #8193b2, -1755px 1845px 15px #8a9bb8, -2050px 2150px 15px #91a1bc, -2425px 2375px 15px #bac4d5, -2695px 2705px 15px #a1aec6, -3020px 2980px 15px #8193b2, -3315px 3285px 15px #94a3be, -3555px 3645px 15px #9aa9c2, -3910px 3890px 15px #b0bccf, -4180px 4220px 15px #bac4d5, -4535px 4465px 15px #a7b4c9, -4840px 4760px 15px #94a3be;

}

.ground:before {

right: 50%;

margin-right: -166.66667px;

box-shadow: 325px -275px 15px #b4bed1, 620px -580px 15px #adb9cd, 925px -875px 15px #a1aec6, 1220px -1180px 15px #b7c1d3, 1545px -1455px 15px #7e90b0, 1795px -1805px 15px #b0bccf, 2080px -2120px 15px #b7c1d3, 2395px -2405px 15px #8e9eba, 2730px -2670px 15px #b7c1d3, 2995px -3005px 15px #9dabc4, 3285px -3315px 15px #a1aec6, 3620px -3580px 15px #8193b2, 3880px -3920px 15px #aab6cb, 4225px -4175px 15px #9dabc4, 4510px -4490px 15px #8e9eba, 4785px -4815px 15px #a7b4c9;

}

.mound {

margin-top: -80px;

font-weight: 800;

font-size: 180px;

text-align: center;

color: #dd4040;

pointer-events: none;

}

.mound:before {

content: '';

display: block;

width: 600px;

height: 200px;

position: absolute;

left: 50%;

margin-left: -300px;

top: 50px;

z-index: 1;

border-radius: 100%;

background-color: #e8f2f6;

background-image: -webkit-linear-gradient(top, #dee8f1, #f6f9fa 60px);

background-image: linear-gradient(to bottom, #dee8f1, #f6f9fa 60px);

}

.mound:after {

content: '';

display: block;

width: 28px;

height: 6px;

position: absolute;

left: 50%;

margin-left: -150px;

top: 68px;

z-index: 2;

background: #dd4040;

border-radius: 100%;

-webkit-transform: rotate(-15deg);

transform: rotate(-15deg);

box-shadow: -56px 12px 0 1px #dd4040, -126px 6px 0 2px #dd4040, -196px 24px 0 3px #dd4040;

}

.mound_text {

-webkit-transform: rotate(6deg);

transform: rotate(6deg);

}

.mound_spade {

display: block;

width: 35px;

height: 30px;

position: absolute;

right: 50%;

top: 42%;

margin-right: -250px;

z-index: 0;

-webkit-transform: rotate(35deg);

transform: rotate(35deg);

background: #dd4040;

}

.mound_spade:before,

.mound_spade:after {

content: '';

display: block;

position: absolute;

}

.mound_spade:before {

width: 40%;

height: 30px;

bottom: 98%;

left: 50%;

margin-left: -20%;

background: #dd4040;

}

.mound_spade:after {

width: 100%;

height: 30px;

top: -55px;

left: 0%;

box-sizing: border-box;

border: 10px solid #dd4040;

border-radius: 4px 4px 20px 20px;

}

天啊,那页失踪了

 
 
404 

(function() {

function ready(fn) {

if (document.readyState != 'loading') {

fn();

} else {

document.addEventListener('DOMContentLoaded', fn);

}

}

function makeSnow(el) {

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

var width = 0;

var height = 0;

var particles = [];

var Particle = function() {

this.x = this.y = this.dx = this.dy = 0;

this.reset();

}

Particle.prototype.reset = function() {

this.y = Math.random() * height;

this.x = Math.random() * width;

this.dx = (Math.random() * 1) - 0.5;

this.dy = (Math.random() * 0.5) + 0.5;

}

function createParticles(count) {

if (count != particles.length) {

particles = [];

for (var i = 0; i 

particles.push(new Particle());

}

}

}

function onResize() {

width = window.innerWidth;

height = window.innerHeight;

el.width = width;

el.height = height;

createParticles((width * height) / 10000);

}

function updateParticles() {

ctx.clearRect(0, 0, width, height);

ctx.fillStyle = '#f6f9fa';

particles.forEach(function(particle) {

particle.y += particle.dy;

particle.x += particle.dx;

if (particle.y > height) {

particle.y = 0;

}

if (particle.x > width) {

particle.reset();

particle.y = 0;

}

ctx.beginPath();

ctx.arc(particle.x, particle.y, 5, 0, Math.PI * 2, false);

ctx.fill();

});

window.requestAnimationFrame(updateParticles);

}

onResize();

updateParticles();

}

ready(function() {

var canvas = document.getElementById('snow');

makeSnow(canvas);

});

})();

好的,以下是一个简单的转盘抽奖实现HTML 部分: ```html <div class="container"> <div class="roulette"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> <div class="item">7</div> <div class="item">8</div> </div> <button class="btn" onclick="spin()">抽奖</button> </div> ``` CSS 部分: ```css .container { width: 400px; margin: 0 auto; text-align: center; } .roulette { margin: 50px auto; position: relative; width: 300px; height: 300px; border-radius: 50%; overflow: hidden; transform: rotate(0deg); transition: transform 6s ease-out; } .item { position: absolute; width: 100%; height: 100%; text-align: center; line-height: 300px; font-size: 36px; font-weight: bold; } .item:nth-child(1) { background-color: #f44336; transform: rotate(0deg); } .item:nth-child(2) { background-color: #ffeb3b; transform: rotate(45deg); } .item:nth-child(3) { background-color: #4caf50; transform: rotate(90deg); } .item:nth-child(4) { background-color: #2196f3; transform: rotate(135deg); } .item:nth-child(5) { background-color: #9c27b0; transform: rotate(180deg); } .item:nth-child(6) { background-color: #ff9800; transform: rotate(225deg); } .item:nth-child(7) { background-color: #795548; transform: rotate(270deg); } .item:nth-child(8) { background-color: #00bcd4; transform: rotate(315deg); } .btn { margin-top: 30px; padding: 10px 20px; color: #fff; background-color: #2196f3; border: none; border-radius: 5px; font-size: 18px; cursor: pointer; } ``` JavaScript 部分: ```javascript const roulette = document.querySelector('.roulette'); const btn = document.querySelector('.btn'); let deg = 0; let speed = 0; function spin() { // 生成随机速度 speed = Math.floor(Math.random() * (100 - 50 + 1) + 50); // 计算旋转角度 deg += 360 / 8 + (360 / 8) * Math.floor(Math.random() * 3); // 转动转盘 roulette.style.transform = `rotate(${deg}deg)`; // 停止转动 setTimeout(() => { // 计算中奖项 const winningNum = Math.floor((360 - (deg % 360)) / (360 / 8)) + 1; // 弹出中奖提示 alert(`恭喜您获得第 ${winningNum} 项奖品!`); // 重置转盘角度 roulette.style.transform = 'rotate(0deg)'; }, speed * 6); } btn.addEventListener('click', spin); ``` 以上代码实现了一个简单的转盘抽奖,点击“抽奖”按钮后,转盘会根据随机速度旋转一段时间,然后停止在一个随机的位置,弹出中奖提示。注意,这只是一个简单的示例,实际应用中还需要考虑更多因素,例如转盘的样式、中奖概率、奖品设置等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值