js基础教程黑马程序员(如何使用html+css+js实现3D相册)

2025-10-23 01:00:02 0

js基础教程黑马程序员(如何使用html+css+js实现3D相册)

各位老铁们好,相信很多人对js基础教程黑马程序员都不是特别的了解,因此呢,今天就来为大家分享下关于js基础教程黑马程序员以及如何使用html+css+js实现3D相册的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

如何使用html+css+js实现3D相册


使用html+css+js实现3D相册,快来上传的照片吧
推荐:《js基础教程》
效果图:
代码如下,复制即可用:
《!DOCTYPE html》
《html》
《head》
《meta charset="UTF-8"》
《title》Title《/title》
《style》
html,
body {
margin: 0;
padding: 0;
background-color: #29454d;
/*禁止文字被选中*/
-moz-user-select: none;
/*火狐*/
-webkit-user-select: none;
/*webkit浏览器*/
-ms-user-select: none;
/*IE10*/
-khtml-user-select: none;
/*早期浏览器*/
user-select: none;
overflow: hidden;
}
.box {
position: relative;
height: 500px;
width: 500px;
margin: 100px auto;
transform-style: preserve-3d;
perspective: 2000px;
}
.di {
position: absolute;
left: 50%;
top: 50%;
height: 200px;
width: 200px;
transform: translate(-50%, -50%) rotatex(90deg);
transform-style: preserve-3d;
}
.z {
position: relative;
height: 200px;
width: 200px;
border-radius: 50%;
transform-style: preserve-3d;
/*transform: rotatez(1deg);*/
}
p {
margin: 0;
position: absolute;
top: 0;
/*为了保证圆心在父盒子中心,父盒子旋转时圆心稳定,所以设置left*/
left: 25px;
height: 200px;
width: 150px;
border: 2px solid #fd7068;
box-sizing: border-box;
background-color: #ffffff;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
/*opacity: .7;*/
font-size: 10px;
line-height: 200px;
text-align: center;
/*box-shadow: 0 0 100px #16ff8b;*/
/*倒影,不兼容*/
-webkit-box-reflect: below 10px -webkit-linear-gradient(top, rgba(250, 250, 250, 0), rgba(250, 250, 250, .0) 30%, rgba(250, 250, 250, 0.5));
box-reflect: below 10px -webkit-linear-gradient(top, rgba(250, 250, 250, 0), rgba(250, 250, 250, .0) 30%, rgba(250, 250, 250, 0.5));
/*backface-visibility: hidden;*/
}
《/style》
《/head》
《body》
《div》
《div》
《div》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《p》可以拖拽图片文件进来《/p》
《/div》
《/div》
《/div》
《script》
window.onload = function () {
setPs();
move();
drop();
}
//给每个p标签设置位置
function setPs() {
var ps = document.getElementsByTagName(’p’);
for (var i = 0; i 《 ps.length; i++) {
ps.style.transform = ’rotatex(-90deg) rotatey(’ + i * 30 + ’deg) translatez(400px)’
}
}
//鼠标拖动旋转
function move() {
var zBox = document.querySelector(’.z’);
var xBox = document.querySelector(’.di’);
//声明计算鼠标移动速度用的变量
var speedTimer = null;
var speedX = 0;
var speedY = 0;
//声明记录旋转角度的两个变量
var xDegNow = 90;
var zDegNow = 0;
//声明变量记录要旋转的角度
var xDegDistance = 0;
var zDegDistance = 0;
//声明变量记录是否发生鼠标移动事件
var isMove = false;
window.onmousedown = function (e) {
//鼠标按下
//清除过渡属性
xBox.style.transition = ’’;
zBox.style.transition = ’’;
//记录按下的坐标以及计算速度的初始坐标
var xstart = e.clientX;
var speedX_start = xstart;
var ystart = e.clientY;
var speedY_start = ystart;
//记录用来计算速度的初始时间
var tstart = new Date().getTime();
var tnow = tstart;
//设置计时器更新计算速度的当时时间
speedTimer = setInterval(function () {
tnow = new Date().getTime();
},10)
window.onmousemove = function (e) {
//鼠标移动
isMove = true;
//记录当时的坐标计算距离
var xnow = e.clientX;
var ynow = e.clientY;
var xDistance = xnow - xstart;
var yDistance = ynow - ystart;
//如果计时超过一定时间(10毫秒),计算速度
if (tnow - tstart 》= 10) {
//速度=(现在的坐标-初始坐标)/(现在时间-初始时间)
speedX = (xnow - speedX_start) / (tnow - tstart);
speedY = (ynow - speedY_start) / (tnow - tstart);
//让初始时间和坐标等于现在的时间和坐标
tstart = tnow;
speedX_start = xnow;
speedY_start = ynow;
}
//把鼠标移动距离计算成角度后设置到页面上
zDegDistance = zDegNow - (xDistance / 10);
zBox.style.transform = ’rotatez(’ + zDegDistance + ’deg)’;
xDegDistance = xDegNow - (yDistance / 10);
xDegDistance = xDegDistance 》 179 ? 179 : xDegDistance 《 1 ? 1 : xDegDistance;
xBox.style.transform = ’translate(-50%,-50%) rotatex(’ + xDegDistance + ’deg)’;
};
};
window.onmouseup = function (e) {
//鼠标松开
//清除计时器 清除鼠标移动事件
clearTimeout(speedTimer);
window.onmousemove = null;
//判断如果发生移动
if (isMove) {
//添加过渡属性
xBox.style.transition = ’all 0.5s ease-out’;
zBox.style.transition = ’all 0.5s ease-out’;
//根据速度计算目标角度,设置到页面上
zDegDistance = zDegDistance - (speedX * 10);
zBox.style.transform = ’rotatez(’ + zDegDistance + ’deg)’;
xDegDistance = xDegDistance - (speedY * 10);
xDegDistance = xDegDistance 》 179 ? 179 : xDegDistance 《 1 ? 1 : xDegDistance;
xBox.style.transform = ’translate(-50%,-50%) rotatex(’ + xDegDistance + ’deg)’;
//记录当前角度的值更新
xDegNow = xDegDistance;
zDegNow = zDegDistance;
//用到的变量重置
isMove = false;
speedX = 0;
speedY = 0;
xDegDistance = 0;
zDegDistance = 0;
}
};
}
//鼠标拖拽文件
function drop() {
//取消鼠标拖拽文件进入窗口的默认行为
window.ondragover = function (e) {
e.preventDefault();
}
window.ondrop = function (e) {
e.preventDefault();
}
//添加拖拽到p标签的事件
var ps = document.getElementsByTagName(’p’);
for (var i = 0; i 《 ps.length; i++) {
ps.index = i;
ps.ondrop = function (e) {
var w = new FileReader();
w.index = this.index;
w.readAsDataURL(e.dataTransfer.files);
w.onload = function () {
ps.style.backgroundImage = ’url(’ + w.result + ’)’;
ps.innerHTML = ’’;
}
}
}
}
《/script》
《/body》
《/html》

