CSS背景图像动态调整大小
CSS background image resize dynamically
类似的问题我已经处理了一段时间了。我有一个链接,通过css为它分配了一个背景图像。我还有一个悬停图像。我动态调整页面图像的大小,这样它就可以调整图像地图的大小。我正在尝试添加一个Div,这样就会有一个打印机图标,你可以用鼠标悬停在上面。当我让所有东西都保持全尺寸时,它会起作用,但一旦我调整了背景和图像映射弹出窗口的大小,打印机div的大小就会很好,但div中的背景图像不会调整大小。
http://jsfiddle.net/trout0525/qfd58krc/1/
function mainLoad() {
var imageElement = document.getElementById('jDirBackground');
imgScale = currentScale(imageElement);
alert("mainLoad imgScale: " + imgScale);
var mapElement = document.getElementById('jDirMap');
var imageMap = new imageMapResize(mapElement, imgScale);
imageMap.resize();
var printerIcon = new printerIconResize(imgScale);
printerIcon.resize();
return;
}
好吧,我终于找到了一个我认为合理的解决方案。最主要的是CSS3的功能不够强大,无法实现我所希望的功能,所以我回到了HTML的发展图上。
http://jsfiddle.net/trout0525/qfd58krc/2/
我曾希望CSS能够处理图形的大小调整,但它似乎无法做到
onmouseover="imgHover(this)" onmouseout="imgLeave(this)"
以及满足它的代码:
function imgHover (x) {
x.src = "http://static.wixstatic.com/media/7a35ec_64af7af5864a4f2dad19c8c20855e532.jpg";
}
function imgLeave (x) {
x.src = "http://www.mailersstore.com/images/SECAP-SA3150.jpg";
}
然后我不得不在JavaScript中处理以下内容的大小调整:
function printerIconResize(imgScale) {
var position = $('#printerDiv').position();
var divWidth = $('#printerDiv').width();
var divHeight = $('#printerDiv').height();
var iconWidth = $('#printerIcon_link').width();
var iconHeight = $('#printerIcon_link').height();
// Get on screen image
var screenImage = $("#printerIcon_link");
// Create new offscreen image to test
var theImage = new Image();
theImage.src = screenImage.attr("src");
// Get accurate measurements from that.
iconWidth = theImage.width;
iconHeight = theImage.height;
this.resize = function() {
var newTop = position.top * imgScale;
var newLeft = position.left * imgScale;
var newDivWidth = parseInt((divWidth * imgScale), 10);
var newDivHeight = parseInt((divHeight * imgScale), 10);
var newIconWidth = parseInt((iconWidth * imgScale), 10);
var newIconHeight = parseInt((iconHeight * imgScale), 10);
$('#printerDiv').offset({ top: newTop, left: newLeft });
$('#printerDiv').width( newDivWidth );
$('#printerDiv').height( newDivHeight );
$('#printerIcon_link').width( newIconWidth );
$('#printerIcon_link').height( newIconHeight );
newPosition = $('#printerDiv').position();
newDivWidth = $('#printerDiv').width();
newDivHeight = $('#printerDiv').height();
newIconWidth = $('#printerIcon_link').width();
newIconHeight = $('#printerIcon_link').height();
return true;
};
window.onresize = this.resize;
}
页面加载和重新加载确实需要一段时间,但这是我现在能想到的最好的。如果你知道更好的方法。。。。
顺便说一句,JSFiddle代码似乎不起作用,但如果你离开网站并尝试它,它应该是好的,除了imgHover和imgLeave实际上在html文件的脚本区域中,而不是在js文件中。
哇!!!该喝啤酒了。(或三个)
相关文章:
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- window.open根据动态内容自动调整高度和宽度
- 如何动态调整文本大小以适应元素以防止拉伸
- 根据容器 DIV 中的图像动态调整容器 DIV 的大小
- 如何在浏览器宽度/高度变化时动态调整图像网格的大小
- 如何根据浏览器宽度动态调整 css 样式表
- 如何在使用react时动态调整元素大小
- 如何在OpenLayers中的Heatmap.js中动态调整缩放
- Jquery调整大小动态更新
- 在没有新行的情况下调整td中的动态加载内容
- 为什么这块画布一直在生长?(动态调整画布大小)
- 使用javascript动态调整CSS
- jQuery UI-动态设置可调整大小元素的minHeight
- 调整动态生成的 iframe 的大小
- 自动调整动态更改高度(更小或更大)的 iframe
- 动态调整动态更改内容高度的iFrame高度(内部说明)
- 使用javascript调整动态生成的字符串的大小
- 调整动态输入
- 调整动态伸缩项目的大小
- 如何拖放和调整动态创建的表的大小