Как сделать так, чтобы img и текстовая ссылка ссылались на одно и то же место, и обе они становились активными при наведении курсора независимо от того, над чем я нахожусь?

Я хотел бы, чтобы при наведении курсора на изображение вызывалось свойство hover для текстовой ссылки, которая находится рядом с ним.

У меня есть предварительный просмотр видео и имя видео, написанное рядом с ним в виде текстовой строки. Я хотел бы сделать так, чтобы я мог наводить курсор на изображение и заставлять текст по-прежнему менять цвет, как эффект наведения, без необходимости делать изображение и текст одним изображением по очевидным причинам поиска и удобства использования; сохранение текста как текста и т. д.

ОБНОВЛЕНИЕ: я также хочу убедиться, что текстовая ссылка, которая сейчас находится в «промежутке», может не просто перемещаться с помощью «margin-left», но может быть поднята вверх. По умолчанию в коде у меня он просто опускается до уровня нижней части изображения 60x60px. Я хочу, чтобы он был выше, чтобы он выглядел красиво, но «край внизу» не помогает. я хочу, чтобы это было в «центральной высоте» изображения 60x60 ... а не внизу, где оно идет по умолчанию.

Любые идеи? Спасибо!

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;} 

person Jonn    schedule 10.09.2009    source источник
comment
вау, я никогда не знал, что у тебя может быть такая длинная тема/название на ТАК!   -  person JasonDavis    schedule 11.09.2009


Ответы (4)


Вы можете сделать это с помощью 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"); }
);

В этом примере демонстрируется решение, которое просто добавляет класс в родительский контейнер, который, в свою очередь, изменяет представление заголовка. Это событие управляется наведением курсора на изображение внутри контейнера.

Обновлять:

Позиционирование вашего текста не так сложно. Быстрый и простой способ — расположить родительский контейнер с относительным значением, а текст — с абсолютным:

<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; }

Это быстрый пример. Вы можете изменить значения в соответствии с вашими потребностями.

person Sampson    schedule 10.09.2009
comment
Как я сказал Фениксу выше, ваш ответ похож на их, но ближе, но все же не идеален. это делает то, что я хочу (т.е. текстовая ссылка меняет цвет при наведении на изображение, а также только текстовая ссылка), но изображение представляет собой изображение размером 60x60 пикселей, а текст, независимо от того, что заканчивается прямо в правом нижнем углу картина. Я хочу сделать текст примерно на 40 пикселей правее изображения и наполовину ниже 60x60 пикселей, чтобы он хорошо выстраивался. Идея диапазона, представленная вами, работает, поэтому я могу заставить текстовую ссылку перемещаться с отступом влево, но она все еще находится в нижней строке рядом с изображением. - person Jonn; 11.09.2009
comment
продолжение: Полезно, чтобы он перемещался с левым краем, но мне все еще нужно, чтобы он двигался вверх, чтобы смотреть вправо. Нижний край ничего не делает. Любые идеи? Я не уверен, как использовать jquery на самом деле, так как я действительно новичок, поэтому я предпочитаю CSS, если могу. мой html: ‹div id=example› ‹a href=#›‹img src=image/source_60x60px.jpg›‹span class=video_text›Текст изображения‹/span›‹/a› ‹/div› мой css: div # пример {поплавок: влево; ширина: 358 пикселей; высота: 60 ​​пикселей; верхняя граница: 20px; } div#example a { color:#B9B9B9; width:100%;} div#example a:hover {color:#67a;text-decoration:none;} span.videotext {margin-left:80px;} - person Jonn; 11.09.2009
comment
@John: я обновил свое решение, включив в него информацию о позиционировании ваших заголовков. - person Sampson; 11.09.2009
comment
Джонатан - ТЫ МУЖЧИНА! Это сработало отлично! Я никогда не имел четкого представления о различных типах позиционирования. Мне приходилось использовать их только в ограниченных обстоятельствах, и в моем ограниченном опыте я никогда не использовал абсолютное позиционирование. Я также никогда не понимал, что относительное позиционирование было основано на его описании, но теперь, когда я использовал absolute с его родительским элементом в качестве ключевого элемента, установленного в относительный... это имеет гораздо больше смысла! спасибо! - person Jonn; 12.09.2009

Что о

<style>
a 
{ 
    color: #000000; 
}
a:hover 
{ 
    color: #a9a9a9; 
}
</style>

<a href="#"><img src="imagepath" alt="Image Title" />&nbsp;Image Text</a>
person rahul    schedule 10.09.2009
comment
это делает то, что я хочу (т.е. текстовая ссылка меняет цвет при наведении на изображение, а также только текстовая ссылка), но изображение представляет собой изображение размером 60x60 пикселей, а текст, независимо от того, что заканчивается прямо в правом нижнем углу картина. Я хочу сделать текст примерно на 40 пикселей правее изображения и наполовину ниже 60x60 пикселей, чтобы он хорошо выстраивался. Идея промежутка, представленная Джонатаном Сэмпсоном ниже, несколько помогает... но все равно получается немного короткой. Я объясню там. Спасибо хоть! - person Jonn; 11.09.2009
comment
@John, попробуй использовать свойство line-height, чтобы отрегулировать вертикальное положение текста. Если вы используете высоту строки, равную высоте изображения, то она должна быть центрирована по вертикали. - person David says reinstate Monica; 11.09.2009

На основе ответа Джонатана, но для 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>
person awe    schedule 10.09.2009

Мои извинения. Я неправильно прочитал ваш вопрос. Вот еще один удар по нему:

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 ту же высоту, что и миниатюра. Это переместит текст в середину видео.

person Lark    schedule 11.09.2009
comment
нет, это не работает. Изображение не является частью ссылки в том виде, в котором вы его настроили. также: это ничего не помогло с проблемой текстовой ссылки; т.е. он застрял на уровне стопы изображения рядом с ним. Его по-прежнему можно перемещать только с помощью «margin-left» и нельзя поднять вверх. Спасибо хоть. - person Jonn; 11.09.2009
comment
Адаптируйте вышеприведенное к чему-то вроде .video img:hover, .video img:hover + a {/* styles */}. Я не уверен, как применить :hover к img, если пользователь :hovers поверх <a>. - person David says reinstate Monica; 11.09.2009