Kezdőoldal » Számítástechnika » Weblapkészítés » [jQuery] lehet, valahogy a...

Qaxqaxqax kérdése:

[jQuery] lehet, valahogy a css függvényt késleltetni?

Figyelt kérdés

Nos csináltam egy kis memória játékot, ami fadeOut()/fadeIn(), hide()/show() -al tökéletesen működött, mivel a delay(500) függvénynek köszönhetően várt 0,5 másodpercet mielőtt megjelenítette a kártyalapokat.


Nos én átírtam CSS3 segítségével olyanra, hogy felforgassa a lapokat, ne csak előfadeljenek. Viszont ebben az esetben nem várja ki a második lap felfordítását, egyből visszafordítja őket, mielőtt még a felhasználó megnézhetné, melyik volt a másik lap, mivel a delay függvény nem működik.


pl.:

Itt működik:

$(#valami).delay(500).hide();

Viszont itt már nem:

$(#valami).delay(500).css({'parancs1':'ertek1','parancs2':'ertek2'}); //Mintha a delay ott sem lenne.


Ez az egész nagyon prímán nézne ki, ha valaki tudna nekem mondani egy megoldást a css() függvény által #valamire ráaggatott parancsok késleltetésére.


A kód kicsit hosszú..

A válaszokat előre is köszi(:



#CSS #jQuery #CSS3 #css() #delay()
2013. szept. 16. 16:55
1 2 3
 11/27 A kérdező kommentje:

Én szívesen bemásolom a kódom ide, vagy feldobom valami free helyre, de elég sok kritika illethet pár dolgot hatékonyság szempontjából, mert be kell látni azért én még csak próbálkozom a dolgokkal(:

Igazából én bármilyen építő kritikát elfogadok, de úgy álltam neki, hogy ha valami nem megy így, megcsinálom úgy, ahogy nem hatékony.


Szerintem bemásolom, ide azt legfeljebb, ha kell feltöltöm uw-re.

(Igazából nagyon unatkoztam suliba info órán, azért álltam neki és mivel ott nem kaphatok mysql hozzáférést, így nincs benne phpD:)


html:

<html>

<head>

<title>Memo</title>

<link rel="stylesheet" type="text/css" href="css/style.css" />

</head>

<body>

<div id="container">

<div id="main_game_container">


</div>

</div>

<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript" src="js/script.js"></script>

</body>

</html>


-----------

css:

*{

margin: 0px;

padding: 0px;

}

body{

background-color: #777;

}

div#container{

width: 600px;

height: auto;

margin: 0px auto;

}

div#main_game_container{

width: 600px;

height: 600px;

background-color: #323232;


user-select: none;

-moz-user-select: none;

-webkit-user-select: none;

-o-user-select:none;

-ms-user-select: none;


position: relative;


perspective: 600;

-webkit-perspective: 1000;

-moz-perspective: 600;

-o-perspective: 600;

-ms-perspective: 600;

}

div.game_card{

width: 100px;

height: 100px;

float: left;


z-index: -1;

}

div.game_card img{

width: 100px;

height: 100px;

position: absolute;


transition: all 1s;

-webkit-transition: all 1s;

-moz-transition: all 1s;

-o-transition: all 1s;

-ms-transition: all 1s;


backface-visibility: hidden;

-webkit-backface-visibility: hidden;

-moz-backface-visibility: hidden;

-o-backface-visibility: hidden;

-ms-backface-visibility: hidden;

}

div.game_card img:last-child{

z-index: 1;


transform: rotateY(180deg);

-webkit-transform: rotateY(180deg);

-moz-transform: rotateY(180deg);

-o-transform: rotateY(180deg);

-ms-transform: rotateY(180deg);

}

img#cover{

z-index: 2;

}

div#clear{

clear:both;

}


----------

js:

function box_vertical_aligner(element){

var window_height = $(document).height();

var box_height = element.height();

element.css('margin-top',window_height/2-box_height/2+'px');

}

function feltolt(tomb){

var x;

for(var i=0;i<6;++i){

for(var j=0;j<6;++j){

do{

x = Math.floor(Math.random()*18)+1;

}while(!benne_ketszer(tomb,x));

tomb[i].push(x);

}

}

}

function benne_ketszer(tomb,x){

var count=0;

for(var i=0;i<tomb.length;++i){

for(var j=0;j<tomb[i].length;++j){

if(tomb[i][j]==x){

++count;

}

}

}

return count<2;

}


