javascript/css:在滚动效果上使图像向上和向左展开
我想让用户扩大缩略图,看到鼠标上方的大型个人资料图片。但是,我目前使用的滚动效果将表行扩展到扩展图像的大小,而不是在周围的文本上显示图像。有人能提出一种方法来扩展滚动时的图像而不移动文本,换句话说,在其他html上显示更大的图像,而不是将其推到一边吗。我试过z-index,但似乎不起作用 下面是一个演示问题的JSFIDLE: 下面是与js fiddle中相同的代码:javascript/css:在滚动效果上使图像向上和向左展开,javascript,css,image,rollover,Javascript,Css,Image,Rollover,我想让用户扩大缩略图,看到鼠标上方的大型个人资料图片。但是,我目前使用的滚动效果将表行扩展到扩展图像的大小,而不是在周围的文本上显示图像。有人能提出一种方法来扩展滚动时的图像而不移动文本,换句话说,在其他html上显示更大的图像,而不是将其推到一边吗。我试过z-index,但似乎不起作用 下面是一个演示问题的JSFIDLE: 下面是与js fiddle中相同的代码: <script language="JavaScript"> <!-- hide from non Jav
<script language="JavaScript">
<!-- hide from non JavaScript Browsers
image = new Array()
image[0]= new Image(24,24)
image[0].src = "http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif"
image[1] = new Image(48,48)
image[1].src = "https://www.google.com/intl/en_ALL/images/logos/images_logo_lg.gif"
</script>
<tr><td colspan=2>
<p align="center">
<a href="contactdetail.php"
onmouseover="newPic()"
onmouseout="oldPic()">
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif"
name="pic"
class="rollover"
border=0>
</a>
</p></td></tr>
<tr><td>Here is text</td></tr>
css:
您可以添加如下内容:
#Text {
position:absolute;
top:48px;
}
文本位于ID为
text
的块元素中的位置 您可以添加如下内容:
#Text {
position:absolute;
top:48px;
}
文本位于ID为text
的块元素中的位置 从中窃取,您可以在不使用Javascript的情况下执行此操作
HTML:
更新:
// JavaScript
window.onload = function () { // when document has loaded, consider `window.addEventListener('load', /* code */, false);` in real world usage
var elm = document.querySelectorAll('img.rollover'), // get all <img>s with class "rollover"
i = elm.length, d;
while (--i >= 0) { // put each one and a clone into a <div> where it was
d = elm[i].parentNode.insertBefore(document.createElement('div'), elm[i]);
d.className = 'rollover';
elm[i].className = (' '+elm[i].className+' ') // set class'
.replace(/ rollover /g, ' ')
.slice(1, -1);
d.appendChild(elm[i]);
d.appendChild(elm[i].cloneNode()).className += ' rollover_big'; // I did clone here to save needing an extra variable
elm[i].className += ' rollover_small';
}
};
/* CSS */
div.rollover {position: relative; display: block;} /* relative to allow for abs. positioning of big image */
div.rollover img.rollover_small {width: 24px;}
div.rollover img.rollover_big { /* position over small image*/
width: 48px;
display: none;
position: absolute;
top: 0px;
}
div.rollover:hover img.rollover_small {visibility: hidden;} /* visibility to hold space*/
div.rollover:hover img.rollover_big {display: block;} /* show bigger node*/
<!-- HTML -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php"><img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover"/></a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
<!-- Resulting HTML after load event -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php">
<div class="rollover">
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_small"/>
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_big"/>
</div>
</a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
td.imgCell {
height: 40px; /* a value greater than image height + paddings */
text-align: center;
}
img.rollover {
display: inline-block;
position: relative;
padding: 4px;
width: 24px;
height: 24px;
background-color:#E8E8E8;
border: 0px none;
}
img.rollover:hover {
position: absolute;
width: 48px;
height: 48px;
margin-top: -24px;
margin-left: -24px;
z-index: 99;
}
我不知道,如果这是你的想法,但你可以定位更大的图像在任何你想要的地方
CSS:
如果要在悬停时隐藏较低的图像,可以尝试添加opacity:0
<img class="thumbnail" src="...">
尽管如此,我不知道这是否适用于所有浏览器。从中窃取,您可以在不使用Javascript的情况下完成
HTML:
更新:
// JavaScript
window.onload = function () { // when document has loaded, consider `window.addEventListener('load', /* code */, false);` in real world usage
var elm = document.querySelectorAll('img.rollover'), // get all <img>s with class "rollover"
i = elm.length, d;
while (--i >= 0) { // put each one and a clone into a <div> where it was
d = elm[i].parentNode.insertBefore(document.createElement('div'), elm[i]);
d.className = 'rollover';
elm[i].className = (' '+elm[i].className+' ') // set class'
.replace(/ rollover /g, ' ')
.slice(1, -1);
d.appendChild(elm[i]);
d.appendChild(elm[i].cloneNode()).className += ' rollover_big'; // I did clone here to save needing an extra variable
elm[i].className += ' rollover_small';
}
};
/* CSS */
div.rollover {position: relative; display: block;} /* relative to allow for abs. positioning of big image */
div.rollover img.rollover_small {width: 24px;}
div.rollover img.rollover_big { /* position over small image*/
width: 48px;
display: none;
position: absolute;
top: 0px;
}
div.rollover:hover img.rollover_small {visibility: hidden;} /* visibility to hold space*/
div.rollover:hover img.rollover_big {display: block;} /* show bigger node*/
<!-- HTML -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php"><img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover"/></a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
<!-- Resulting HTML after load event -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php">
<div class="rollover">
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_small"/>
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_big"/>
</div>
</a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
td.imgCell {
height: 40px; /* a value greater than image height + paddings */
text-align: center;
}
img.rollover {
display: inline-block;
position: relative;
padding: 4px;
width: 24px;
height: 24px;
background-color:#E8E8E8;
border: 0px none;
}
img.rollover:hover {
position: absolute;
width: 48px;
height: 48px;
margin-top: -24px;
margin-left: -24px;
z-index: 99;
}
我不知道,如果这是你的想法,但你可以定位更大的图像在任何你想要的地方
CSS:
如果要在悬停时隐藏较低的图像,可以尝试添加opacity:0
<img class="thumbnail" src="...">
尽管如此,我不知道这是否适用于所有浏览器。一种方法是克隆所有需要的
节点,将它们放在
中,然后使用CSS为您完成其余工作“我的代码”可以在文档中任意位置为任意数量的
工作,并且不需要固定大小的父节点。如果由于JavaScript对HTML结构的更改而导致其他样式与预期不符,则可能需要修改CSS或我选择的类名(请参见下面的“生成的HTML”)
//JavaScript
WoDOW.OnLoad=函数(){///当文档已加载时,考虑“窗口.AdvestTristNead(‘Load’,/*代码*/false)”;“在现实世界中使用”
var elm=document.querySelectorAll('img.rollover'),//使用类“rollover”获取所有s
i=elm.长度,d;
而(--i>=0){//将每个克隆和一个克隆放在它所在的位置
d=elm[i].parentNode.insertBefore(document.createElement('div'),elm[i]);
d、 className=‘滚动’;
elm[i].className=(''+elm[i].className+'')//设置类
.替换(/rollover/g'')
.切片(1,-1);
d、 (elm[i]);
d、 appendChild(elm[i].cloneNode()).className+='rollover_big';//我在这里克隆是为了保存一个额外的变量
elm[i].className+='rollover_small';
}
};
/*CSS*/
div.rollover{position:relative;display:block;}/*relative以允许abs。大形象定位*/
div.rollover img.rollover_small{宽度:24px;}
div.rollover img.rollover_big{/*小图像上的位置*/
宽度:48px;
显示:无;
位置:绝对位置;
顶部:0px;
}
div.rollover:hover img.rollover_small{可见性:隐藏;}/*保持空间的可见性*/
div.rollover:hover img.rollover_big{display:block;}/*显示更大的节点*/
这里是文本
这里是文本
一种方法是克隆所有所需的
节点,将它们放入
中,然后使用CSS为您完成其余工作“我的代码”可以在文档中任意位置为任意数量的
工作,并且不需要固定大小的父节点。如果由于JavaScript对HTML结构的更改而导致其他样式与预期不符,则可能需要修改CSS或我选择的类名(请参见下面的“生成的HTML”)
//JavaScript
WoDOW.OnLoad=函数(){///当文档已加载时,考虑“窗口.AdvestTristNead(‘Load’,/*代码*/false)”;“在现实世界中使用”
var elm=document.querySelectorAll('img.rollover'),//使用类“rollover”获取所有s
i=elm.长度,d;
而(--i>=0){//将每个克隆和一个克隆放在它所在的位置
d=elm[i].parentNode.insertBefore(document.createElement('div'),elm[i]);
d、 className=‘滚动’;
elm[i].className=(''+elm[i].className+'')//设置类
.替换(/rollover/g'')
.切片(1,-1);
d、 (elm[i]);
d、 appendChild(elm[i].cloneNode()).className+='rollover_big';//我在这里克隆是为了保存一个额外的变量
elm[i].className+='rollover_small';
}
};
/*CSS*/
div.rollover{position:relative;display:block;}/*relative以允许abs。大形象定位*/
div.rollover img.rollover_small{宽度:24px;}
div.rollover img.rollover_big{/*小图像上的位置*/
宽度:48px;
显示:无;
位置:绝对位置;
顶部:0px;
}
div.rollover:hover img.rollover_small{可见性:隐藏;}/*保持空间的可见性*/
div.rollover:hover img.rollover_big{display:block;}/*显示更大的节点*/
这里是文本
这里是文本
这不需要javascript。请参阅使用CSS执行此操作:
// JavaScript
window.onload = function () { // when document has loaded, consider `window.addEventListener('load', /* code */, false);` in real world usage
var elm = document.querySelectorAll('img.rollover'), // get all <img>s with class "rollover"
i = elm.length, d;
while (--i >= 0) { // put each one and a clone into a <div> where it was
d = elm[i].parentNode.insertBefore(document.createElement('div'), elm[i]);
d.className = 'rollover';
elm[i].className = (' '+elm[i].className+' ') // set class'
.replace(/ rollover /g, ' ')
.slice(1, -1);
d.appendChild(elm[i]);
d.appendChild(elm[i].cloneNode()).className += ' rollover_big'; // I did clone here to save needing an extra variable
elm[i].className += ' rollover_small';
}
};
/* CSS */
div.rollover {position: relative; display: block;} /* relative to allow for abs. positioning of big image */
div.rollover img.rollover_small {width: 24px;}
div.rollover img.rollover_big { /* position over small image*/
width: 48px;
display: none;
position: absolute;
top: 0px;
}
div.rollover:hover img.rollover_small {visibility: hidden;} /* visibility to hold space*/
div.rollover:hover img.rollover_big {display: block;} /* show bigger node*/
<!-- HTML -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php"><img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover"/></a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
<!-- Resulting HTML after load event -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php">
<div class="rollover">
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_small"/>
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_big"/>
</div>
</a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
td.imgCell {
height: 40px; /* a value greater than image height + paddings */
text-align: center;
}
img.rollover {
display: inline-block;
position: relative;
padding: 4px;
width: 24px;
height: 24px;
background-color:#E8E8E8;
border: 0px none;
}
img.rollover:hover {
position: absolute;
width: 48px;
height: 48px;
margin-top: -24px;
margin-left: -24px;
z-index: 99;
}
以下是修改后的HTML:
// JavaScript
window.onload = function () { // when document has loaded, consider `window.addEventListener('load', /* code */, false);` in real world usage
var elm = document.querySelectorAll('img.rollover'), // get all <img>s with class "rollover"
i = elm.length, d;
while (--i >= 0) { // put each one and a clone into a <div> where it was
d = elm[i].parentNode.insertBefore(document.createElement('div'), elm[i]);
d.className = 'rollover';
elm[i].className = (' '+elm[i].className+' ') // set class'
.replace(/ rollover /g, ' ')
.slice(1, -1);
d.appendChild(elm[i]);
d.appendChild(elm[i].cloneNode()).className += ' rollover_big'; // I did clone here to save needing an extra variable
elm[i].className += ' rollover_small';
}
};
/* CSS */
div.rollover {position: relative; display: block;} /* relative to allow for abs. positioning of big image */
div.rollover img.rollover_small {width: 24px;}
div.rollover img.rollover_big { /* position over small image*/
width: 48px;
display: none;
position: absolute;
top: 0px;
}
div.rollover:hover img.rollover_small {visibility: hidden;} /* visibility to hold space*/
div.rollover:hover img.rollover_big {display: block;} /* show bigger node*/
<!-- HTML -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php"><img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover"/></a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
<!-- Resulting HTML after load event -->
<table>
<tr>
<td colspan=2><a href="contactdetail.php">
<div class="rollover">
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_small"/>
<img src="http://womeninbiznetwork.com/wp-content/uploads/2011/07/logo-google.thumbnail.gif" class="rollover_big"/>
</div>
</a></td>
</tr>
<tr>
<td>Here is text</td>
</tr>
<!-- etc. -->
</table>
td.imgCell {
height: 40px; /* a value greater than image height + paddings */
text-align: center;
}
img.rollover {
display: inline-block;
position: relative;
padding: 4px;
width: 24px;
height: 24px;
background-color:#E8E8E8;
border: 0px none;
}
img.rollover:hover {
position: absolute;
width: 48px;
height: 48px;
margin-top: -24px;
margin-left: -24px;
z-index: 99;
}
这里是文本
请注意,还声明并设置了容器td的类:
要点:
- 容器
应具有固定的hei