模仿github网页前端HTML,仿github404页面特效
偶然看到github的404页面,没想到github的404页面也是做的很有心,就试着找了下源码,打算仿一下这个效果。
这个效果看上去是3d的,其实没有用到css3里边的任何一个与3d有关的属性,这个页面应该在很早之前就被做出来了,可能那时的css3兼容性还没现在这么好。这个页面是借用图片错位,以及图片运动速度不一致,给人一种立体感。下边先看下html结构:
图片从网站上下载,就放成这样的结构。现在的图片还是平铺在页面上,我们用position: absolate和z-index使得图片放在一个合适的位置,确定它们的前后顺序。
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#field {
position: absolute;
top: 0;
left: 0;
overflow: hidden;
width: 100%;
height: 370px;
}
.img_bg {
position: absolute;
top: -11px;
left: -20px;
width: 120%;
height: 425px;
}
.img_text {
position: absolute;
z-index: 8;
}
.img_cat {
position: absolute;
z-index: 7;
}
.img_speeder {
position: absolute;
z-index: 6;
}
.img_cat_shadow {
position: absolute;
z-index: 5;
}
.img_speeder_shadow {
position: absolute;
z-index: 4;
}
.img_building_1 {
position: absolute;
z-index: 3;
}
.img_building_2 {
position: absolute;
z-index: 2;
}
背景图片需要拉伸宽于屏幕一些,因为背景图也是随鼠标的移动而左右移动的。下边是图片的数据结构:
window.onload = function() {
var window_width, window_height,
field_width, field_height,
rate_w, rate_h,
field, text, cat, cat_shadow, speeder, speeder_shadow, buliding_1, building_2;
window_width = document.body.clientWidth;
window_height = document.body.clientHeight;
field = document.getElementById('field');
field_width = field.offsetWidth;
field_height = field.offsetHeight;
rate_w = field_width / window_width;
rate_h = field_height / window_height;
var imgArray = {
bg : { left: -780, top: -200 ,scale: 0.06, isFont: false },
text : { left: -500, top: -120, scale: 0.03, isFont: true },
cat : { left: -200, top: -100 ,scale: 0.02, isFont: true },
cat_shadow : { left: -189, top: 100 ,scale: 0.02, isFont: true },
speeder : { left: -70, top: -40 ,scale: 0.01, isFont: true },
speeder_shadow : { left: -70, top: 75 ,scale: 0.01, isFont: true },
building_1 : { left: 20, top: -111 ,scale: 0.03, isFont: false },
building_2 : { left: 300, top: -60 ,scale: 0.05, isFont: false },
};
}
首先我们先将图片放到起始的位置,即模拟鼠标放在屏幕中心位置的时候。页面首次加载鼠标不在浏览器中时就以这种方式布局图片。
(function() {
for( i in imgArray ) {
var theImg = document.getElementsByClassName("img_" + i)[0];
var offset_w = rate_w * window_width / 2 * imgArray[i].scale;
var offset_h = rate_h * window_height / 2 * imgArray[i].scale;
if( imgArray[i].isFont == true ) {
theImg.style.left = field_width / 2 + offset_w + imgArray[i].left + "px";
theImg.style.top = field_height / 2 + offset_h + imgArray[i].top + "px";
} else {
theImg.style.left = field_width / 2 - offset_w + imgArray[i].left + "px";
theImg.style.top = field_height / 2 - offset_h + imgArray[i].top + "px";
}
}
})();
图片在场景中的位置是按照鼠标在浏览器中的位置来按比例移动的。鼠标移动的时候改变图片的top和left值来使图片移动。离我们近的物体的移动方向和鼠标的滑动方向相同,离我们远的物体移动方向和鼠标滑动方向相反。而且离中间的点的距离越远,移动速度越快,使其具有立体感。
图片的scale属性就是用来设置图片的移动速度的,即鼠标移动的距离乘以这个比例就是图片移动的距离。isFont属性是图片移动的方向,确定图片与鼠标移向相同或相反。监听鼠标移动事件,每次移动都重新定位图片位置。
var picMove = function(pageX, pageY) {
for( i in imgArray ) {
var theImg = document.getElementsByClassName("img_" + i)[0];
var offset_w = rate_w * pageX * imgArray[i].scale;
var offset_h = rate_h * pageY * imgArray[i].scale;
if( imgArray[i].isFont == true ) {
theImg.style.left = field_width / 2 + offset_w + imgArray[i].left + "px";
theImg.style.top = field_height / 2 + offset_h + imgArray[i].top + "px";
} else {
theImg.style.left = field_width / 2 - offset_w + imgArray[i].left + "px";
theImg.style.top = field_height / 2 - offset_h + imgArray[i].top + "px";
}
}
}
document.body.onmousemove = function(e) {
picMove(e.pageX, e.pageY);
};
到这里这个特效就算做完了,如果你有兴趣,这里是我的博客以及github地址,欢迎来访。
模仿github网页前端HTML,仿github404页面特效相关推荐
- web前端期末大作业 html+css+javascript 酒庄网页设计实例(5个页面)~学生网页设计制作...
web前端期末大作业 html+css+javascript 酒庄网页设计实例(5个页面)~学生网页设计制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从 ...
- 天猫HTML练手项目,GitHub - txz1220/tianmao: 一个模仿天猫网页的项目
一个模仿天猫网页的项目 主要涉及到前端方面,后端暂无. 主要目的:拿来练手用的 本项目主要是联系使用,所以css js 都放在html页面上了. 知识点学习: 1.html 要有个布局框架 2.css ...
- web前端期末大作业 html+css+javascript 全球私人定制旅游网页设计实例(6个页面)
web前端期末大作业 html+css+javascript 全球私人定制旅游网页设计实例(6个页面) 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? ...
- HTML5前端页面设计,HTML5网页前端设计
HTML5网页前端设计 编辑 锁定 讨论 上传视频 <HTML5网页前端设计>是2017年6月清华大学出版社出版的图书,作者是周文洁. 书 名 HTML5网页前端设计 作 者 ...
- 盘点 12 个 GitHub 上的高仿项目
今日推荐为什么不建议你用a.equals(b)判断对象相等 SpringBoot中的线程池,你真的会用么? 代码对比工具,就用这7个! 在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面) 后 ...
- 热门App 高仿项目12 个 GitHub 上的高仿项目
哈喽大家好,今天和大家分享一些现在比较热门 App 的高仿项目,包括高仿微信.微博.B站.斗鱼.抖音.美团.头条.掘金等等. 这些项目涉及的技术栈有 Vue.Flutter 等等,看这些高仿项目的源码 ...
- webstorm打开网页_网页前端之HTML+CSS+JS
古柏高枝银杏实,几千年物到而今. 玉纤雪腕白相照,烂银壳破玻璃明. 银杏(学名:Ginkgo biloba),落叶乔木,树冠圆锥形,枝轮生,叶互生,在长枝上散生,二歧状分叉叶脉,果具长梗,下垂,倒卵圆 ...
- Web前端之仿携程首页布局
Web前端之仿携程首页布局 1.前言 出于之前早就学习过Web的相关技术,后面很少写仿网页或者做后端等案例了,导致一些基础知识点有所遗忘,而这部分知识又是Java学习中的重中之重,因此借目前学校课程正 ...
- HTML5期末大作业:网站——卡通漫画游戏官方网页 (萌王) 13个页面 HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计
HTML5期末大作业:HTML5期末大作业:网站--卡通游戏官方网页 (萌王)HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个 ...
最新文章
- 分页控件 WebPager [ZT]
- java基础(一):谈谈java内存管理与垃圾回收机制
- 高等数学上-赵立军-北京大学出版社-题解-练习2.6
- 程序员爬取 3 万条评论,《长安十二时辰》槽点大揭秘!
- android中怎么录制屏幕内容,手机怎么录屏?5分钟教你怎么录制手机屏幕
- Halcon仿射变换图片(旋转、缩放、平移)
- 4007: [JLOI2015]战争调度
- rsync+inotify-tools和rsync+sersync实战应用的区别
- 测试代理ip是否有效
- 爬取链家二手房交易数据
- B站总结某up主面试题(持续等待更新......)
- 机器学习模型评估及性能评价(超全)
- 三、为什么要使用RabbitMQ?他解决了什么问题?
- 远控软件gh0st源码免杀之我谈
- 物理渲染数学(s2013_pbs_physics_math_notes)
- 编程语言的自举之路——从机器码到高级语言
- 第三届无线通信AI大赛分享交流会暨颁奖典礼顺利举办,大赛圆满收官
- ZSTD 解压缩前端处理方案
- 【uniapp前端组件】宫格
- 干货|常用的电子元器件基础知识介绍
热门文章
- 创界uVision下的ADuC845的工程文件
- ST-3806系列单圈编码器 测试说明
- 第十五届全国大学生智能汽车竞赛各分赛区国赛获奖信息
- cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?
- java maven 开发环境_Maven 搭建开发环境
- console线驱动安装_centos7安装docker
- 轻量级web api_10个很棒的JavaScript库,提升Web开发效率
- 如何在树莓派上进行python编程_设置并使用树莓派进行Python和C语言编程 (下)
- vue 定位所在地_vue系列教程之微商城项目|商品购买
- HDLBits 系列(5)让三元条件运算符(?:)在你的设计中发挥作用