偶然看到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页面特效相关推荐

  1. web前端期末大作业 html+css+javascript 酒庄网页设计实例(5个页面)~学生网页设计制作...

    web前端期末大作业 html+css+javascript 酒庄网页设计实例(5个页面)~学生网页设计制作 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从 ...

  2. 天猫HTML练手项目,GitHub - txz1220/tianmao: 一个模仿天猫网页的项目

    一个模仿天猫网页的项目 主要涉及到前端方面,后端暂无. 主要目的:拿来练手用的 本项目主要是联系使用,所以css js 都放在html页面上了. 知识点学习: 1.html 要有个布局框架 2.css ...

  3. web前端期末大作业 html+css+javascript 全球私人定制旅游网页设计实例(6个页面)

    web前端期末大作业 html+css+javascript 全球私人定制旅游网页设计实例(6个页面) 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? ...

  4. HTML5前端页面设计,HTML5网页前端设计

    HTML5网页前端设计 编辑 锁定 讨论 上传视频 <HTML5网页前端设计>是2017年6月清华大学出版社出版的图书,作者是周文洁. 书    名 HTML5网页前端设计 作    者 ...

  5. 盘点 12 个 GitHub 上的高仿项目

    今日推荐为什么不建议你用a.equals(b)判断对象相等 SpringBoot中的线程池,你真的会用么? 代码对比工具,就用这7个! 在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面) 后 ...

  6. 热门App 高仿项目12 个 GitHub 上的高仿项目

    哈喽大家好,今天和大家分享一些现在比较热门 App 的高仿项目,包括高仿微信.微博.B站.斗鱼.抖音.美团.头条.掘金等等. 这些项目涉及的技术栈有 Vue.Flutter 等等,看这些高仿项目的源码 ...

  7. webstorm打开网页_网页前端之HTML+CSS+JS

    古柏高枝银杏实,几千年物到而今. 玉纤雪腕白相照,烂银壳破玻璃明. 银杏(学名:Ginkgo biloba),落叶乔木,树冠圆锥形,枝轮生,叶互生,在长枝上散生,二歧状分叉叶脉,果具长梗,下垂,倒卵圆 ...

  8. Web前端之仿携程首页布局

    Web前端之仿携程首页布局 1.前言 出于之前早就学习过Web的相关技术,后面很少写仿网页或者做后端等案例了,导致一些基础知识点有所遗忘,而这部分知识又是Java学习中的重中之重,因此借目前学校课程正 ...

  9. HTML5期末大作业:网站——卡通漫画游戏官方网页 (萌王) 13个页面 HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计

    HTML5期末大作业:HTML5期末大作业:网站--卡通游戏官方网页 (萌王)HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个 ...

最新文章

  1. 分页控件 WebPager [ZT]
  2. java基础(一):谈谈java内存管理与垃圾回收机制
  3. 高等数学上-赵立军-北京大学出版社-题解-练习2.6
  4. 程序员爬取 3 万条评论,《长安十二时辰》槽点大揭秘!
  5. android中怎么录制屏幕内容,手机怎么录屏?5分钟教你怎么录制手机屏幕
  6. Halcon仿射变换图片(旋转、缩放、平移)
  7. 4007: [JLOI2015]战争调度
  8. rsync+inotify-tools和rsync+sersync实战应用的区别
  9. 测试代理ip是否有效
  10. 爬取链家二手房交易数据
  11. B站总结某up主面试题(持续等待更新......)
  12. 机器学习模型评估及性能评价(超全)
  13. 三、为什么要使用RabbitMQ?他解决了什么问题?
  14. 远控软件gh0st源码免杀之我谈
  15. 物理渲染数学(s2013_pbs_physics_math_notes)
  16. 编程语言的自举之路——从机器码到高级语言
  17. 第三届无线通信AI大赛分享交流会暨颁奖典礼顺利举办,大赛圆满收官
  18. ZSTD 解压缩前端处理方案
  19. 【uniapp前端组件】宫格
  20. 干货|常用的电子元器件基础知识介绍

热门文章

  1. 创界uVision下的ADuC845的工程文件
  2. ST-3806系列单圈编码器 测试说明
  3. 第十五届全国大学生智能汽车竞赛各分赛区国赛获奖信息
  4. cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?
  5. java maven 开发环境_Maven 搭建开发环境
  6. console线驱动安装_centos7安装docker
  7. 轻量级web api_10个很棒的JavaScript库,提升Web开发效率
  8. 如何在树莓派上进行python编程_设置并使用树莓派进行Python和C语言编程 (下)
  9. vue 定位所在地_vue系列教程之微商城项目|商品购买
  10. HDLBits 系列(5)让三元条件运算符(?:)在你的设计中发挥作用