Web 前端怎样入门

给你一套web前端中级程序员学习路线图,含配套视频,前端工具,源码等。

黑马程序员学习路线图及能掌握的能力(总,以下会分阶段,加上配套学习视频,小伙伴可继续往下看!)

第一阶段:HTML5+css

配套学习视频:

前端小白零基础入门HTML5+CSS3

第二阶段:移动web网页开发

配套学习视频:

2018移动web进阶教程

第三阶段:JavaScript网页编程

配套学习视频:

前端与移动开发基础入门到精通

javaScript零基础通关必备教程

第四阶段:Node.js与Ajax

配套学习视频:

Nodejs教程精讲

ajax从入门到精通

第五阶段:vue.js项目实战

配套学习视频:

4小时+5个拣选案例让你快速入门Vue.js

2018年Vue.js深入浅出教程

第六阶段:微信小程序

配套学习视频:

一天教你打造企业级微信小程序

20180316-微信小程序-个人语音接口功能

分分钟快速入门小程序开发

零基础玩转微信小程序

2小时轻松实现人脸识别的小程序

第七阶段:React.js项目实战

配套学习视频:

Reactjs入门教程

ReactJs精品教程

第八阶段:框架阶段与原理

第九阶段:移动APP开发

第十阶段:node.js进阶

