Post Pic

Μενού με CSS και jQuery

Πλέον οι περισσότερες ιστοσελίδες έχουν εγκαταλήψει το flash και έχουν στραφεί στο Javasxript για την δημιουργία των μενού τους. Στο βοήθημα αυτό θα δούμε πως μπορούμε να δημιουργήσουμε ένα απλό μενού, για την ιστοσελίδα μας, με πολύ όμορφο animation όταν ο χρήστης περνάει τον δείκτη πάνω από το μενού, χρησιμοποιώντας μόνο CSS και jQuery.

Θα υποθέσουμε ότι έχουμε ήδη το αρχείο index.html έτοιμο, και αν δεν το έχουμε θα το δημιουργήσουμε.

Στην αρχή θα χρειαστεί να δημιουργήσουμε το μενού μας. Έτσι ανάμεσα στα tags <body> της ιστοσελίδας μας θα προσθέσουμε τον κώδικα

<div>
<ul id="topnav">
<li><a href="#">Κεντρικη</a></li>
<li><a href="#">Σχετικα</a></li>
<li><a href="#">Υπηρεσιες</a></li>
<li><a href="#">Φωτογραφιες</a></li>
<li><a href="#">Πελατες</a></li>
<li><a href="#">Επικοινωνια</a></li>
</ul>
</div>

Επίσης πρέπει να δημιουργήσουμε την εικόνα που θα χρησιμοποιηθεί για το animation στο μενού μας. Δημιουργούμε λοιπόν μια εικόνα 1×80, Φροντίζουμε να καλύψουμε τα πρώτα 40 pixels με ένα χρώμα και τα άλλα 40 pixels με άλλο χρώμα. Κάτι σαν την εικόνα που ακολουθεί.

cssjquerymenu1

Πλέον έχουμε το μενού μας σε μορφή unordered list και την εικόνα για το μενού μας. Τώρα θα μορφοποιήσουμε λίγο την εμφάνιση και θα προσθέσουμε την εικόνα παρασκηνίου του μενού. Δημιουργούμε το αρχείο style.css στο οποίο γράφουμε τον παρακάτω κώδικα. Έχουμε προσθέσει και κάποια σχόλια για καλύτερη κατανόηση του κώδικα.

ul#topnav {
margin: 0;
padding: 0;
list-style: none;
float: left;
font-size: 1.1em;
}
ul#topnav li{
margin: 0;
padding: 0;
overflow: hidden;  /*--Σημαντικό - Απόκρύπτει την εικόνα μας πρίν το hover--*/
float: left;
height:40px;
}
ul#topnav a, ul#topnav span { /*--Tα <a> και <span> έχουν τις ίδιες ιδιότητες--*/
padding: 10px 20px;
float: left;
text-decoration: none;
color: #fff;
background: url(a_bg.gif) repeat-x;
text-transform: uppercase;
clear: both;
width: 100%;
height: 19px;
line-height: 20px; /*--Κάθετη διαμόρφωση του κειμένου--*/
}
ul#topnav a{ /*--Το hover state του μενού μας--*/
color: #555;
background-position: left bottom;
}
ul#topnav span{ /*--Η αρχική κατάσταση του μενού μας--*/
background-position: left top;
}

.container {
height:330px;
left:50%;
margin:-140px 0 0 -450px;
overflow:hidden;
position:absolute;
top:50%;
width:978px;
}

Θα συνδέσουμε το αρχείο του στυλ με την ιστοσελίδα μας πρεοσθέτωντας τον παρακάτω κώδικα στο <head> κομμάτι της σελίδας μας

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

Τέλος θα συμπεριλάβουμε την βιβλιοθήκη jQuery και θα προσθέσουμε και το script που θα κάνει όλη την δουλειά. Πρώτα από όλα λοιπόν γράφουμε στο <head> μέρος της σελίδας μας τον εξής κώδικα για να συμπεριλάβουμε την βιβλιοθήκη

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

Τελευταίο βήμα είναι να προσθέσουμε τον παρακάτω κώδικα ώστε να δημιουργήσουμε την κίνηση στο μενού όταν ο χρήστης περνάει τον δείκτη πάνω από το μενού μας. Αυτό το κάνουμε γράφοντας τον εξής κώδικα στο <head> μέρος της σελίδας μας. Έχουμε προσθέσει και κάποια σχόλια για καλύτερη κατανόηση του κώδικα.

