2016-08-03 7 views
1

Итак, у меня есть список, созданный таким образом, чтобы при наведении курсора на разные элементы он изменил изображение справа от элементов. Я хочу, чтобы текст шел вместе с изображением, поэтому мне хотелось бы, чтобы в div ниже. Есть ли способ с css, чтобы сделать это, когда я навещу над элементом в списке, он изменит текст в div? Обычно я пытаюсь понять эти вещи самостоятельно, но я искал какое-то время и не могу найти решение.Измените текст в div при наведении курсора на элемент списка

HTML:

<div class="relative"> 
<ul> 
    <li> 
     <a href="#">Arms</a> 
     <img src="img/arms.jpg" alt=""> 

      <div class="absolute">TEXT TEST 1</div> 

    </li> 
    <li> 
     <a href="#">Back</a> 
     <img src="img/back.jpg" alt=""> 
     <div class="absolute">TEXT TEST 2</div> 
    </li> 
    <li> 
     <a href="#">Head</a> 
     <img src="img/head.jpg" alt=""> 
    </li> 
    <li> 
     <a href="#">Feet</a> 
     <img src="img/feet.jpg" alt=""> 
    </li> 
    <li> 
     <a href="#">Legs</a> 
     <img src="img/legs.jpg" alt=""> 
    </li> 
    <li> 
     <a href="#">Chair</a> 
     <img src="img/chair.jpg" alt=""> 
    </li> 
    <li> 
     <a href="#">Desk</a> 
     <img src="img/desk.jpg" alt=""> 
    </li> 
</ul> 
</div> 

и здесь относительное CSS:

ul { 
    background-image: url('../img/bg.jpg'); 
    background-repeat: no-repeat; 
    background-origin: border-box; 
    background-position:right top; 
    border-top: 1px solid #444; 
    border-bottom: 1px solid #444; 
    border-right: 1px solid #444; 
    display: inline-block; 
    height: 700px; 
    position: relative; 
    width: 800px; 
    list-style:none; 
    padding-left:0; 
} 
li { 
    font: bold 16px/100px sans-serif; 
    height: 100px; 
} 
a { 
    border-right: 1px solid #444; 
    border-top: 1px solid #444; 
    border-left: 1px solid #444; 
    color: black; 
    display: block; 
    text-align: center; 
    text-decoration: none; 
    width: 99px;  
} 
a:hover { 
    background: gray; 
    color: #fff; 
} 
div.relative { 
    position: relative; 
    width: 700; 
    height: 900; 
} 

div.absolute { 
    position: absolute; 
    top: 700px; 
    width: 800px; 
    height: 100px; 
    border: 1px solid #444; 
} 
h3{ 
    margin-left:200px; 
    margin-top:500px; 
} 
img { 
    display: none; 
    height: 700; 
    position: absolute; 
    right: 0; 
    top: 0; 
    width: 600px; 
    background-color:red; 
} 
a:hover + img, 
img:hover { 
    display: block; 
} 

ответ

0

Вот решение. Используйте событие li:hover, чтобы скрыть и показать corrsponding div.

ul { 
 
    background-image: url('../img/bg.jpg'); 
 
    background-repeat: no-repeat; 
 
    background-origin: border-box; 
 
    background-position: right top; 
 
    border-top: 1px solid #444; 
 
    border-bottom: 1px solid #444; 
 
    border-right: 1px solid #444; 
 
    display: inline-block; 
 
    height: 700px; 
 
    position: relative; 
 
    width: 800px; 
 
    list-style: none; 
 
    padding-left: 0; 
 
} 
 
li { 
 
    font: bold 16px/100px sans-serif; 
 
    height: 100px; 
 
} 
 
a { 
 
    border-right: 1px solid #444; 
 
    border-top: 1px solid #444; 
 
    border-left: 1px solid #444; 
 
    color: black; 
 
    display: block; 
 
    text-align: center; 
 
    text-decoration: none; 
 
    width: 99px; 
 
} 
 
a:hover { 
 
    background: gray; 
 
    color: #fff; 
 
} 
 
div.relative { 
 
    position: relative; 
 
    width: 700; 
 
    height: 900; 
 
} 
 
div.absolute { 
 
    position: absolute; 
 
    top: 700px; 
 
    width: 800px; 
 
    height: 100px; 
 
    border: 1px solid #444; 
 
} 
 
h3 { 
 
    margin-left: 200px; 
 
    margin-top: 500px; 
 
} 
 
img { 
 
    display: none; 
 
    height: 700; 
 
    position: absolute; 
 
    right: 0; 
 
    top: 0; 
 
    width: 600px; 
 
    background-color: red; 
 
} 
 
a:hover + img, 
 
img:hover { 
 
    display: block; 
 
} 
 
.absolute { 
 
    display: none; 
 
} 
 
