javascript/css:在滚动效果上使图像向上和向左展开

javascript/css:在滚动效果上使图像向上和向左展开,javascript,css,image,rollover,Javascript,Css,Image,Rollover,我想让用户扩大缩略图,看到鼠标上方的大型个人资料图片。但是,我目前使用的滚动效果将表行扩展到扩展图像的大小,而不是在周围的文本上显示图像。有人能提出一种方法来扩展滚动时的图像而不移动文本,换句话说,在其他html上显示更大的图像,而不是将其推到一边吗。我试过z-index,但似乎不起作用 下面是一个演示问题的JSFIDLE: 下面是与js fiddle中相同的代码: <script language="JavaScript"> <!-- hide from non Jav

我想让用户扩大缩略图,看到鼠标上方的大型个人资料图片。但是,我目前使用的滚动效果将表行扩展到扩展图像的大小,而不是在周围的文本上显示图像。有人能提出一种方法来扩展滚动时的图像而不移动文本,换句话说,在其他html上显示更大的图像,而不是将其推到一边吗。我试过z-index,但似乎不起作用

下面是一个演示问题的JSFIDLE:

下面是与js fiddle中相同的代码:

<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