2015-03-29 2 views
0

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

Посмотрите на JSFiddle: here
Вот HTML:CSS только для половины моего списка

<div class="fluid menu" align="right"> 
     <ul> 
      <li> 
       <a href="index.php">Home</a> 
      </li> 
      <li> 
       <a href="sections.php">Sections</a> 
       <ul> 
        <li> 
         <a href="Beavers.php">Beavers</a> 
        </li> 
        <li> 
         <a href="cubs.php">Cubs</a> 
        </li> 
        <li> 
         <a href="scouts.php">Scouts</a>       
        </li> 
       </ul> 
      </li> 
      <li> 
       USA Trip 
      </li> 
      <li> 
       Forum 
      </li> 
     </ul> 
    </div> 

А вот CSS:

.menu { 
    text-align: center; 
    margin: 2em; 
} 
ul { 
    text-align: center; 
    display: inline; 
    margin: 25px 0 27px 0; 
    padding: 0; 
    list-style: none; 
    -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); 
    -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); 
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.15); 
} 
ul li { 
    font-family: 'Comfortaa', cursive; 
    color: #84a40b; 
    display: inline-block; 
    margin-right: -4px; 
    position: relative; 
    padding: 15px 20px; 
    background: #fff; 
    cursor: pointer; 
    -webkit-transition: all 0.4s; 
    -moz-transition: all 0.4s; 
    -ms-transition: all 0.4s; 
    -o-transition: all 0.4s; 
    transition: all 0.4s; 
} 
ul li:hover { 
    background: #4d2177; 
    color: #ffffff; 
} 
ul li ul { 
    padding: 0; 
    position: absolute; 
    top: 27px; 
    left: 0; 
    width: 150px; 
    -webkit-box-shadow: none; 
    -moz-box-shadow: none; 
    box-shadow: none; 
    display: none; 
    opacity: 0; 
    visibility: hidden; 
    -webkit-transiton: opacity 0.4s; 
    -moz-transition: opacity 0.4s; 
    -ms-transition: opacity 0.4s; 
    -o-transition: opacity 0.4s; 
    -transition: opacity 0.4s; 
} 
ul li ul li { 
    background: #4d2177; 
    display: block; 
    color: #fff; 
    text-shadow: 0 -1px 0 #000; 
} 
ul li ul li:hover { 
    background: #672c9f; 
} 
ul li:hover ul { 
    display: block; 
    opacity: 1; 
    visibility: visible; 
} 
ul li ul li ul{ 
    padding: 0; 
    position: absolute; 
    top: 27px; 
    left: 0; 
    width: 150px; 
    -webkit-box-shadow: none; 
    -moz-box-shadow: none; 
    box-shadow: none; 
    display: none; 
    opacity: 0; 
    visibility: hidden; 
    -webkit-transiton: opacity 0.4s; 
    -moz-transition: opacity 0.4s; 
    -ms-transition: opacity 0.4s; 
    -o-transition: opacity 0.4s; 
    -transition: opacity 0.4s; 
} 
ul li ul li ul li{ 
    background: #4d2177; 
    display: block; 
    color: #fff; 
    text-shadow: 0 -1px 0 #000; 
} 
ul li ul li ul li:hover { 
    background: #672c9f; 
} 
ul li ul li:hover ul { 
    display: block; 
    opacity: 1; 
    visibility: visible; 
} 
+0

Является ли это намеренно, чтобы написать свои селекторы как 'уль литий уль li' вместо' уль> li> ul> li' или '.menu> ul> li> ul> li'? – Xufox

+0

Нет, извините. Я изменил это, но ошибка остается. –

ответ

1

Простой, потому что ваши первые два элемента являются ссылками, последние два - нет.

Я думаю, что они должны быть всеми ссылками.

А затем добавьте цвет к ссылкам.

.menu ul li a { 
    color: #84a40b; 
} 

https://jsfiddle.net/q4p1s8yL/3/

+0

Это странно, он отлично работает в jsfiddle, но на моем сайте это не так. [link] (http://test.roshan-b.co.uk/scouts2/header.php) –

+0

Я попробовал добавить «.menu» перед этим, но теперь он применяет его даже при зависании –

+1

@RoshanBhumbra он отлично выглядит на вашем сайт, это правильно, что также относится к стилю наведения, добавьте цвет для: hover, если вам нужен другой. – Stickers

0

CSS-применяет только штрафом. Разница между первым и последним элементами заключается в том, что у вас есть ссылки в первых элементах.

Ссылки уже имеют свой стиль, поэтому вам также нужно будет установить ссылки в списке.

+0

С риском звучать как идиот, я применил «> а» до конца всех стилей, и это сделало его хуже, на кого я хотел применить его? –

+0

@ Roshan. Я не знаю о другой проблеме с вашим кодом, но если вы добавите эту строку в свой CSS, она отлично работает для меня: 'ul li a {text-decoration: none; цвет: # 84A40B} '. https://jsfiddle.net/q4p1s8yL/1/ –

+0

@RoshanBhumbra: Простое перемещение всего стиля в ссылки не даст желаемого результата.Добавьте правила для ссылок и переместите только стили, которые вам нужно переопределить, например цвет текста. – Guffa

0

Вам нужно стилизовать <a> не <li>.

Это стиль все якоря, где-то в списке <ul>

ul a { 
    color: YOUR_COLOR; 
} 

Проблема в том, что вы определяете цвет элемента списка <li>. Вы ожидаете, что все в нем будет иметь этот цвет. Однако характерный синий якорь <a> цвет более конкретный. Итак, ваш <a> внутри <li> не получает цвет <li>, так как он имеет собственный синий цвет.

0

это потому, что два последних элементов списка не имеет якоря, просто добавьте

ul li a{ 
     color: #84a40b; 
     text-decoration:none; 
    } 
ul li a:hover{ 
    color: #ffffff; 
} 

demo here

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