如何使img和文本链接都链接到同一个地方,并且两者都在悬停时变得活跃,而不管我悬停在哪一个?

时间:2009-09-10 10:59:59

标签: css image hover hyperlink

我希望能够将鼠标悬停在图像上,调用旁边的文本链接上的悬停属性。

我有一个视频的图像预览和旁边写的视频名称作为文本字符串。我想这样做,所以我可以将鼠标悬停在图片上,使文字仍然像悬停效果一样改变颜色,而不必将图像和文本全部放在一个图像上,这是出于明显的搜索和可用性原因;将文本保留为文本等。

更新:我还想确保现在在“span”中的文本链接不能仅使用“margin-left”移动,而是可以提升。默认情况下,代码我只是下降到60x60px图像底部的水平。我希望它更高,所以看起来不错,但“margin-bottom”对此没有帮助。我希望它在60x60 img的“中心高度”...不在默认情况下的底部。

任何想法?谢谢!

P.S。我对这里发布的java脚本和jquery想法持开放态度,但我是一个完整的新手,需要额外的解释。我更喜欢CSS。

我现在的代码是:

我的HTML是:

<div id="example">
  <a href="#">
    <img src="image/source_60x60px.jpg">
    <span class="video_text">Image Text</span>
  </a>
</div> 

我的css是:

div#example         { float:left; width:358px; height:60px; margin-top:20px; }   
div#example a       { color:#B9B9B9; width:100%;}  
div#example a:hover { color:#67a; text-decoration:none;}  
span.videotext      { margin-left:80px;} 

4 个答案:

答案 0 :(得分:3)

怎么样?
<style>
a 
{ 
    color: #000000; 
}
a:hover 
{ 
    color: #a9a9a9; 
}
</style>

<a href="#"><img src="imagepath" alt="Image Title" />&nbsp;Image Text</a>

答案 1 :(得分:3)

您可以使用CSS或使用Javascript执行此操作。如果不知道您的标记以及元素的布局方式,就无法确定哪个选项最佳。

CSS选项

a:hover span { color:red; }
<a href="1.html">
  <img src="1.jpg" />
  <span>Title: One</span>
</a>

在该示例中,我们在链接中包含文本和图像。然后我们在:hover事件中修改文本的颜色。

Javascript(jQuery)

div.hovered p { color:red; }

<div class="preview">
  <img src="1.jpg" />
  <p>Title: One</p>
</div>

$("div.preview img").hover(
  function () { $(this).parent().addClass("hovered"); },
  function () { $(this).parent().removeClass("hovered"); }
);

此示例展示了一个解决方案,该解决方案只是将一个类添加到父容器中,而父容器又修改了标题的表示形式。通过将图像悬停在容器中来控制此事件。

更新

定位文字并不困难。快速简便的方法是使用relative定位父容器,使用absolute:

定位文本
<div class="container">
  <a href="#">
    <img src="1.jpg" />
    <span class="title">Hello World</span>
  </a>
</div>

div.container            { position:relative; width:150px; }
div.container span.title { position:absolute; top:0; left:50px; width:100px; }

这是一个简单的例子。您可以根据需要修改值。

答案 2 :(得分:0)

基于Jonathan的回答,但是对于javascript,如果你不使用jQuery:

<div onmousemove="hover('text1',true)" onmouseout="hover('text1',false)" >
  <img src="1.jpg" />
  <p id="text1">Title: One</p>
</div>

<script type="text/javascript">
function hover(elemID, on){
  element = document.getElementById(elemID);  
  if(on){
    element.style.color='red';
  }
  else
  {
    element.style.color='black';
  }
}
</script>

答案 3 :(得分:0)

道歉。我误读了你的问题。这是另一个刺:

<强> HTML

<div class="video">
    <a href="" title="title">
        <img alt="title" src="path/to/image" />
        Video Title
    </a>
</div>

<强> CSS

    .video {
        line-height: 75px;
        margin: 10px;
        padding: 10px;
        width: 200px;   
    }
    .video img {
        float: left;
        margin-right: 15px; 
    }
    .video a:hover {
        color: #hexcol; 
    }
    .video:after {
        clear: both;
        content: ".";
        display: block;
        height: 0;
        visibility: hidden; 
    }

显然,这里有一些你不需要但我用它们在浏览器中测试的样式。如果希望文本与视频缩略图垂直对齐,则需要将line-height属性设置为与缩略图图像相同的高度。这会将文本推到视频的中间位置。