$(document).ready(function(){

box_vertical_aligner($('#main_game_container'));


var tomb = new Array(

new Array(),

new Array(),

new Array(),

new Array(),

new Array(),

new Array()

);

feltolt(tomb);


for(var i=0;i<6;++i){

for(var j=0;j<6;++j){

$('#main_game_container').append('<div class="game_card"><img src="image/cover.jpeg" alt="c-" id="cover" /><img src="image/'+tomb[i][j]+'.jpeg" alt="-" number="'+tomb[i][j]+'" /></div>');

}

}

$('#main_game_container').append('<div id="#clear"></div>');


var click_db=0;

var picture = new Array();

var selectcounter=0;

$('img#cover').click(function(){

++click_db;

$(this).next().addClass('selected'+selectcounter);

$(this).addClass('select'+selectcounter);

picture.push($(this).next().attr('number'));

//$(this).hide();

$(this).css({'z-index':'0','transform':'rotateY(180deg)','-webkit-transform':'rotateY(180deg)','-moz-transform':'rotateY(180deg)','-o-transform':'rotateY(180deg)','-ms-transform':'rotateY(180deg)'});

$(this).next().css({'transform':'rotateY(0deg)','-webkit-transform':'rotateY(0deg)','-moz-transform':'rotateY(0deg)','-o-transform':'rotateY(0deg)','-ms-transform':'rotateY(0deg)'});

if(click_db==2){

if(picture[0]==picture[1]){

$('.selected'+selectcounter).delay(500).fadeOut();

}else{

//$('.select'+selectcounter).delay(500).fadeIn();

setTimeout(function(){

$('.select'+selectcounter).css({'z-index':'2','transform':'rotateY(0deg)','-webkit-transform':'rotateY(0deg)','-moz-transform':'rotateY(0deg)','-o-transform':'rotateY(0deg)','-ms-transform':'rotateY(0deg)'});

$('.selected'+selectcounter).css({'transform':'rotateY(180deg)','-webkit-transform':'rotateY(180deg)','-moz-transform':'rotateY(180deg)','-o-transform':'rotateY(180deg)','-ms-transform':'rotateY(180deg)'});

},500);

}

for(var i=0;i<=picture.length;++i){

picture.pop();

}

click_db=0;

++selectcounter;

}

});


});


A hiba a script.js végén az ismert kódrészben keresendő(: (Ha még nem vagyok teljesen hülyeD:)


Am köszönöm az eddigi válaszokat is és hogy az időtökből rám szántatok(:

2013. szept. 17. 15:27
 12/27 anonim ***** válasza:

a scripted legvégén a ++selectcontainer; nem jó helyen van.


beállítod, hogy fél sec múlva váltsa vissza a kiválasztott képeket (ezt tetted el a selectcontainerbe)

de közbe a kód értelmezését, végrehajtását folytatja, és idő előtt növeled ennek az értékét


vagy valami ilyesmi :D a lényeg hogy azután növeld ezt, miután visszafordultak azok a kártyák (pl tedd bele a timeoutba)

Csak addig nehogy fordítson még :)

2013. szept. 17. 16:26
Hasznos számodra ez a válasz?
 13/27 A kérdező kommentje:

Hiába teszem bele; a hiba ugyanúgy fent áll.

Sőt, ahogy mondtad még jön a bug is, hogy mikor túl gyorsan kattintgat a felhasználó, a cuccok rossz class-t kapnak.

2013. szept. 17. 16:45
 14/27 anonim ***** válasza:

...

... 180deg)','-webkit-transform':'rotateY(180deg)','-moz-transfor

m':'rotateY(180deg)','-o-transform':'rotateY(180deg)','-ms-tr

ansform':'rotateY(180deg)'});



++selectcounter;


},500);


nekem ez így működik, másodikat felfordítom, és vár egy pillanatot, és mind2 visszafordul

2013. szept. 17. 19:13
Hasznos számodra ez a válasz?
 15/27 A kérdező kommentje:
Igaz, de így csak az else ágon belül nő a dolog és nem talál párokat, illetve olyat is tapasztaltam, hogy ha talál mindent visszafordít, mivel több kártya ugyan azt a classt kapja nem csak 1 pár.
2013. szept. 17. 19:35
 16/27 anonim ***** válasza:

ja már felfogtam :D tényleg nem tökéletes, nem várja meg míg felfordul hogy utána forduljon vissza.

ezt találtam, működik:

.bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function(){ ... });

Rátettem erre: $(this).next().css({ ...}) .bind...


de ezt még optimalizálni kéne, mert így elég sokszor végrehajtja a függvényt (ami nem látszik, mert csak akkor csinál valamit, ha a click_db=2)

2013. szept. 17. 19:36
Hasznos számodra ez a válasz?
 17/27 A kérdező kommentje:
A válaszod megoldja a második lap problémáját, de újabb problémákat vet fel, amik eléggé javíthatatlannak tűnnek.
2013. szept. 17. 19:37
 18/27 A kérdező kommentje:

#16 ez a bindes dolog valóban működik, de nem értem :/

Szal nem tudom hogy ezt hogy kéne optimalizálnom:S

2013. szept. 17. 19:41
 19/27 anonim ***** válasza:

tedd bele az egyezéshez is a selectcounter++;-t, úgy nem fordulnak azok vissza


legegyszerűbb az lenne, ha nem engednéd addígfordítani, amíg nem fordultak vissza. Csinálsz egy bool változót, alapból true, ha kettőt felfordít false, és az if-else ágaiban (ahol a selectcounter++; van) ott visszaállítod true-ra.

Csak akkor csinálsz valamit, ha a változó igaz


Milyen problémák jöttek elő? Én úgy láttam kezdenek eltűnni, de lehet megint nem figyelek eléggé :D

2013. szept. 17. 19:43
Hasznos számodra ez a válasz?
 20/27 A kérdező kommentje:

Áh nem, tévedtem:S ez a bindes nem működik:S

csak bent maradt az else ágban a ++selectcounter

2013. szept. 17. 19:44
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!