<script>
$(document).ready(function() {

$("#topnav li").prepend("<span></span>"); //Προσθέτουμε ένα κενό span tag πρίν το a tag

$("#topnav li").each(function() { //Για κάθε list item...
var linkText = $(this).find("a").html(); //Βρές το κείμενο μέσα στο <a> tag
$(this).find("span").show().html(linkText); //Και βάλε το κείμενο στο <span> tag
});

$("#topnav li").hover(function() {    //Όταν ο χρήστης κάνει hover...
$(this).find("span").stop().animate({
marginTop: "-40" //Βρές το <span> tag και μετακίνησε το 40 pixels πρός τα πάνω
}, 250);
} , function() { //Όταν ο χρήστης κάνει hover out...
$(this).find("span").stop().animate({
marginTop: "0"  //Μετακίνησε το <span> πίσω στην αρχική θέση (0px)
}, 250);
});

});
</script>

Αυτό ήταν. Δείτε το αποτέλεσμα κάνοντας κλίκ στο παρακάτω κουμπί
Τα αρχεία του βοηθήματος είναι διαθέσιμα σε όλους τους συνδρομητές του GreekTuts.

btn


Member Area
Άν είστε ήδη συνδρομητής κάντε login με τα στοιχεία σας. Για να γίνετε συνδρομητής πατήστε εδώ

47 Σχόλια

15:25 / 23.11.09
#1

Ευχαριστούμε για άλλη μια φορά. Με την πρώτη ευκαιρία θα προσθέσω κάτι τέτοιο στην σελίδα μου που είναι ακόμη σε δοκιμαστική φάση.

15:37 / 23.11.09
#2

Σε ότι βοήθεια χρειαστείς εδώ είμαστε :D

10:36 / 24.11.09
#3

καλησπέρα …σου έστειλα και στο twitter αλλά μάλον δεν το είδες .Η ερώτηση μου είναι .Ο κώδικας αυτός μπορεί να δουλέψει και στο blogger .. Αν θέλεις ρίξε μια ματιά στο site μου …να δεις τι μπάρα έκανα εγώ .Καλά η μπάρα του μαγκάιβερ …έκοψα και έραψα …

11:10 / 24.11.09
#4

Καλησπέρα
Ναι γίνεται και στο blogger
Απλά πρέπει να κάνεις το style inline και να προσθέσεις ένα HTML/JavaScript gadget mε όλο τον κώδικα εκεί που θέλεις να είναι το menu

13:55 / 24.11.09
#5

δηλαδή …υπάρχει κάποιος οδηγός για να ακολουθήσω δεν είμαι Power user ….βασικά θέλω να αντικαταστήσω την μπάρα που έχω κάνει custom δες εδώ http://mousikes-an.blogspot.com/

16:29 / 24.11.09
#6

σε ευχαριστώ πολύ ….πάρα πολύ …δεν ταιριάζει πολύ θα την μικρύνω είναι μεγάλο ….αλλά ξέρεις τι δεν μπορεί να μου κάνει να μου βρει τα Links που έχω για παράδειγμα πίσω απο το Βίντεο για παράδειγμα

16:30 / 24.11.09
#7

Το μενού που έχεις τώρα δεν είναι HTML/Javascript gadget?
Είναι αρκετά εύκολο
Κάνεις add a gadget και επιλέγεις HTML/Javascript

Μέσα λοιπόν σε αυτό θα κάνεις paste τον εξής κώδικα
http://rapidshare.com/files/311552655/code.txt.html
Το μόνο που έχεις να κάνεις τώρα είναι να αλλάξεις την εικόνα (γραμμή 48)
και να παίξεις λίγο με τα margin στην γραμμή 66 για να φέρεις το μενού εκεί που το θές.

Ρίξε μια ματιά σε αυτό :D
http://galacticreaction.blogspot.com/
Λάθος τοποθέτηση μέν αλλά το αποτέλεσμα θέλω να σου δείξω

16:33 / 24.11.09
#8

Τα links θα τα βάλεις εσύ. Δές τα links που έχεις τώρα στα κουμπιά, και κάντα paste στο νέο μενού