第十一阶段:可视化游戏

第十二段阶段:架构与运维

前端学习教程及公开课教程:黑马程序员web前端学习视频 全部

前端Vue.js框架是什么

前端Vue.js框架是什么?有哪些特点?Vue.js是一个前端框架,用于构建用户界面的渐进式框架。在Vue中一个核心的概念是让用户不再操作DOM元素解放了用户的双手,让程序员可以更多的时间去关注业务逻辑,Vue框架能够提高开发的效率。

科普时刻

黑马程序员vue前端基础教程-4个小时带你快速入门vue

前端开发利器vue,微信小程序快速开发实战

web前端基础必备教程-2小时玩转Vue单元测试

黑马程序员Vue2.0+Vue3.0入门到精通,大厂前端岗位必备技能

1、Vue.js是什么?

Vue是一个js库,且无依赖别的js库跟jquery差不多。Vue核心库只关注视图层,非常容易与其它库或已有项目整合。Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。

Vue.是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是Vue 被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

2、Vue的MVVM设计模式是什么?

如果了解前端一定知道MVVM和MVC这两种设计模式,且很有可能对mvp也有一些了解。MVC即model,view,control,jQuery就是采用的这种设计模式。MVVM即model,view,viewmodel,是数据驱动模式,即所有的一切通过操作数据来进行而尽量避免操作DOM树。

不关注DOM结构,考虑数据该如何储存,用户的操作在view通过viewmodel进行数据处理,分情况是否通过ajax与model层进行交互,再返回到view层,在这个过程中view和viewmodel的数据双向绑定使得我们完全的摆脱了对DOM的繁琐操作,而是专心于对用户的操作进行处理,避免MVC中control层过厚的问题。

在vue调试方面可以选择安装chrome插件vue Devtools。打开vue项目,在console控制台选择vue面板。在Devtools对象中,可以选择组件,查看对应组件内的数据信息。也可以选择Vuex选项,查看该项目内Vuex的状况变量信息。

3、Vue.js有哪些优点?

声明式,响应式的数据绑定;组件化的开发;Virtual DOM;响应式的数据绑定
(1)jQuery首先获取到DOM对象,然后对DOM对象进行进行值的修改等操作;
(2)Vue首先把值和js对象进行绑定,然后修改js对象值,Vue框架会自动把DOM的值就行更新;
(3)简单理解为Vue帮我们做了DOM操作,以后用Vue就需要修改对象的值和做好元素和对象的绑定,Vue框架会自动做好DOM相关操作;
(4)DOM元素跟随JS对象值的变化而变化叫做单向数据绑定,若JS对象的值也跟随着DOM元素。

4、需要学习哪些Vue.js框架相关知识点?

Vue.js 安装、Vue.js 目录结构、Vue.js 起步、Vue.js 模板语法、Vue.js 条件语句、Vue.js 循环语句、Vue.js 计算属性、Vue.js 监听属性、Vue.js 样式绑定、Vue.js 事件处理器、Vue.js 表单、Vue.js 组件、Vue.js 组件自定义事件、Vue.js 自定义指令、Vue.js 路由、Vue.js 过渡& 动画、Vue.js 混入、Vue.js Ajax(axios)、Vue.js Ajax(vue-resource)、Vue.js 响应接口、Vue.js 实例等。

Vue.js 是一个JavaScriptMVVM库,一套构建用户界面的渐进式框架。以数据驱动和组件化的思惟构建的,采取自底向上增量开辟的设计。比拟于Angular.js,Vue.js供给了加倍简洁、更易于懂得的API,使得我们快速地上手并应用Vue.js。

