• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szubienica JS - skaczący obrazek

Object Storage Arubacloud
0 głosów
1,161 wizyt
pytanie zadane 27 lipca 2018 w JavaScript przez Rozmarynka Użytkownik (830 p.)
edycja 27 lipca 2018 przez Rozmarynka

Hej!
Napisałam gierkę "Szubienica" z odcinka pana Mirosława dot. JS'a. Jednakże, obrazki szubienicy przy zmianie skaczą. Co więcej, przez chwile nawet widać, że alfabet "zeskakuje" na lewą stronę, ale jednocześnie zostaje tam, gdzie powinien być (jak dla mnie mega dziwne xD z rodem paranormal activity). Testowane na Firefoxie. Testowałam również na Chromie i tam jest lepiej, w tym znaczeniu, że rzadziej skacze obraz (lub prawie wcale) oraz alfabet siedzi tam, gdzie powinien.

Po odpaleniu kodu pana Mirosława wszystko działa OK, bez względu na przeglądarkę.

Proszę Was o wyjaśnienie, dlaczego tak się dzieje i ewentualne tipy, jak to rozwiązać :)

Jeżeli opis jest niezrozumiały, to na prośbę dodam filmik dokumentujący to "zjawisko" :D

<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	
	<link type="text/css" rel="stylesheet" href="style.css" />
	<script src="szubienica.js"></script>
	
	<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400,700&amp;subset=latin-ext" rel="stylesheet"> 
	
</head>
<body>

	<div id="pojemnik">
		<div id="plansza"></div>
		<div id="szubienica">
			<img src="img/s0.jpg" alt="" />
		</div>
		<div id="alfabet"></div>
		<div style="clear:both;"></div>
	</div>

</body>
</html>
body
{
	background-color: #000000;
	color: lightgray;
	font-size: 28px;
	font-family: 'Source Code Pro', monospace;
}

#pojemnik
{
	width: 900px;
	margin-left: auto;
	margin-right: auto;
}

#plansza
{
	width: 900px;
	min-height: 60px;
	text-align: center;
	margin-top: 30px;
	margin-bottom: 30px;
	font-size: 48px;
	letter-spacing: 3px;
}

#szubienica
{
	float: left;
	width: 450px;
	min-heigh: 280px;
	text-align: center;
}

#alfabet
{
	float: left;
	width: 450px;
	min-heigh: 280px;
	text-align: center;
}

.litera
{
	float: left;
	height: 30px;
	width: 30px;
	margin: 3px;
	padding: 5px;
	border: 3px solid lightgray;
	text-align: center;
	border-radius: 15px;
}

.litera:hover
{
	background-color: #222222;
	border: 3px solid white;
	color: white;
	cursor: pointer;
}

.reset
{
	color: green;
	font-size: 48px;
	cursor: pointer;
}

.reset:hover
{
	color: white;
	font-size:48px;
}
var haslo = "Bez pracy nie ma kołaczy";
haslo = haslo.toUpperCase();

var dlugosc = haslo.length;
var haslo1 = "";

for(i=0;i<dlugosc;i++)
{
	if(haslo.charAt(i) == " ") haslo1 = haslo1 + " ";
	else haslo1 = haslo1 + "-";
}

window.onload = start;

var ile_skuch = 0;

var yes = new Audio("yes.wav");
var no = new Audio("no.wav");

var litery = new Array(35);
	
litery[0] = "A";
litery[1] = "Ą";
litery[2] = "B";
litery[3] = "C";
litery[4] = "Ć";
litery[5] = "D";
litery[6] = "E";
litery[7] = "Ę";
litery[8] = "F";
litery[9] = "G";
litery[10] = "H";
litery[11] = "I";
litery[12] = "J";
litery[13] = "K";
litery[14] = "L";
litery[15] = "Ł";
litery[16] = "M";
litery[17] = "N";
litery[18] = "Ń";
litery[19] = "O";
litery[20] = "Ó";
litery[21] = "P";
litery[22] = "Q";
litery[23] = "R";
litery[24] = "S";
litery[25] = "Ś";
litery[26] = "T";
litery[27] = "U";
litery[28] = "V";
litery[29] = "W";
litery[30] = "X";
litery[31] = "Y";
litery[32] = "Z";
litery[33] = "Ż";
litery[34] = "Ź";

