2017-02-09 4 views
0

Итак, я нашел это решение Using CSS for fade-in effect on page load И я использовал метод 2 с необработанным JavaScript. Вот мой пример кодаЗатухание при нагрузке не работает

JavaScript

var fadeOnLoad = function() { 
    document.getElementById("wrapper").className += "load"; 
}; 
fadeOnLoad(); 

CSS

#wrapper { 
    opacity: 0; 
    transition: opacity 2s ease-in; 
} 

.load { 
    opacity: 1; 
} 

Ссылка на сайт, где он не работает https://skidle.github.io/projects/weather

И этот текст зачеркнуто Инструменты Google Dev enter image description here

+1

'Непрозрачность: 1 важно,'? id имеет более высокий приоритет, чем класс – Banzay

ответ

4

попытки определить

opacity: 1 !important; 

селектора имеет более высокий приоритет, чем класс

Вот отрывок с ясной логикой процесса. Элемент невидим, пока тело не загрузится. Как только тело событие OnLoad уволят, элемент получает opacity: 1;

function fadeOnLoad() { 
 
    document.getElementById("wrapper").className = ""; 
 
};
#wrapper { 
 
    transition: opacity 2s ease-in; 
 
} 
 

 
.not_loaded { 
 
    opacity: 0; 
 
}
<body onload="fadeOnLoad()"> 
 
<div id="wrapper" class="not_loaded">text</div> 
 
</body>

+1

, или уточните свой селектор: '# wrapper.load {opacity: 1;}' – scraaappy

1

Добавьте значение к вашему атрибуту класса.

.load{ 
     opcacity: 1 !important; //because you have id selector with opacity to 0. 
     } 
1

Как хорошая практика, стараются избегать использования идентификаторов для укладки.


Вместо определения перехода в селекторе #wrapper, создать класс, содержащий transition свойство, как так:

.opacity-transition { 
    transition: opacity 2s ease-in; 
} 

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

Создайте еще один класс, чтобы изначально скрыть элемент #wrapper. Когда этот класс будет удален, он вызовет переход.

.hidden { 
    opacity: 0; 
} 

Код сниппета:

function fadeOnLoad() { 
 
    //Cache the selector. 
 
    var wrapper = document.getElementById("wrapper"); 
 
    console.log(wrapper.className); 
 
    //Add event listener for transition end. 
 
    wrapper.addEventListener("transitionend", function() { 
 
    //Remove the class which is not needed anymore. 
 
    this.classList.remove("opacity-transition"); 
 
    console.log(this.className); 
 
    }); 
 
    //Remove hidden class to start the transition. 
 
    wrapper.classList.remove("hidden"); 
 

 
};
.opacity-transition { 
 
    transition: opacity 2s ease-in; 
 
} 
 
.hidden { 
 
    opacity: 0; 
 
}
<body onload="fadeOnLoad()"> 
 
    <div id="wrapper" class="opacity-transition hidden"> 
 
    text</div> 
 
</body>


JSFIDDLE

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