关于js基础教程黑马程序员,如何使用html+css+js实现3D相册的介绍到此结束,希望对大家有所帮助。

js基础教程黑马程序员(如何使用html+css+js实现3D相册)

本文编辑:admin

更多文章:


wireshark没有找到接口(我在windows xp上安装了wireshark软件,结果提示There are no interfaces on which a capture can be done)

wireshark没有找到接口(我在windows xp上安装了wireshark软件,结果提示There are no interfaces on which a capture can be done)

本篇文章给大家谈谈wireshark没有找到接口,以及我在windows xp上安装了wireshark软件,结果提示There are no interfaces on which a capture can be done对应的知识点,

2025年7月31日 03:30

结束正在运行的程序快捷键(电脑关闭程序快捷键 都有哪些呢)

结束正在运行的程序快捷键(电脑关闭程序快捷键 都有哪些呢)

“结束正在运行的程序快捷键”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看结束正在运行的程序快捷键(电脑关闭程序快捷键 都有哪些呢)!本文目录电脑关闭程序快捷键 都有哪些呢在电脑上结束任务的快捷键是什么(按哪个键结束程序)电

2025年7月3日 03:45

零基础学php培训(昌平IT培训分享学PHP想快点学会要怎么办)

零基础学php培训(昌平IT培训分享学PHP想快点学会要怎么办)

大家好,如果您还对零基础学php培训不太了解,没有关系,今天就由本站为大家分享零基础学php培训的知识,包括昌平IT培训分享学PHP想快点学会要怎么办的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录昌平IT培训分享

2025年12月27日 23:30

维吉尼亚密码怎么用(令n=26,s=4,密钥k=QEGD,明文串M=computer,用维吉尼亚密码体制对M加密)

维吉尼亚密码怎么用(令n=26,s=4,密钥k=QEGD,明文串M=computer,用维吉尼亚密码体制对M加密)

“维吉尼亚密码怎么用”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看维吉尼亚密码怎么用(令n=26,s=4,密钥k=QEGD,明文串M=computer,用维吉尼亚密码体制对M加密)!本文目录令n=26,s=4,密钥k=QE

2026年4月2日 23:45

化妆品入库表单模板(出库单和入库单怎么弄的表格)

化妆品入库表单模板(出库单和入库单怎么弄的表格)

本篇文章给大家谈谈化妆品入库表单模板,以及出库单和入库单怎么弄的表格对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录出库单和入库单怎么弄的表

2025年10月8日 14:30

下载php的软件(php开发软件有哪些(php用什么软件))

下载php的软件(php开发软件有哪些(php用什么软件))

这篇文章给大家聊聊关于下载php的软件,以及php开发软件有哪些(php用什么软件)对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录php开发软件有哪些(php用什么软件)php开发软件有哪些php项目开发用什么软件学php要

2025年9月22日 21:15

isnull()方法的作用(sqlserver中isnull(@RecIndex,’’) <> ’’是什么意思)

isnull()方法的作用(sqlserver中isnull(@RecIndex,’’) <> ’’是什么意思)

其实isnull()方法的作用的问题并不复杂,但是又很多的朋友都不太了解sqlserver中isnull(@RecIndex,’’) ’’是什么意思,因此呢,今天小编就来为大家分享isnull()方法的作用的一些知识,希望可以帮助到大家,

2026年7月2日 14:45

永久免费个人网站申请注册w(如何注册免费网站)

永久免费个人网站申请注册w(如何注册免费网站)

本篇文章给大家谈谈永久免费个人网站申请注册w,以及如何注册免费网站对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录如何注册免费网站个人网站有

2025年11月22日 18:00

constructed environment翻译(翻译下面这段文字)

constructed environment翻译(翻译下面这段文字)

各位老铁们,大家好,今天由我来为大家分享constructed environment翻译,以及翻译下面这段文字的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始

