2015-03-19 4 views
0

У меня есть верхняя навигационная система, которая полупрозрачна, когда она не витала.Непрозрачный дочерний элемент полупрозрачного родительского элемента?

nav.top-bar { 
    background: none; 
    opacity: 0.6; 
    transition: opacity 0.4s; 
} 

nav.top-bar:hover{ 
    opacity: 1.0; 
} 

Эта навигация содержит поле поиска. Он выполняет поиск в реальном времени с помощью AJAX и отображает результаты поиска под полем поиска.

Однако он также является дочерним элементом верхней навигации, который становится полупрозрачным, когда он не витает. Поэтому результаты поиска также полупрозрачны.

enter image description here enter image description here

Как я могу предотвратить превращение его полупрозрачным?

EDIT: Применение прозрачности к фону и текстовому цвету верхней навигации не будет работать, поскольку оно также содержит изображения.

EDIT2: Вы можете проверить эту проблему на моей домашней странице. Поэтому перейдите к http://midifight.club/blog, положите что-то вроде «ali» в поиске. Результаты будут опубликованы. Теперь перетащите мышью в другое место и перетащите ее снова в результаты поиска. Ничего не случится.

+0

Вы не можете, вот как это работает, когда вы устанавливаете непрозрачность элементов, это влияет и на все элементы внутри этого элемента. Обходным решением было бы установить фокус на RGBA, но для этого потребуется фактический фон – adeneo

+1

1. снимите непрозрачность. 2. добавьте 'background: rgba()' like rgba (255, 255, 255, 0.6) 3. добавьте 'color: rgba()' точно так же, как в фоновом режиме. Цвет может наследоваться, поэтому просто измените его на свое поле поиска. Хотя фон только для самого элемента – Persijn

+2

вместо того, чтобы сделать весь элемент прозрачным, просто выполните необходимые свойства css: 'background-color: rgba (255,0,0,0.5); border: 1px solid rgba (0,255,0,0.5); ' –

ответ

1

Простым решением, которое приходит на ум, является добавление класса к навигации, которое предотвратит его прозрачность при поиске чего-либо.

CSS

.top-bar.focused { opacity: 1 !important; } 

JS

document.getElementById('searchBox').oninput = function(){ 
    if(this.value){ 
     document.getElementById('top-bar').classList.add('focused'); 
    }else{ 
     document.getElementById('top-bar').classList.remove('focused'); 
    } 
} 

Очевидно, что это не будет работать сразу, я просто дать вам идею.

EDIT

3d вид Firefox»может быть очень полезным в разы, как этот

enter image description here

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

+0

это очень умно. Поскольку я управляю всем, что связано с появлением и исчезновением результатов поиска, я могу сделать эту работу. Я еще не отмечу это, потому что я очень хочу знать, почему Z-порядок так испуган. – Hedge

+0

@Hedge Я добавил некоторую информацию о «z-order» –

+0

Является ли поведение непрозрачности действительно ошибкой или я использовал его неправильно? Теперь, если бы у меня был просто бутерброд с тунцом, я был бы на 100% уверен, что это тот ответ, который я искал: D просто шутил, спасибо тонну! – Hedge

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