如何过渡CSS值的变化
How do I transition the changing of CSS values?
我使用JavaScript更改CSS值,以便在单击按钮时使特定的div填充页面。但是我想让从小到填充屏幕的变化变得平滑。我如何用CSS或Javascript做到这一点?这就是我现在改变div
大小的方法function fullscreen(){ // called when button is clicked
var d = document.getElementById('viewer').style;
if(!isFullscreen){ // if not already fullscreen change values to fill screen
d.width = "100%";
d.height="100%";
d.position= "absolute";
d.left="0%";
d.top="0%";
d.margin="0 0 0 0";
isFullscreen = true;
}else{ // minimizie it
d.width="600px";
d.height="400px";
d.margin="0 auto";
d.position="relative";
isFullscreen = false;
}
}
我如何编码从全屏值到最小化值的变化是一个平稳的过渡,而不是瞬时的?
使用jQuery的animate()
函数!
function fullscreen(){ // called when button is clicked
var o = {} // options
var speed = "fast"; // You can specify another value
if(!isFullscreen){ // if not already fullscreen change values to fill screen
o.width = "100%";
o.height="100%";
o.left="0%";
o.top="0%";
o.margin="0 0 0 0";
$("#viewer").animate(o,speed);
isFullscreen = true;
}else{ // minimize it
o.width="600px";
o.height="400px";
o.margin="0 auto";
$("#viewer").animate(o,speed);
isFullscreen = false;
}
}
你可以通过使用Jquery, .animate()
API来做到这一点,参见参考。animate()
我使用.animate()
创建了一个小演示,点击演示查看示例。
你要做的是相当复杂的,首先你需要得到你的元素在文档中的绝对位置和尺寸,以及文档本身的尺寸,没有本地的跨平台javascript函数,但有已知的技术来找到这些值,做一个搜索。因此,假设您将自己实现这些功能:getAbsoluteLeft()
, getAbsoluteTop()
, getWidth()
, getHeight()
, getDocWidth()
和getDocHeight()
这里是动画代码(未测试):
function fullscreen(){ // called when button is clicked
var e = document.getElementById('viewer');
var d = e.style;
if(!isFullscreen){ // if not already fullscreen change values to fill screen
var duration = 1000 //milliseconds
var framesPerSecond = 24;
var beginLeft = getAbsoluteLeft( e );
var beginTop = getAbsoluteTop( e );
var beginRight = beginLeft + getWidth( e );
var beginBottom = beginTop + getHeight( e );
var endLeft = 0;
var endTop = 0;
var endRight = getDocWidth();
var endBottom = getDocHeight();
var totalFrames = duration / (1000/framesPerSecond);
var frameNo = 0;
var leftStep = (beginLeft - endLeft) / totalFrames;
var topStep = (beginTop - endTop) / totalFrames;
var rightStep = (endRight - beginRight) / totalFrames;
var bottomStep = (endBottom - beginBottom) / totalFrames;
var func = function () {
var left = beginLeft - leftStep * frameNo;
var top = beginTop - topStep * frameNo;
d.left = left+'px';
d.top = top+'px';
d.width = (beginRight + rightStep * frameNo - left)+'px';
d.height = (beginBottom + bottomStep * frameNo - top)+'px';
++frameNo;
if( frameNo == totalFrames ) {
clearInterval( timer );
d.width = "100%";
d.height="100%";
d.left="0%";
d.top="0%";
isFullscreen = true;
}
}
d.position= "absolute";
d.margin="0 0 0 0";
timer = setInterval( func, 1000 / framesPerSecond );
} else { // minimizie it
d.width="600px";
d.height="400px";
d.margin="0 auto";
d.position="relative";
isFullscreen = false;
}
}
相关文章:
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- JS幻灯片与CSS背景颜色变化
- Webkit-css随持续时间变化
- CSS.滚动后元素位置发生变化
- jquery位置随着.css()行为的奇怪而变化
- AngularJS:当css类发生变化时,如何通过切换来更改颜色属性
- CSS 在滚动时会发生变化,但会随着滚动速度而变化
- 使用CSS和JavaScript点击,链接颜色在被点击和激活时会发生变化,直到我点击其他链接
- JS监视CSS属性的变化,如“display:none”=>“display:block”
- 我应该在什么时候用CSS和Javascript控制背景图像的变化
- 流星js的iron router:当路由发生变化时,应用CSS更改
- 实时预览HTML和CSS的变化
- 如何检测CSS值何时发生变化
- 使用Jquery设置CSS宽度时,边框半径会发生变化
- 在滚动时创建一个变化的css导航条
- 不能通过Javascript保持CSS的变化
- 如何过渡CSS值的变化
- 如何使用javascript和css动画的高度变化
- jQuery/Javascript -变量到CSS的变化
- 同时用CSS触发多个动画和形状变化