我不知道现在是晚了还是我只是愚蠢,但我无法弄清楚。
我想要做的是将背景图像放置在它所属的元素之外,使用 % . 我想做的原因是这样我以后可以将背景位置从这个 % 动画到 50% 让它“滑入”。
如果我可以使用像素,则很容易将其设置为background-position
,[width-of-element]px 0
但由于我希望元素的最终位置为50% 0
我不能从像素值开始。(我正在使用 jQuery 背景位置插件 btw http://keith-wood.name/backgroundPos.html)。
所以,我的问题是,知道元素的宽度和背景图像的宽度 - 我如何计算需要哪个 %:age 将图像定位在元素边缘之外?
显然,将背景位置设置为“0 0”使其呈现在左上角,“50% 0”使其居中,“100% 0”使其从右边缘定位。如果我超过 100%,它开始从右边缘移开,并且根据图像的宽度(我猜是元素),需要大约 200 及以上的任何值才能将背景图像完全推到边缘之外的元素。
如果我反过来,从 0 向下,图像向右移动,隐藏它所需的百分比再次变化,但与将其推离另一边缘所需的正百分比不同。
再说一次,也许我只是累了,但我被困在这里。
编辑:我注意到的另一个奇怪的事情是,如果图像小于包含元素,将其 background-position-x 增加到 100% 以上并不会使其远离右侧,而是使其向右移动。在这个更新的小提琴上调整 101% 并与旧小提琴进行比较,看看我的意思:http: //jsfiddle.net/cTeEA/1/
编辑:好的百分比似乎是不可能的,或者至少比简单地使用像素难十倍。这是我解决它的方法(或多或少):
var dir = 'left'; // || 'right' (where to slide in the image from)
var winWidth = $(document).width();
var imgWidth = $('img[src="src-of-already-added-and-loaded-img.png"]').width();
var posOutside = dir == 'right' ? '-' + imgWidth + 'px' : winWidth + 'px';
var posCenter = (imgWidth > winWidth) ? -((imgWidth - winWidth) / 2) : ((winWidth - imgWidth) / 2);
然后我只是将背景位置从 posOutside 设置为 posCenter。
感谢那些在评论中提供帮助的人。