如何在只使用像素的特定Javascript中动态缩放元素
How do I dynamically scale elements in a specific Javascript that only uses pixels?
我正在尝试使用jQuery插件:在jQuery By中使用带有缓和和运动模糊的浮动框:Marcel Jusztin。
我已经很好地工作了,并且了解如何调整大多数属性,但我是一个Javascript新手,真的不了解改变它如何使用数学来放置我想要动画化的元素所涉及的机制。我想做的是将x和y偏移坐标集(当然是以像素为单位)更改为一组百分比,这样元素就可以根据屏幕分辨率动态缩放位置。以下是完整的脚本:
jQuery.fn.floatingBox = function ( userOptions ) {
options = jQuery.extend ({
parent : 'backdrop',
stage : 'backdrop',
scale : 0.3,
xOffset : 0,
yOffset : 0,
blur : false,
isText : false,
blurColor : '#888',
frameRate : 40,
}, userOptions);
var parent = options.parent;
var stage = options.stage;
var scale = options.scale;
var xOffset = options.xOffset;
var yOffset = options.yOffset;
var blur = options.blur;
var isText = options.isText;
var blurColor = options.blurColor;
var frameRate = options.frameRate;
var midX = $('#' + stage).width() / 2;
var midY = $('#' + stage).height() / 2;
var _x = midX;
var _y = midY;
var xx = midX;
var yy = midY;
var objectId = $(this).attr('id');
$('#' + objectId).css('position','absolute');
shadowAmount = 0;
window["timer" + objectId] = window.setInterval(update,frameRate);
$('#' + parent).mousemove(function(event){
_x = event.pageX;
_y = event.pageY;
if( shadowAmount < 5 && blur == true ) shadowAmount += scale;
});
factor = scale * 0.5;
function update() {
xx += (((_x - midX) * -scale) - xx) * factor;
yy += (((_y - midY) * -scale) - yy) * factor;
$('#' + objectId).css('left', xx + xOffset + $('#' + parent).position().left);
$('#' + objectId).css('top', yy + yOffset + $('#' + parent).position().top);
if(blur){
if(!isText){
$('#' + objectId).css('box-shadow', '0px 0px ' + shadowAmount + 'px ' + blurColor );
$('#' + objectId).css('-moz-box-shadow', '0px 0px ' + shadowAmount + 'px ' + blurColor );
$('#' + objectId).css('-webkit-box-shadow', '0px 0px ' + shadowAmount + 'px ' + blurColor );
$('#' + objectId).css('-o-box-shadow', '0px 0px ' + shadowAmount + 'px ' + blurColor );
}else{
$('#' + objectId).css('text-shadow', '0px 0px ' + shadowAmount + 'px ' + blurColor );
}
if(shadowAmount > 0 ) shadowAmount -= scale;
}
}
}
以下是在HTML文档中启动javascript的脚本:
<script type="text/javascript">
jQuery(function(){
$('#biglogo').floatingBox({
scale : 0.09,
blur : false,
isText : false,
xOffset : 400,
yOffset: 200,
});
$('#biglogo2').floatingBox({
scale : 0.08,
blur : false,
isText : false,
xOffset : 405,
yOffset: 205,
});
});
</script>
我有两个透明的png文件,它们以5个像素(或者可能被认为是10个像素)的微小偏移相互层叠,但我更希望这两个图像在所有浏览器窗口中居中,而不仅仅是我的。刻度表示元素移动的速度和距离。xOffset和yOffset参数当然是固定数字,不会根据浏览器窗口大小进行缩放。
我曾试图对此进行研究,但最终,我既没有发现这是不可能的,也没有发现这可以,因为似乎没有人回应我所面临的具体问题。也许我用词不对。
谢谢!
从脚本的外观来看,我想说它已经考虑了必要的计算。尝试设置parent
和stage
选项,并忽略偏移参数。I.e
$('#biglogo').floatingBox({
parent: 'container-id',
stage: 'container-id',
scale: 0.09,
blur: false,
isText: false
});
编辑:我对插件做了一些修改,展示了如何进行居中工作,http://jsfiddle.net/wwBJt/
相关文章:
- 如何使Javascript动态html表及其上的事件
- 使用JavaScript动态插入DIV的成本有多高
- Javascript动态变量(添加了随机数)
- JavaScript-动态SVG-onload属性-未触发事件
- 传递给 PHP 表单时 JavaScript 动态变量上的未定义索引
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 使用javascript动态创建html内容/元素
- 带有多个答案选项的Javascript动态数组窗口
- JavaScript:动态扩展原型是一种糟糕的做法
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- javascript动态内容与选择长运行脚本
- Javascript:动态更改CSS文件+Cookie
- 使用javascript动态计算top属性
- 使用javascript动态选择幻灯片放映的图像
- 如何访问用javascript动态生成的textarea的文本内容
- Javascript动态表,每个单元格都有一个onmouse事件
- Php,Javascript-动态表单id's和动态验证
- JavaScript动态附加到搜索字段
- 如何将CSRF令牌添加到javascript动态生成的表单中
- 从Javascript动态构建JSON对象列表