Παράδειγμα

  • To ήξερες
  • 17:15 / 24.11.09
    #9

    σε ευχαριστώ για άλλη μια φορά .αν έχεις πάντως κάποια άλλες μπάρες η από κάποιο site Μπορείς να μου στείλεις στο mail το έχεις εξάλου ε ….αν και έλα να σε κάνω add

    15:39 / 12.12.09
    #10

    Τέλειο! Thanks

    16:55 / 12.03.10
    #11

    Πολύ ωραίο!!!
    Ήθελα να ρωτήσω αν υπάρχει δυνατότητα να στοιχίζεται αυτόματα στο κέντρο της σελίδας, γιατι (μάλλον λόγω javascript) φέυγει προς τα αριστερά πάντα.

    02:55 / 13.03.10
    #12

    Μπορείς να δώσεις στο body ένα margin:auto; και έτσι το μενού σου θα κεντράρεται αυτόματα

    14:23 / 09.05.10
    #13

    oraio alla pos 8a mporousa na to allakso 8esh? diladi na t pao sto kentro i opou allou 8elw?

    14:36 / 09.05.10
    #14

    Αν παίξεις λίγο με τα CSS μπορείς να το τοποθετήσεις όπου θέλεις. Στο παράδειγμα παραπάνω έχω χρησιμοποιήσει ένα div με class .container. Αν το βγάλεις από εκεί ή πειράξεις τις ιδιότητες του .container μπορείς να το τοποθετήσεις όπως θες

    15:18 / 09.05.10
    #15

    to ebgala kai to peiraksa alla pali tpt mporeis na to diefkriniseis akrivos ? gt eimai arxarios akoma

    15:27 / 09.05.10
    #16

    Σε τι αρχείο προσπαθείς να το βάλεις?

    15:32 / 09.05.10
    #17

    ti akrivos ennoeis?

    15:46 / 09.05.10
    #18

    To παραπάνω παράδειγμα είναι ενα μενού σε μια στατική σελίδα html. Όταν τοποθετήσεις τον κώδικα μέσα στα body tags της σελίδας λοιπόν θα εμφανιστεί το μενού. Μετά λοιπόν μέσω των css απλά προσθέτουμε το στύλ. Αν μου δείξεις ένα live παράδειγμα του τι προσπαθείς να κάνεις μπορεί να μπορέσω να βοηθήσω περισσότερο

    15:50 / 09.05.10
    #19

    aaa brika 1 paradeigma apo 1 free template p eixa apo palia

    http://www.agriculturaambiental.com/vitruvius/examples.html

    des p.x ekei sto menu p lei home examples solutions k auta pws mporo na balw to menu auto edw?

    15:57 / 09.05.10
    #20

    Θα βρείς αυτό

    
    

    και θα το αντικαταστήσεις με αυτό

    
    

    Μετά στο head θα προσθέσεις και τις γραμμές

    
    

    και

    
    

    Λογικά θα παίξει

    16:08 / 09.05.10
    #21

    mP@ den epaixe m ebgale oti na ne. . sto index.html allaksa ta names p.x Solutions k auta alla eida oti sto style.css einai auto p prepei na allakso

    }
    div.menu {
    background:#2f2f2f;
    height:45px;
    }
    div.menu ul {
    list-style:none;
    margin:0;
    padding:0;
    }
    div.menu ul li {
    float:left;
    display:block;
    }
    div.menu ul li a,
    div.menu ul li a:visited {
    color:#FFFFFF;
    display:block;
    float:left;
    font-family:Arial, Helvetica, sans-serif;
    font-weight:bold;
    padding:15px 20px 15px;
    text-transform:uppercase;
    text-decoration:none;
    }
    div.menu ul li a:hover {
    text-decoration:underline;
    background:#222;
    color:#fff;
    }

    olo auto einai gia to menu profanos . pws akrivos prepei na t kanw gia na m emfanisei t allo?

    16:09 / 09.05.10
    #22

    Oκ μισό να στο φτιάξω και στο δείχνω

    16:18 / 09.05.10
    #23

    Ορίστε http://demo.greektuts.net/css&jquerymenu/2/
    Αν πατήσεις δεξί κλίκ και View Source (Προβολή Κώδικα) θα δείς τι ακριβώς έχω κάνει

    16:29 / 09.05.10
    #24

    hmmz akou na deis tora allaksa to code sto index.html olo auto allaksa kai sto style.css opws t exeis alla pali. tpt. mporeis na m postareis t code akrivos gia na dw? (se euxaristo para poli pantos p me boithas)

    16:38 / 09.05.10
    #25

    Δες λίγο το αρχείο styles.css εδώ
    και παρατήρησε τις γραμμές που ξεκινάνε με ul#topnav,
    Επίσης πρέπει να έχεις αυτή την εικόνα
    και να προσθέσεις και στο head του html σου το script της jQuery

    Τέλος να προσέξεις η λίστα με το μενού να έχει

      16:43 / 09.05.10
      #26

      okay to brika ola ok doulevei t slide mono tn eikona dn exw alla okay

      se euxaristo para poli ektimo tn boitheia sou k kati akoma 8a i8ela teleutaio an bebaia mporeis einai 1 VERTICAL jquery menu p eida apo 1 boithima alla k auto den ksero pws na to entakso opws kaname s auto t template . exeis ligo xrono na m peis?

      16:43 / 09.05.10
      #27

      Γενικά να καταλάβεις ότι πρέπει η unordered list του μενού σου να έχει id=”topnav”, στο head να έχεις συμπεριλάβει το script και την jquery, να έχεις την εικονίτσα, και από το css κώδικα που έχει σε αυτότο άρθρο να πάρεις και να βάλεις τις γραμμές 1-33 στο δικό σου style.css

      16:45 / 09.05.10
      #28

      Πες μου το tutorial και θα το δώ να σου πω :D !!

      16:49 / 09.05.10
      #29

      dn 8ymame akrivos p itan tcp. autos einai o kodikas

      menu#1

      * {
      margin: 1px;
      padding: 0px;
      }

      ul li {
      background-color: gray;
      width: 160px;
      height: 40px;
      line-height: 40px;
      list-style-type:none;
      }

      ul li ul {
      display: none;
      }

      ul li:hover {

      background-color: green;

      }

      ul li:hover ul {
      display: block;
      position: relative;
      left: 158px;
      top: -41px;
      }

      test
      test

      test
      test
      test

      ptotogenhs
      deyterogenhs
      tritogenhs
      fysiognomia

      test
      test
      test

      einai 1 vertical menu me submenu

      k p.x egw pes 8elw na to entakso sto proigoumeno template s tin stilh LINKS apo ta aristera pws 8a ginei auto?

      16:54 / 09.05.10
      #30

      Κάτι σαν και αυτό δηλαδή?

      http://www.dhtmlgoodies.com/scripts/slidedown-menu2/slidedown-menu2.html

      17:00 / 09.05.10
      #31

      oxi oxi apo8ikeuse ton kodika p ebala pano se ena arxeio .html k 8a katalabeis t ennow . pes m

      17:10 / 09.05.10
      #32

      autos eiani o code

      menu#1

      * {
      margin: 1px;
      padding: 0px;
      }

      ul li {
      background-color: gray;
      width: 160px;
      height: 40px;
      line-height: 40px;
      list-style-type:none;
      }

      ul li ul {
      display: none;
      }

      ul li:hover {

      background-color: green;

      }

      ul li:hover ul {
      display: block;
      position: relative;
      left: 158px;
      top: -41px;
      }

      test
      test

      test
      test
      test

      ptotogenhs
      deyterogenhs
      tritogenhs
      fysiognomia

      test
      test
      test

      17:11 / 09.05.10
      #33

      basika ekei p lei protogenhs test ola auta

      eixe kai alla ta ebgale gt?

      22:44 / 09.05.10
      #34

      basika exei bgalei ta (li kai ta UL ) alla dn ksero gt tcp mporeis na m boithiseis?

      02:00 / 10.05.10
      #35

      Επειδή υπήρχε ένα θέμα με τα comments το διόρθωσα. Οποτε ξανακάντον paste να τον δώ κανονικά αυτήν την φορά

      14:47 / 10.05.10
      #36

      aaa okay. Oriste kai o kodikas

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html>
      <head>
      <title>menu#1</title>

      <style type="text/css">

      * {
      margin: 1px;
      padding: 0px;
      }

      ul li {
      background-color: gray;
      width: 160px;
      height: 40px;
      line-height: 40px;
      list-style-type:none;
      }

      ul li ul {
      display: none;
      }

      ul li:hover {

      background-color: green;

      }

      ul li:hover ul {
      display: block;
      position: relative;
      left: 158px;
      top: -41px;
      }
      </style>

      </head>

      <Body>

      <ul>

      <li>test</li>

      <li>test

      <ul>

      <li>test</li>
      <li>test</li>
      <li>test</li>

      </ul>
      </li>

      <li>ptotogenhs</li>
      <li>deyterogenhs</li>
      <li>tritogenhs</li>
      <li>fysiognomia

      <ul>
      <li>test</li>
      <li>test</li>
      <li>test</li>

      </ul>

      </li>

      </ul>

      </body>
      </html>

      21:06 / 10.05.10
      #37

      checkare to kai pes mou

      20:53 / 12.05.10
      #38

      to checkares ka8olou ?

      00:06 / 13.05.10
      #39

      Ωραία και θέλεις έτσι να κάνεις το μενού στα αριστερά?

      09:48 / 13.05.10
      #40

      nai etsi pantso. alla to 8ema pws 8a to entakso p.x s ekeino to template den ksero prospa8isa asxoli8ika alla m bgike i apo ekso i strava an mporeis helpare me

      10:52 / 15.05.10
      #41

      loipon brikes kamia lysh?

      17:45 / 15.05.10
      #42

      Θα σου έχω λύση την Δευτέρα :D

      22:56 / 15.05.10
      #43

      okay euxaristo :D ta leme tn deutera :D s euxaristo p me boithas pantos

      13:01 / 18.05.10
      #44

      hey na me ksana…. loipon pantso brikes kamia lysh? :D

      10:16 / 19.05.10
      #45

      pantso please me sozeis ama m apanthseis …kegome alliws…prospa8ise please

      10:56 / 22.05.10
      #46

      pantso? ekanes tpt?

      01:10 / 04.06.10
      #47

      pantzo tora 8elw na balw pali auto to menu s 1 allo menu bar apo 1 template please boithise me se auto

      Trackbacks - Pingbacks

      Αφήστε ένα σχόλιο

      * Το όνομα σας, το Email, και το σχόλιο είναι απαιτούμενα

      Γραφτείτε στις Email Ενημερώσεις

      Εισάγετε το email σας:

      Powered by FeedBurner

      Log In

      Register

      Lost your Password?

      Tag Cloud

      Οι Φίλοι μας στο Twitter

      lennondtps
      FORADA
      papaki
      gegenos
      jsclavos
      tophostGR
      gkapraras
      wdfgr
      nfountas
      zouri9
      Th3Ag3nt
      ThodorisV
      thevoyager
      techfansGR
      wp2blog
      St0iK
      andreas_m68
      herath72
      Dimitraakis
      silve992
      kymagr
      papano
      amorphis_
      g_argyrakis
      gstam78
      nikos171984
      gkatsampirhs
      GamesHellasGR
      kalliophhhh
      dimsim7
      giorgioret
      Zoitsa_2010
      ultrathunder
      Weird_AL
      fotisk
      payne4life
      splusgr
      Chrysanthospro
      Serderides
      LewisHowes
      bartvii
      hambos227
      ideodoxeio
      BeBestT
      gamosgamos
      Φίλοι: 271 Μας ακολουθούν: 221

      To GreekTuts Στο Διαδύκτιο

      Bookmark & Share

      Γίνε Συνδρομητής Στο GreekTuts


      Κερδίστε πρόσβαση σε επιπλέον υλικό και άρθρα, αλλά και πολλές άλλες παροχές και προσφορές αγοράζοντας μία απο τις συνδρομές που σας προσφέρει το GreekTuts.

      Γράψτε Για Το GreekTuts


      Θέλετε και εσείς να γράψετε άρθρα για το GreekTuts; Διαβάστε περισσότερα εδώ. Οποιοσδήποτε μπορεί να στείλει, γι'αυτό αδράξτε την ευκαιρία και στείλτε μας και εσείς.