Решение в первую очередь: Используйте селекторы, которые не создают совпадений там, где набор элементов перекрывается.
//selects only 1st level links
Cufon.replace('ul:has(ul) > li a', { hover: true, fontWeight: 200});
//selects only 2nd level links
Cufon.replace('ul:not(:has(ul)) a', { hover: true, fontWeight: 700});
Объяснение, почему ваши селекторы + Cufon создают проблемы
Кажется, проблема связана с вами, селекторы.
ul li a --> selects all 8 occurrences of <a>
ul li ul a --> selects only the 3 second-level occurrences of <a>
Это означает, что вы на самом деле дважды указали fontWeight
для тегов <a>
второго уровня. К сожалению, Cufon, похоже, не применяет только выражение, которое имеет наибольшую CSS-специфичность , поэтому поведение будет зависеть от того, как Cufon хранит несколько совпадений, подобных этому.
После нескольких тестов кажется, что Cufon применяет стили в обратном порядке, в котором вы вызываете операторы replace()
. Например,
Если вы делаете
Cufon.replace('ul li a',{hover: true, fontWeight: 200});
Cufon.replace('ul li ul a',{hover: true, fontWeight: 700});
Все ссылки будут выделены синим цветом, а ссылки 2-го уровня имеют fontWeight 700 до наведения, после чего они установят fontWeight 200.
Если вы переключите заказ
Cufon.replace('ul li ul a',{hover: true, fontWeight: 700});
Cufon.replace('ul li a',{hover: true, fontWeight: 200});
Изначально все ссылки будут иметь fontWeight 200, ссылки 2-го уровня получат 700 при наведении.
Вы замечаете, что поведение меняется в зависимости от порядка ваших звонков.
Неуверенность
Я не знаю Куфон, и я действительно не понимаю, что вы пытаетесь сделать. Особенно я не уверен, хотите ли вы использовать параметры, переданные в Cufon, как вы, или же вы действительно хотите просто установить fontWeight при наведении.
Есть разница между
Cufon.replace('ul li a', { hover: true, fontWeight: 200 } );
и
Cufon.replace('ul li a', {
hover: { fontWeight: 200 }
});
Первый устанавливает fontWeight
на 200, а если элемент наведен, также устанавливает fontWeight на 200, что было бы заметно только в том случае, если fontWeight
за это время изменилось.
Последний изменяет стиль элемента только на fontWeight
200 во время наведения и снимает вес, когда элемент больше не наведен.
Я не уверен, какой вы собираетесь использовать.