html5怎样引入三维模型,创建360度旋转浏览?

html-css057

html5怎样引入三维模型,创建360度旋转浏览?,第1张

html5中引入3d模型的方法是借助第三方PlayCanvas插件来完成的。

比如可以用以下方法实现图片的360度旋转:

代码示例:

var render, loop, t, dt, //定义变量

DEG2RAD = Math.PI / 180, //角度转弧度

cvs = document.querySelector('canvas'), //创建canvas

ctx = cvs.getContext('2d'),//绘制2d图形上下文

teddy = new Image(), //创建图像

heart = new Image(), //创建图像中心

angle = 0,//初始化角度为0

reqAnimFrame =

window.requestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame ||

window.msRequestAnimationFrame ||

window.oRequestAnimationFrame

//创建动画帧

cvs.width = 400

cvs.height = 200

teddy.src = 'xxx.jpg'

heart.src = 'yyy.jpg'

//开始渲染

render = function (timestamp) {

dt = timestamp - t

t = timestamp

// cavas设置为白色

ctx.fillStyle = "rgb(255,255,255)"

ctx.fillRect(0, 0, cvs.width, cvs.height)

// 绘制中心

ctx.drawImage(heart, -20, -120)

// 绘制teddy

ctx.save()

ctx.translate(cvs.width/2, cvs.height/2)// 移动鼠标到画布中心

ctx.rotate(DEG2RAD * angle)// 旋转画布

ctx.drawImage(teddy, -teddy.width/2, -teddy.height/2)// 绘制中心图片

angle += dt / 16.67 * 6// increment angle ~ 360 deg/sec

ctx.restore()

}

loop = function (timestamp) {

reqAnimFrame(loop)

render(timestamp)

}

t = Date.now()

loop(t)

1.盒子简介:在CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里,那么网页布局就相当于摆放盒子

2.盒子模型组成部分:

内容区(content)

内边距(padding)

外框(border)

外边距(margin)

1.box的宽高可以用 width和heigh t来设置

注意,width和height只是设置盒子内容区大小,而不是盒子的整个大小,盒子可见框的大小由内容区,内边距和边框共同决定。因此计算 盒子大小=内容区+边框+内边距

2.为元素设置边框

要为一个元素设置红边框 必须指定三个样式(缺一不可)

border-width:边框的宽度

border-color:边框的颜色

border-style:边框的样式

使用border-width可以分别指定四个边框的宽度。

如果在border-width制定了四个值,则四个值会分别设置给 上右下左 ,按照顺时针的方向设置的。

如果指定三个值,则三个值会分别设置给 上 左右 下

如果当指定两个值,则两个值会分别设置给 上下 左右

如果当指定一个值,则四边 全都是该值

这个规律同时适用于border-color / style

除了border-width,CSS中还提供了四个 border-xxx-width

xxx的值可能是top right bottom left , 专门用来设置指定边的宽度 。

和宽度一样,color也提供四个方向的样式,可以分别指定颜色。例如,border-xxx-color

style也可以分别指定4个边的边框样式,规则和width一样,同时它也提供border-xxx-style四个样式,来分别设置四个边。

border  的边框样式简写方式,通过它可以同时设置四个边框的样式,宽度,颜色, 而且没有任何的顺序要求。但是!border一指定就是同时指定四个边不能分别指定。

border-xxx ,例如border-top   border-right   border-bottom  border-left

可以单独设置四个边的样式,规则和border一样,只不过他只对一个边生效。

内边距(padding),指的是盒子的内容区域盒子边框之间的距离。

一共有四个方向的内边距,可以通过:

padding-top

padding-right

padding-left

padding-bottom

来设置四个方向的内边距

内边距会影响盒子的可见框的大小,元素的背景会延伸到内边距。

盒子的大小由内容区、内边距和边框共同决定。

盒子可见框的宽度=border-left-width + padding-left + width + padding-right + border-right-width

可见框的高度=border-top-width + padding-top + height + padding-bottom + border-bottom-width

使用padding可以同时设置四个边框的样式,规则和border-width一致

外边距指的是当前盒子与其他盒子之间的距离,他不会影响可见框的大小,而是会影响到盒子的位置。

盒子有四个方向的外边距:

margin-top

margin-rigtht

margin-bottom

margin-left

由于页面中的元素都是靠左上摆放的,所以注意当我们设置上和左外边距时,会导致盒子自身的位置发生改变。

而如果是设置右和下外边距会改变其他盒子的位置

外边距也可以指定一个负值,如果外边距设置的是负值,则元素会向反方向移动

margin还可以设置为auto,auto一般只设置给水平方向的margin

如果只指定,左外边距或者右外边距的margin为auto则会将外边距设置为最大值

垂直方向外边距如果设置为auto,则外边距默认就是0

如果将left和right同时设置为auto,则会将两侧的外边距设置为相同的值,就可以使元素自动在父元素中居中,所以我们经常将左右外边距设置为auto,以使元素在父元素中水平居中。

同时,外边距同样可以使用简写属性margin,可以同时设置四个方向的外边距,规则和padding一样。

所谓盒子模型就是,在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或区域。4个部分一起构成了css中元素的盒模型。

内容(CONTENT)就是盒子里装的东西;

而填充(PADDING)就是怕盒子里装的东西(贵重的)损坏而添加的泡沫或者其它抗震的辅料;

边框(BORDER)就是盒子本身了;至于边界(MARGIN)则说明盒子摆放的时候的不能全部堆在一起,要留一定空隙保持通风,同时也为了方便取出。在网页设计上,内容常指文字、图片等元素,但是也可以是小盒子(DIV嵌套),与现实生活中盒子不同的是,现实生活中的东西一般不能大于盒子,否则盒子会被撑坏的,而CSS盒子具有弹性,里面的东西大过盒子本身最多把它撑大,但它不会损坏的。

填充只有宽度属性,可以理解为生活中盒子每个HTML标记都可看作一个盒子;