ทำปุ่มเมนู CSS ขอบมนโดยใช้รูปเดียว

menu ก่อนที่ผมจะรู้จัก CSS นั้น การทำปุ่มเมนูในรูปแบบนี้ นั้นต้องใช้ รูป ถึง 3 รูปเลยทีเดียว คือ รูปขอบด้านซ้าย รูปพื้นที่ตรงกลาง และรูปขอบมนด้านขวา แต่ตอนนี้เราสามารถใช้ CSS ช่วยโดยใช้รูปเพียงรูปเดียว ประหยัดเวลา ประหยัดแบนวิธ ใช้ง่าย ในทุกที่ ยืดได้ แม้ ประโยคจะยาว ลองมาดูวิธีกันครับ

Image

bg
ด้านบนนี้คือตัวอย่างรูป ที่เราจะใช้กัน แต่ผมจะไม่บอกวิธีการทำรูปนะครับ ดาวน์โหลด .psd ไปศึกษาหรือปรับเปลี่ยนกันดูเองนะครับ menubutton.psd

Concept

concept
คอนเซปคือ เราจะใส่แบ็คกราวด์ ใน แท็ก a จัดชิดขวา และจะใส่รูปเดียวกัน ที่ แท็ก span แล้วจัดชิดซ้าย ง่ายๆ แค่นี้เอง มาดู HTML และ CSS กัน

HTML

  1. <ul class="blue">
  2. <li><a class="current" title="home" href="#">home</a></li>
  3. <li><a title="products" href="#">products</a></li>
  4. <li><a title="blog" href="#">blog</a></li>
  5. <li><a title="contact" href="#">contact</a></li>
  6. </ul>

CSS

<ul>- Unorder-List

  1. ul.blue {
  2.         padding: 5px;
  3.         margin: 10px 0;
  4.         list-style: none;
  5.         float: left;
  6. }

อย่าลืมใส่ list-style เป็น none ครับ เพราะไม่งั้นเราจะใส่ แบ็คกรานด์ไม่ได้

<li>- List

  1. ul.blue li {
  2.         float: left;
  3. }
  4.  
  5. ul.blue li a {
  6.         float: left;
  7.         text-decoration: none;
  8.         color: #ccc;
  9.         padding: 4px 15px 0 0;
  10.         margin-right: 8px;
  11.         font: 900 14px "Arial", Helvetica, sans-serif;
  12. }

ใส่ padding ด้านขวา 15 เพื่อเว้นระยะ ระหว่างปุ่ม

<span>- span ที่อยู่ใน link

  1. ul.blue li a span {
  2.         float: left;
  3.         padding-right: 15px;
  4.         display: block;
  5.         margin-top: -4px;
  6.         height: 24px;
  7. }

จะเห็นว่าใส่ margin-top ไว้ -4px นั่นเพราะว่า ส่วนของ a เรามี padding ด้านบนอยู่ 4px ครับ

<Hover>- ตอนที่เอาเมาส์โอเวอร์

  1. ul.blue li a:hover, ul.blue li a.current {
  2.         color: #0d5f83;
  3.         background: url("images/blue.png") no-repeat top right;
  4. }
  5.  
  6. ul.blue li a:hover span, ul.blue li a.current span {
  7.         background: url("images/blue.png") no-repeat top left;
  8. }

ลองใช้โค้ดทั้งหมดรวมกันดูครับ ถ้ายังไม่เห็นภาพ ลองดูตัวอย่างที่นี่ menu.html สำหรับรูป ใส่ไว้ใน โฟลเดอร์ images ด้วยนะครับ ถ้าใช้ css ตามด้านบนนี้ ดาวน์โหลดไฟล์ตัวอย่างทั้งหมดได้ที่นี่ครับ cssmenu1image.rar

ข้อมูลจาก http://kailoon.com/css-sliding-door-using-only-1-image/

Related posts

10 Comments »

  1. krkaew said,

    July 6, 2008 @ 4:45 pm

    :)>-
    ขอบคุณมากๆค่ะ ได้ความรู้ดี

  2. krkaew said,

    July 6, 2008 @ 5:11 pm

    ขอถามเพิ่มค่ะ
    แล้วมันจะ “ประหยัดแบนวิธ” ไงอ๊ะค่ะ
    เพราะเท่ากับ client load background ชิ้นใหญ่ทีเดียวเลย (ตามตัวอย่าง 493*24 )
    อันนี้ไม่พูดถึงทำรูปให้มีขนาดเล็กนะค่ะ (ตามตัวอย่าง 394 bytes)

    แต่ที่ว่าประหยัดเวลานี่เห็นด้วยอย่างยิ่งค่ะ

  3. utt said,

    July 6, 2008 @ 10:12 pm

    เขียนโค้ดสั้นลงน่ะครับ แล้วใช้ซ้ำได้หลายๆที่ครับ

  4. purie said,

    July 9, 2008 @ 8:52 pm

    ใส่ มันทำให้มี warning นี่คะ element เปล่า มีวิธีอื่นไหมคะ

  5. purie said,

    July 9, 2008 @ 8:53 pm

    มันไม่ขึ้น เอาใหม่ ใส่ span เปล่าๆ ไม่มีอาไรข้างใน มันมี warning นี่คะ มีวิธีการอื่นไหมคะ

  6. utt said,

    July 9, 2008 @ 9:16 pm

    warning อะไรหรอครับ

  7. purie said,

    July 10, 2008 @ 10:27 am

    คือ ตามหลักเว็บ standard เค้าห้ามมี element เปล่าอ่ะค่ะ ถ้าใช้ firefox เช็คดู จะเห็นว่า มี warning เตือนด้านล่างขวา ตรง status บาร์อ่ะค่ะ

  8. DEOW said,

    July 11, 2008 @ 10:44 am

    เป็นเทคนิคที่ดีมากครับ สามารถปรับใช้ได้ในหลายรูปแบบ และแก้ไขง่ายด้วยขอบคุณมากครับ

    ตอบคำถามคุณ purie
    เว็บ standard ใช้ element ได้นะครับส่วน warning น่าจะมาจากสาเหตุอื่นครับ เช่นคุณอาจใส่ javascript เอาไว้แนะนำให้ดูส่วนอื่นก่อนครับ เพราะผมดู code แล้วไม่มีปัญหาหรือ bug ครับสามารถใช้ได้ทั้ง firefox และ IE ครับ คิดว่า Browser อื่นก็ไม่น่าจะมีปัญหาด้วยนะครับ :)

  9. partyman said,

    July 13, 2008 @ 12:20 pm

    คิดไม่ถึงจิงๆๆ …

    อิอิ … เก่งๆๆๆ

  10. optic said,

    July 26, 2008 @ 4:43 pm

    เอาไปใช้ยังไงอะครับ มือใหม่บอกด้วยนะครับ

RSS feed for comments on this post · TrackBack URI

Leave a Comment

:) :( :d :"> :(( \:d/ :x 8-| /:) :o :-? :-" :-w ;) [-( :)>- more »

IDOL Beautifulidol.com WAZCOOL Wazcool.com ASTORE Astoreblog.com
MUSIC Hfonemusic.com POST Postigg.com LOAD uploadtoday.com