2014-02-06 3 views
0

Сценарий: один главный контейнер, дочерний img с непрозрачностью 1 и дочерний диапазон с непрозрачностью 0, оба абсолютные расположены относительно относительного позиционного родительского div. Уменьшите непрозрачность img и одновременно увеличьте непрозрачность пролета. Когда непрозрачность превышает некоторый порог, например. 0.01 и 0.99 hide/show (display: none; display: inline-block) соответственно img/span. А затем обратный процесс, чтобы показать img и скрыть пробел. Что было бы лучшим решением (возможно, с использованием CSS3) для достижения этого?Переключить divs с чистым JS

<div id="post-cont"> 
    <img id="post-img-1" class="post-img" src="small.jpg"/> 
    <span id="post-txt-1" class="post-txt">Some text</span> 
</div> 

Если бы некоторые workaround with JS, но это лага, так что я хотел бы решить это с помощью CSS3 и как минимальный JS, как это возможно.

+0

Какое событие? Наведите указатель мыши, нажмите и т.д. –

+0

CSS hover, JS onmouseover – sitilge

+0

Вы пробовали это? http://stackoverflow.com/questions/16546272/css-transition-fade-in-only-for-element –

ответ

3

CSS3 только

http://jsfiddle.net/SPmj5/7/

<div id="post-cont"> 
    <img id="post-img-1" class="post-img" src="http://placehold.it/250x250"/> 
    <span id="post-txt-1" class="post-txt">Some text</span> 
</div> 


#post-cont { 
    position: relative; 
} 

#post-cont img, 
#post-cont span { 
    display:block; 
-o-transition: opacity .7s ease; 
    -ms-transition: opacity .7s ease; 
    -moz-transition: opacity .7s ease; 
    -webkit-transition: opacity .7s ease; 
    transition: opacity .7s ease;  
} 

#post-cont img { 
    position: absolute; 
    top: 0; 
    left: 0; 
    opacity: 1; 
} 

#post-cont span { 
    position: absolute; 
    top: 100px; 
    left: 80px; 
    opacity: 0; 
} 

#post-cont:hover img { 
    opacity: 0; 
} 

#post-cont:hover span { 
    opacity: 1; 
} 

Имейте в виду переход не поддерживается в IE8/9 http://caniuse.com/#search=transition

+0

Идея состоит в том, чтобы установить отображение: none; до img после непрозрачности достаточно низко, поэтому диапазон может занимать место img. Есть идеи? – sitilge

+0

Если они позиционируются абсолютно, ему не нужно будет занять свое место (?). Вы могли бы просто вырвать свойства перехода и начать пролет ближе к тому месту, где заканчивается другой. –

+0

Я обновлю ссылку на скрипку. –

-1

Звучит как какой-то fadeToggle для меня! Я не думаю, что вы можете использовать чистый CSS3 для этого ..

https://api.jquery.com/fadeToggle/

+0

По крайней мере, не с каким-либо эффектом затухания ... – httpgio

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