Cóż, możesz poczekać, aż przeglądarka zakończy ładowanie wszystkich obrazów, a następnie powoli zmienić przezroczystość, tak jak efekt przenikania. Oto podgląd:
var imageElement = document.getElementById('image');
var overlayElement = document.getElementById('overlay');
window.addEventListener("load", function() {
imageElement.style.opacity = "1";
overlayElement.style.opacity = "1";
}, false);
body {
position: relative;
}
#image,
#overlay {
width: 1000px;
height: 800px;
position: absolute;
top: 0;
left: 0;
opacity: 0;
transition: all 2s ease-in-out;
-webkit-transition: all 2s ease-in-out;
}
#overlay {
background: rgba(0, 0, 0, 0.5);
}
<img id="image" src="https://upload.wikimedia.org/wikipedia/commons/3/3d/LARGE_elevation.jpg">
<div id="overlay"></div>
To zwykły javascript. Wiem, że tag mówi tylko css, ale to, czego chcesz, nie jest możliwe tylko przy pomocy css. Szybko utworzyłem efekt nakładki, nie zwracaj uwagi na css z wyjątkiem: opacity: 0;
i transition: all 2s ease-in-out; -webkit-transition: all 2s ease-in-out
w celu uzyskania efektu przenikania.
W javascript działa w ten sposób: Tworzę 2 zmienne, które pobierają elementy z DOM. Obraz ma identyfikator image
, a nakładka ma identyfikator overlay
. Następnie ustawiamy listę zdarzeń w naszym oknie. Gdy okno jest całkowicie załadowane, powinno wykonać wszystko w funkcji. Zmętnienia obrazu i nakładki są ustawione na 1
(widoczne). Dzięki naszej usłudze css transition
zarządzamy efektem wejścia.
cóż, możesz użyć JavaScript, aby dodać klasę na podstawie zdarzenia ładowania obrazu, ale po co zawracać sobie głowę? dlaczego po prostu nie dostosujesz bezpośrednio swojego obrazu? –
Obraz jest dość duży i jest używany w innych częściach strony, więc miałem nadzieję zminimalizować czas wczytywania strony, mając tylko jeden obraz zamiast dwóch. Ale wygląda na to, że nie mam wyboru. :) – torjinx