2015-09-17 3 views
1

У меня есть это меню, и мне интересно узнать, есть ли возможность редактировать код CSS, чтобы в итоге получить текст меню в 2 цветах (начальный и по мыши) на прозрачном фоне, применяя текст css transition от одного цвета к другому.css menu hover text color

body { 
 
    font: normal 1.0em Arial, sans-serif; 
 
    background: #A8CBFF; 
 
} 
 

 
nav { 
 
    font-size: 3.0em; 
 
    line-height: 1.0em; 
 
    color: white; 
 
    width:6em; 
 
    height: 9.0em; 
 
    position:absolute; 
 
    top:0; bottom:0; 
 
    margin:auto; 
 
    left: -4.5em; 
 
} 
 

 
nav ul { 
 
    list-style: none; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
nav ul li { 
 
    background-color: blue; 
 
    height: 1.0em; 
 
    padding: 0.25em; 
 
    position: relative; 
 
    border-top-right-radius: 0.75em; 
 
    border-bottom-right-radius: 0.75em; 
 
    -webkit-transition: -webkit-transform 500ms, background-color 500ms, color 500ms; 
 
    transition: transform 500ms, background-color 500ms, color 500ms; 
 
} 
 

 
nav ul li:nth-child(1) { background-color: #00aced;} 
 
nav ul li:nth-child(2) { background-color: #3b5998;} 
 
nav ul li:nth-child(3) { background-color: #517fa4;} 
 
nav ul li:nth-child(4) { background-color: #007bb6;} 
 
nav ul li:nth-child(5) { background-color: #cb2027;} 
 
nav ul li:nth-child(6) { background-color: #ea4c89;} 
 
nav ul li:hover { 
 
    background-color: #C1232D; 
 
    -webkit-transform: translateX(4.5em); 
 
    transform: translateX(4.5em); 
 
} 
 

 
nav ul li span { 
 
    display:block; 
 
    font-family: Arial; 
 
    position: absolute; 
 
    font-size:1em; 
 
    line-height: 1.25em; 
 
    height:1.0em; 
 
    top:0; bottom:0; 
 
    margin:auto; 
 
    right: 0.16666666666667em; 
 
    color: #F8F6FF; 
 
} 
 

 
a { 
 
    color: #FFF; 
 
    text-decoration: none; 
 
}
<nav> 
 
    <ul> 
 
    <li><a href="http://www.twitter.com">Category 1</a></li> 
 
    <li><a href="http://www.facebook.com">Category 2</a></li> 
 
    <li><a href="http://www.instagram.com">Category 3</a></li> 
 
    <li><a href="http://www.instagram.com">Category 4</a></li> 
 
    <li><a href="http://www.instagram.com">Category 5</a></li> 
 
    <li><a href="http://www.instagram.com">Category 6</a></li> 
 
    </ul> 
 
</nav>

Я понял это, установив background-color: в transparent;CodePen here; но на данный момент я не уверен, как иметь дело с цветами текста, потому что, если я изменю a {color: red;}, например, я получу статический цвет даже при наведении мыши на событие, а не на кроссфейдинг визуального эффекта от одного цвета текста к другому ,

+0

нравится [это] (http://codepen.io/TylerH/pen/jbqagV?editors=110)? – TylerH

+0

вид, но все еще использующий 'css transition' :) –

+0

Является ли это' a: hover {color: green;} ', что вы хотите? – divy3993

ответ

2

Ввод его в переходный период. Вам просто нужно добавить свойство перехода к селектору, который выбирает a, а не только li. В частности, nav ul li:hover a { color: black; }:

body { 
 
    font: normal 1.0em Arial, sans-serif; 
 
    background: #A8CBFF; 
 
} 
 
nav { 
 
    font-size: 3.0em; 
 
    line-height: 1.0em; 
 
    color: white; 
 
    width:6em; 
 
    height: 9.0em; 
 
    position:absolute; 
 
    top:0; 
 
    bottom:0; 
 
    margin:auto; 
 
    left: -4.5em; 
 
} 
 
nav ul { 
 
    list-style: none; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
nav ul li { 
 
    background-color: blue; 
 
    height: 1.0em; 
 
    padding: 0.25em; 
 
    position: relative; 
 
    border-top-right-radius: 0.75em; 
 
    border-bottom-right-radius: 0.75em; 
 
    -webkit-transition: -webkit-transform 500ms, background-color 500ms, color 500ms; 
 
    transition: transform 500ms, background-color 500ms, color 500ms; 
 
} 
 
nav ul li:nth-child(1) { 
 
    background-color: #00aced; 
 
} 
 
nav ul li:nth-child(2) { 
 
    background-color: #3b5998; 
 
} 
 
nav ul li:nth-child(3) { 
 
    background-color: #517fa4; 
 
} 
 
nav ul li:nth-child(4) { 
 
    background-color: #007bb6; 
 
} 
 
nav ul li:nth-child(5) { 
 
    background-color: #cb2027; 
 
} 
 
nav ul li:nth-child(6) { 
 
    background-color: #ea4c89; 
 
} 
 
nav ul li:hover { 
 
    background-color: #C1232D; 
 
    -webkit-transform: translateX(4.5em); 
 
    transform: translateX(4.5em); 
 
} 
 
nav ul li:hover a { 
 
    transition: color, 1500ms; 
 
    color: black; 
 
} 
 
nav ul li span { 
 
    display:block; 
 
    font-family: Arial; 
 
    position: absolute; 
 
    font-size:1em; 
 
    line-height: 1.25em; 
 
    height:1.0em; 
 
    top:0; 
 
    bottom:0; 
 
    margin:auto; 
 
    right: 0.16666666666667em; 
 
    color: #F8F6FF; 
 
} 
 
a { 
 
    color: #FFF; 
 
    text-decoration: none; 
 
}
<nav> 
 
    <ul> 
 
     <li><a href="http://www.twitter.com">Category 1</a></li> 
 
     <li><a href="http://www.facebook.com">Category 2</a></li> 
 
     <li><a href="http://www.instagram.com">Category 3</a></li> 
 
     <li><a href="http://www.instagram.com">Category 4</a></li> 
 
     <li><a href="http://www.instagram.com">Category 5</a></li> 
 
     <li><a href="http://www.instagram.com">Category 6</a></li> 
 
    </ul> 
 
</nav>

Вы можете изменить цвет текста, что вы хотите, конечно.

+0

Думаю, что все еще недоразумение извините. Если вы предпочтете, чтобы фон был прозрачным, цвета текста не являются «кроссфейдами» от значения к другому (вы можете увидеть эффект, просматривающий фон, поэтому я оставил его там, прежде чем сделать его прозрачным). Надеюсь, что это прояснит ... Мне интересно, чтобы текст _only_ на прозрачном фоне, но текст в 2 цвета _fading_ от начального цвета до второго предопределенного цвета. Я думаю, что это связано с разделом '-webkit-transition'. –

+0

@ typo_78 Я не уверен, что вы подразумеваете под «только текст на прозрачном фоне» или «текст в 2 цветах». Тем не менее, я обновил свой ответ, чтобы показать переход между белым и черным в течение 1,5 секунд. (Также обратите внимание, что для Chrome не нужны префиксы для 'перехода' или' transform') – TylerH

+0

Вот и все! Спасибо :) –