2016-10-20 3 views
1

Я нашел решение, которое я ищу на SoF, но проблема не устранена. Я, очевидно, ничего не делаю правильно. Возможно, еще одна пара глаз будет полезна.Показать DIV при наведении на другое DIV

В принципе, я хочу показать скрытый div, пока я навешиваю отдельный div. При наведении курсора на отдельный div он изменит цвет bg.

Спасибо за помощь.

Вот CodePen того, что у меня есть.

HTML

<div class="container-fluid"> 
    <div class="image"> 
    <div class="one"></div> 
    <div class="two"></div> 
    <div class="three"></div> 
    <div class="four"></div> 
    <div class="five"></div> 
    </div> 
    <div class="one-text"> 
    <p>Here is some text</p> 
    </div> 
    <div class="two-text"> 
    <p>Here is some text</p> 
    </div> 
    <div class="three-text"> 
    <p>Here is some text</p> 
    </div> 
    <div class="four-text"> 
    <p>Here is some text</p> 
    </div> 
    <div class="five-text"> 
    <p>Here is some text</p> 
    </div> 
</div> 

CSS

body { 
    background-color: #c5d5cb; 
    color: #fff; 
    font-family: Open Sans; 
    font-weight: 300; 
    margin: 0 auto; 
} 

.container-fluid { 
    background-color: #9fa8a3; 
    height: 600px; 
    padding: 30px; 
} 
.container-fluid .image { 
    background-color: #e3e0cf; 
    height: 100%; 
    width: 50%; 
    float: right; 
    padding: 30px; 
    display: flex; 
    justify-content: space-between; 
} 
.container-fluid .image .one { 
    background-color: #c5d5cb; 
    width: 100px; 
    height: 100px; 
    margin: 5px; 
} 
.container-fluid .image .one:hover { 
    background-color: #3b3a36; 
} 
.container-fluid .image .two { 
    background-color: #c5d5cb; 
    width: 100px; 
    height: 100px; 
    margin: 5px; 
} 
.container-fluid .image .two:hover { 
    background-color: #3b3a36; 
} 
.container-fluid .image .three { 
    background-color: #c5d5cb; 
    width: 100px; 
    height: 100px; 
    margin: 5px; 
} 
.container-fluid .image .three:hover { 
    background-color: #3b3a36; 
} 
.container-fluid .image .four { 
    background-color: #c5d5cb; 
    width: 100px; 
    height: 100px; 
    margin: 5px; 
} 
.container-fluid .image .four:hover { 
    background-color: #3b3a36; 
} 
.container-fluid .image .five { 
    background-color: #c5d5cb; 
    width: 100px; 
    height: 100px; 
    margin: 5px; 
} 
.container-fluid .image .five:hover { 
    background-color: #3b3a36; 
} 
.container-fluid .one-text { 
    width: 300px; 
    display: block; 
    float: right; 
    display: none; 
} 
.container-fluid .two-text { 
    width: 300px; 
    display: block; 
    float: right; 
    display: none; 
} 
.container-fluid .three-text { 
    width: 300px; 
    display: block; 
    float: right; 
    display: none; 
} 
.container-fluid .four-text { 
    width: 300px; 
    display: block; 
    float: right; 
    display: none; 
} 
.container-fluid .five-text { 
    width: 300px; 
    display: block; 
    float: right; 
    display: none; 
} 
.container-fluid .one:hover + .one-text { 
    display: block; 
} 
.container-fluid .two:hover + .two-text { 
    display: block; 
} 
.container-fluid .three:hover + .three-text { 
    display: block; 
} 
.container-fluid .four:hover + .four-text { 
    display: block; 
} 
.container-fluid .five:hover + .five-text { 
    display: block; 
} 
+1

Проблемы заключается в том, что, например, '' .one' и .one-Text' не двойники элементов, следовательно, селектор «+» не будет работать в этом контексте. Возможное решение будет включать переупорядочение HTML или использование JavaScript/jQuery. Пожалуйста, сообщите, какие варианты вы готовы рассмотреть. –

+0

Спасибо за ответ. Я понимаю что ты имеешь ввиду. Но, не могли бы вы сказать мне, почему, если я заменю .one: наведите указатель на .image: наведите указатель на строку 81, текст будет отображаться так, как я предполагал? Это из-за того, что .image и .one-text являются одновременно братьями и сестрами .container div? – dooge

+0

быстрый, который зависал div, должен быть нацелен на какой div? Для этого есть некоторые уникальные правила, если все остальное не удается, JS wil do, скажите мне, какое действие вы хотите совершить –

ответ

0

Ok Я сделал это с JS, просто потому, что это было бы слишком много хлопот с CSS, а также, я сомневаюсь, что это возможно в CSS. Я опубликую правила CSS позже.

Я сделал это в простой ванильной JS, он будет работать во всех современных браузерах.

Сначала я добавил небольшой переход ко всему, вместо отображения ни на пунктах я сотворил:

webkit-transition:.4s; 
transition:.4s; 
opacity:0; 

Затем я создал mouseIn и мыши Out функции, с 3-мя параметры.

function onEntry(whichDiv,whichText, color) { 
whichDiv.style.background = color; 
whichText.style.opacity = '1'; 
} 

Тогда мне пришлось добавить EventListener всем дивы:

one.addEventListener('mouseover', function(){ 
onEntry(one, txtOne, "#3b3a36"); 
} 

См, что третий параметр, вы можете изменить ваши желаемые цвета.

Вот ссылка на перо:

http://codepen.io/damianocel/pen/vXQqJE

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

  • непосредственно внутри контейнера:

container: hover> #element

  • Если куб находится рядом (после того, как контейнеры закрывающий тег) контейнер:

контейнер: парить + #element

  • Если куб находится где-то внутри контейнера:

container: hover #cube

Cheers

+0

Удивительный! Большое спасибо за то, что нашли время, чтобы сделать это! – dooge

+0

Приветствую вас, единственное, что я пытаюсь понять, это то, что если бы у вас было 100 разделов и абзацев, как бы я мог добавить Listeners для всех из них, я увижу, можно ли это сделать с помощью цикла. –

0

Попробуйте

#content:hover #hoverbar{ 
    visibility:visible; 
} 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – andreas

+0

Благодарим вас за информацию о вас –

Смежные вопросы