function zmien_haslo()
{
	document.getElementById("plansza").innerHTML = haslo1;
}

function start()
{
	var tresc_diva = "";
	
	for(i=0; i<=34; i++)
	{
		var element = "lit" + i;
		tresc_diva=tresc_diva + '<div class="litera" id="'+element+'" onclick="sprawdz('+i+')">'+litery[i]+'</div>';
		if((i+1)%7==0) tresc_diva = tresc_diva + '<div style="clear:both;"></div>';
	}
	
	document.getElementById("alfabet").innerHTML = tresc_diva;
	
	zmien_haslo();
}

String.prototype.ustawZnak = function(miejsce, znak)
{
	if(miejsce > this.length-1) return this.toString();
	else return this.substr(0,miejsce) + znak + this.substr(miejsce +1);
}

function sprawdz(nr)
{
	
	//flaga
	var trafiona = false;
	
	for(i=0;i<dlugosc;i++)
	{
		if(haslo.charAt(i) == litery[nr])
		{
			haslo1 = haslo1.ustawZnak(i, litery[nr]);
			trafiona = true;
		}
	}
	
	if(trafiona == true)
	{
		var element = "lit" + nr;
		yes.play();
		
		document.getElementById(element).style.background = "#003300";
		document.getElementById(element).style.color = "#00C000";
		document.getElementById(element).style.border = "3px solid #00C000";
		document.getElementById(element).style.cursor = "default";
		
		zmien_haslo();
	}
	else
	{
		ile_skuch++;
		var element = "lit" + nr;
		no.play();
		
		
		document.getElementById(element).style.background = "#330000";
		document.getElementById(element).style.color = "#C00000";
		document.getElementById(element).style.border = "3px solid #C00000";
		document.getElementById(element).style.cursor = "default";
		document.getElementById(element).setAttribute("onclick", ";");
		
		var obraz = "img/s"+ ile_skuch + ".jpg";
		document.getElementById("szubienica").innerHTML = '<img src="'+obraz+'" alt=""/>';
	}
	
	//wygrana
	if(haslo1 == haslo)
	{
		document.getElementById("alfabet").innerHTML = "Brawo!<br /> Odkryto poprawne hasło<br />" + haslo + '<br /><br /><span class="reset" onclick="location.reload()">JESZCZE RAZ?</span>';
	}
	
	//przegrana
	if(ile_skuch>=9)
	{
		document.getElementById("alfabet").innerHTML = "Niestety, nie udało się!!<br /> Poprawne hasło<br />" + haslo + '<br /><br /><span class="reset" onclick="location.reload()">JESZCZE RAZ?</span>';
	}
	
	
}

 

komentarz 27 lipca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
Daj kod, najlepiej na codepen. Nie znam tego zadania bo nigdy nie robiłem kursów MZ ale może problem tkwi w jakiś ustawieniach CSS albo w jakimś opóźnieniu w JS. Codepen mocno ułatwi znalezienie problemu :)
komentarz 27 lipca 2018 przez shotokan Nałogowiec (39,660 p.)

min-height a nie min-heigh

komentarz 27 lipca 2018 przez Rozmarynka Użytkownik (830 p.)
https://codepen.io/Rozmarynka/pen/pZWXqm/

Nie wiem, czy dobrze dodałam kod, ale w razie "W" proszę pisać :D
komentarz 27 lipca 2018 przez Rozmarynka Użytkownik (830 p.)

@shotokan,
Oooo, a to skubany :D Dzięki wielkie! Paranormal activity z alfabetem rozwiązane. Da się jeszcze zniwelować efekt skakania obrazu przy przeładowaniu diva?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 8 września 2021 w JavaScript przez KFC Użytkownik (610 p.)
+1 głos
1 odpowiedź 408 wizyt
pytanie zadane 3 lutego 2022 w JavaScript przez Asasader1 Nowicjusz (130 p.)
+1 głos
1 odpowiedź 631 wizyt
pytanie zadane 22 lipca 2016 w JavaScript przez Gromixson Początkujący (260 p.)

92,565 zapytań

141,417 odpowiedzi

319,602 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...