Нужна помощь с CSS3

#css

#css

Вопрос:

Хорошо, вот html и css3

 <div id="sitename">
    <div class="logo">
    <a class="home" href="#"><img src="logo.png" /></a>
    </div>
    <span class="someclass"><a class="home" href="#">Home</a></span>
    <span class="recharger">Some text</span>
    <span class="reload">Some other text</span>
</div>

.reload {
    position: absolute;
    top: 70px;
    left: 181px;
    width: 140px;
    -webkit-transition: opacity;
    -webkit-transition-duration: 400ms;
    -webkit-transition-timing-function: ease-out;
    -moz-transition-property: opacity;
    -moz-transition-duration: 400ms;
    -moz-transition-timing-function: ease-out;
    -o-transition-property: opacity;
    -o-transition-duration: 400ms;
    -o-timing-function: ease-out;
    transition: opacity;
    transition-duration: 400ms;
    transition-timing-function: ease-out;
    opacity: 0;
    filter:alpha(opacity=0);
}
??? {
    opacity: 1 !important;
    filter:alpha(opacity=100) !important;
}
  

Я хочу, чтобы текст в .reload отображался при наведении курсора мыши на .home (в 2 местах). Что я должен заменить??? с помощью?

Спасибо

Комментарии:

1. Не могу придумать правильный способ сделать это с помощью CSS (может быть, но не могу придумать), но вы думали о javascript? Это очень просто сделать.

Ответ №1:

В CSS элементы должны быть вложенными, например:

 <a class="home" ...><span class="reload">...</span></a>
  

Тогда вы можете использовать какой-нибудь CSS, подобный этому:

 a.home:hover .reload { opacity: 1 !important; ... }
  

В противном случае вам придется использовать JavaScript, чтобы разобраться с этим. Вы можете легко сделать это в jQuery:

 $('a.home').hover(function () {
  $('.reload').css('opacity',1);
  $('.reload').css('filter','alpha(opacity=100)');
});
  

Комментарии:

1. Несколько незначительных замечаний: .css() может обрабатывать несколько изменений свойств $('.reload').css({'opacity':1,'filter':'alpha(opacity=100)'); , и они не обязательно должны быть вложены просто наравне друг с другом 😉

Ответ №2:

Наиболее близким к тому, что вы хотите, является общий комбинатор родственных элементов ~ , но элементы ( .home и .reload ) должны находиться на одном уровне гнезда

итак, если ваш html был

 <div id="sitename">
    <a class="logo home" href="#"><img src="logo.png" /></a>
    <a class="someclass home" href="#">Home</a>
    <span class="recharger">Some text</span>
    <span class="reload">Some other text</span>
</div>
  

подходящий css был бы

 .home:hover ~ .reload{
    opacity: 1 !important;
    filter:alpha(opacity=100) !important;
}
  

цитирую общий одноуровневый селектор ссылки на MDC

~ Комбинатор разделяет два селектора и сопоставляет второй элемент, только если ему предшествует первый, и оба имеют общего родителя.

Комментарии:

1. @anothershrubery, я знаю .. просто предлагаю альтернативные маршруты, если CSS — единственный вариант..

2. Ха-ха, да, я знаю, я просто пошутил!