2025年9月26日 03:00

interface如何读(请教几个英文怎么读)

interface如何读(请教几个英文怎么读)

其实interface如何读的问题并不复杂,但是又很多的朋友都不太了解请教几个英文怎么读,因此呢,今天小编就来为大家分享interface如何读的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录请教几个英文怎么读r

2025年12月2日 14:30

广州中小企业网站制作(怎么做中小企业网站呢)

广州中小企业网站制作(怎么做中小企业网站呢)

其实广州中小企业网站制作的问题并不复杂,但是又很多的朋友都不太了解怎么做中小企业网站呢,因此呢,今天小编就来为大家分享广州中小企业网站制作的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录怎么做中小企业网站呢我想建

2026年6月10日 16:15

spite词组(in spite of中spite是恶意,为什么变成短语是尽管的意思)

spite词组(in spite of中spite是恶意,为什么变成短语是尽管的意思)

各位老铁们好,相信很多人对spite词组都不是特别的了解,因此呢,今天就来为大家分享下关于spite词组以及in spite of中spite是恶意,为什么变成短语是尽管的意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看

2025年9月18日 03:45

mvc模式和责任链(网站开发模式除了MVC外还有什么)

mvc模式和责任链(网站开发模式除了MVC外还有什么)

这篇文章给大家聊聊关于mvc模式和责任链,以及网站开发模式除了MVC外还有什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录网站开发模式除了MVC外还有什么软件设计模式主要有哪几种mvc开发模式java 除了mvc设计模式

2025年9月13日 21:00

quadrature(quadrature中文翻译)

quadrature(quadrature中文翻译)

大家好,今天小编来为大家解答以下的问题,关于quadrature,quadrature中文翻译这个很多人还不知道,现在让我们一起来看看吧!本文目录quadrature中文翻译quadrature rule的定义 请问什么是quadratur

2025年11月21日 16:00

datagridview动态添加列(在DataGridView中动态添加combox列)

datagridview动态添加列(在DataGridView中动态添加combox列)

各位老铁们,大家好,今天由我来为大家分享datagridview动态添加列,以及在DataGridView中动态添加combox列的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家

2026年7月18日 09:00

web服务器控件不包括(web用户控件 的优点和缺点在哪里)

web服务器控件不包括(web用户控件 的优点和缺点在哪里)

大家好,如果您还对web服务器控件不包括不太了解,没有关系,今天就由本站为大家分享web服务器控件不包括的知识,包括web用户控件 的优点和缺点在哪里的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录web用户控件

2026年4月12日 16:45

字符串strtok(c语言:如何把字符串分解为一个个的字符)

字符串strtok(c语言:如何把字符串分解为一个个的字符)

其实字符串strtok的问题并不复杂,但是又很多的朋友都不太了解c语言:如何把字符串分解为一个个的字符,因此呢,今天小编就来为大家分享字符串strtok的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录c语言:如何

2025年8月24日 22:45

国内军事新闻(中国最新军事新闻)

国内军事新闻(中国最新军事新闻)

大家好,如果您还对国内军事新闻不太了解,没有关系,今天就由本站为大家分享国内军事新闻的知识,包括中国最新军事新闻的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录中国最新军事新闻关于战争的国内新闻深圳卫视军情直播间播

2025年10月18日 16:30

forks翻译(刀叉的英文怎么说)

forks翻译(刀叉的英文怎么说)

其实forks翻译的问题并不复杂,但是又很多的朋友都不太了解刀叉的英文怎么说,因此呢,今天小编就来为大家分享forks翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录刀叉的英文怎么说亲人怎么翻译英语高手请进,

2026年6月2日 19:15

echo和printf的区别(bash下echo和print的区别在哪里)

echo和printf的区别(bash下echo和print的区别在哪里)

今天给各位分享bash下echo和print的区别在哪里的知识,其中也会对bash下echo和print的区别在哪里进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录bash下echo和print的区别在哪里PH

2026年9月22日 22:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索