.relative li:hover div.absolute { 
 
    display: initial; 
 
}
<div class="relative"> 
 
    <ul> 
 
    <li> 
 
     <a href="#">Arms</a> 
 
     <img src="img/arms.jpg" alt=""> 
 

 
     <div class="absolute">TEXT TEST 1</div> 
 

 
    </li> 
 
    <li> 
 
     <a href="#">Back</a> 
 
     <img src="img/back.jpg" alt=""> 
 
     <div class="absolute">TEXT TEST 2</div> 
 
    </li> 
 
    <li> 
 
     <a href="#">Head</a> 
 
     <img src="img/head.jpg" alt=""> 
 
    </li> 
 
    <li> 
 
     <a href="#">Feet</a> 
 
     <img src="img/feet.jpg" alt=""> 
 
    </li> 
 
    <li> 
 
     <a href="#">Legs</a> 
 
     <img src="img/legs.jpg" alt=""> 
 
    </li> 
 
    <li> 
 
     <a href="#">Chair</a> 
 
     <img src="img/chair.jpg" alt=""> 
 
    </li> 
 
    <li> 
 
     <a href="#">Desk</a> 
 
     <img src="img/desk.jpg" alt=""> 
 
    </li> 
 
    </ul> 
 
</div>

0

Я использовал .wrapper DIV, но у вас есть больше возможностей, при использовании JavaScript.

ul { 
 
    background-image: url('../img/bg.jpg'); 
 
    background-repeat: no-repeat; 
 
    background-origin: border-box; 
 
    background-position:right top; 
 
    border-top: 1px solid #444; 
 
    border-bottom: 1px solid #444; 
 
    border-right: 1px solid #444; 
 
    display: inline-block; 
 
    height: 700px; 
 
    position: relative; 
 
    width: 800px; 
 
    list-style:none; 
 
    padding-left:0; 
 
} 
 
li { 
 
    font: bold 16px/100px sans-serif; 
 
    height: 100px; 
 
} 
 
a { 
 
    border-right: 1px solid #444; 
 
    border-top: 1px solid #444; 
 
    border-left: 1px solid #444; 
 
    color: black; 
 
    display: block; 
 
    text-align: center; 
 
    text-decoration: none; 
 
    width: 99px;  
 
} 
 
a:hover { 
 
    background: gray; 
 
    color: #fff; 
 
} 
 
div.relative { 
 
    position: relative; 
 
    width: 700; 
 
    height: 900; 
 
} 
 

 
div.absolute { 
 
    position: absolute; 
 
    top: 700px; 
 
    width: 800px; 
 
    height: 100px; 
 
    border: 1px solid #444; 
 
} 
 
h3{ 
 
    margin-left:200px; 
 
    margin-top:500px; 
 
} 
 
img { 
 
    height: 700; 
 
    position: absolute; 
 
    right: 0; 
 
    top: 0; 
 
    left: 101px; 
 
    background-color:red; 
 
    width: 600px; 
 
} 
 
.wrapper { 
 
    display: none; 
 
} 
 
a:hover + .wrapper { 
 
    display: block; 
 
}
<div class="relative"> 
 
    <ul> 
 
    <li> 
 
     <a href="#">Arms</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/309/?random" alt=""> 
 
     <div class="absolute">TEXT TEST 1</div> 
 
     </div> 
 
    </li> 
 
    <li> 
 
     <a href="#">Back</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/308/?random" alt=""> 
 
     <div class="absolute">TEXT TEST 2</div> 
 
     </div> 
 
    </li> 
 
    <li> 
 
     <a href="#">Head</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/306/?random" alt=""> 
 

 
     </div></li> 
 
    <li> 
 
     <a href="#">Feet</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/305/?random" alt=""> 
 

 
     </div></li> 
 
    <li> 
 
     <a href="#">Legs</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/304/?random" alt=""> 
 

 
     </div></li> 
 
    <li> 
 
     <a href="#">Chair</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/301/?random" alt=""> 
 
     </div> 
 
     </li> 
 
    <li> 
 
     <a href="#">Desk</a> 
 
     <div class="wrapper"> 
 
     <img src="https://unsplash.it/1200/302/?random" alt=""> 
 

 
     </div></li> 
 
    </ul> 
 
</div>

1

Вы можете просто добавить стиль, чтобы показать и скрыть текст DIV, как вы уже делаете для IMG:

a + img + div 
{ 
    display: none; 
} 
a:hover + img + div 
{ 
    display: block; 
} 
+0

спасибо, что отлично работает! –

0

Я решил его яваскрипт и JQuery. Но я не уверен, решает ли он вашу проблему.

Просто добавьте eventlistener ко всем li, который изменяет текст соответствующего div.

$("li").mouseover(function(){ 
     $("#TEXT1").text($(this).children("a").text()); 
    }) 

Вы можете дать тег все ваши li если у вас есть какие-то Вы не хотите, чтобы действовать таким образом.