ทำกล่องขอบโค้งด้วย css

เรามาทำกล่องขอบโค้ง โดยใช้รูป มุมมน และเขียนแบบพื้นฐาน ด้วย html แบบ standards กัน ผมขอเสนอ วิธีที่เคยใช้ง่ายๆ 3 แบบด้วยกัน ลองนำไปใช้ ตามโอกาส

แบบที่ 1 ตัดรูป ขอบด้านบนและล่างมาแบบนี้

curve_top.gif = curve_top.gif

curve_bottom.gif = curve_bottom.gif

เขียน html ดังนี้

<div class=”curvetop”></div>
<ul>
<li>aaaa</li>
<li>bbbb</li>
<li>cccc</li>
</ul>
<div class=”curvebottom”></div>

เขียน css ดังนี้
<style type=”text/css”>
.curvetop {background:url(curve_top.gif) no-repeat; height:9px; font-size:1px}

.curvebottom {background:url(curve_bottom.gif) no-repeat; height:9px; font-size:1px}

ul {background:#8ACA80; margin:0; padding:0 10px 0 10px; list-style:none; width:157px}

li {border-bottom:1px #FFFFFF dashed}
</style>

ได้ผลดังนี้

curvebox1.gif

ไม่มีอะไรมาก ก็ใส่รูปที่ .curvetop และ .curvebottom แล้วก็ใส่สี ที่ ul ใส่ เส้นประที่ li ส่วนที่ว่าทำไมต้องใส่ font-size:1px อ่านอันนี้ประกอบ การจัดการกับความสูง และ อ่าน อันนี้ด้วยก็ได้ ถ้ายังไม่เข้าใจ ul li เรียนรู้การใช้ ul li step by step

แบบที่ 2 ใช้รูป แบบนี้

= curve_top2.gif

= curve_bottom2.gif

เขียน html ดังนี้

<h2>หัวข้อ</h2>
<ul>
<li>aaaa</li>
<li>bbbb</li>
<li>cccc</li>
<li>dddd</li>
</ul>

เขียน css ดังนี้

<style type=”text/css”>
h2 {background:url(curve_top2.gif) no-repeat left top; padding:0; margin:0}
ul {background:url(curve_bottom2.gif) no-repeat left bottom;margin:0; padding:0 10px 10px 10px; list-style:none; width:157px}
li {border-bottom:1px #FFFFFF dashed}
</style>

ได้ผลดังนี้

curve_box2.gif

แบบที่ 2 นี้ ในส่วนของการเขียนโค้ด html จะดีกว่าแบบแรก คือเราไม่มี div เปล่าๆ ที่ไม่มีความหมาย เราใช้ tag อย่างประหยัดเพียง 2 tag ใส่รูปโค้งด้านบนที่ h2 เลือกให้ชิดด้านบน (สังเกตว่า จะมี padding และ margin = 0 เพราะ h2 นั้น จะเว้นขอบบนล่างโดยธรรมชาติ ทำให้มีช่องว่างระหว่างภาพ จึงต้องกำหนดเป็น 0 ) ใส่รูป โค้งด้านล่าง ที่ ul แล้วเลือกให้ชิดล่าง ul จะแสดงรูปโดยเริ่มจากด้านล่าง กรณีนี้เราควรจะตัดรูปขอบโค้งให้ยาวซักหน่อย เผื่อการยืดยาวขึ้นของกล่อง

แบบที่ 3ใช้รูปโดยตัดเฉพาะส่วนมุม แบบนี้

t_left.gif = t_left.gif t_right.gif = t_right.gif

b_left.gif = b_left.gif b_right.gif = b_right.gif

เขียน html ดังนี้

<div id=”content”>
<span class=”tl”><span class=”tr”></span></span>
<ol>
<li>aaaa</li>
<li>bbbb</li>
<li>cccc</li>
<li>dddd</li>
</ol>
<span class=”bl”><span class=”br”></span></span>
</div>

เขียน css ดังนี้

<style type=”text/css”>
#content{background:#8ACA80;width:200px}
ol{padding:0 10px 0 10px;margin:0;list-style:none;}
li{border-bottom:1px #FFFFFF dashed}
.tl{background:url(t_left.gif) no-repeat left top;display:block;height:9px;font-size:1px}
.tr{background:url(t_right.gif) no-repeat right top;display:block;height:9px;font-size:1px}
.bl{background:url(b_left.gif) no-repeat left bottom;display:block;height:9px;font-size:1px}
.br{background:url(b_right.gif) no-repeat right bottom;display:block;height:9px;font-size:1px}
</style>

ผลที่ได้

curve_box3.gif

แบบที่ 3 นี้มีข้อดีคือ ยืดได้ ทั้ง แนวตั้งแนวนอน โดยไม่เสียรูป เพราะเราได้ ใส่ รูปภาพมุมมนไปที่ span ซ้าย ขวา บน ล่าง โดยกำหนด background ให้อยู่ตาม ตำแหน่ง ที่ต้องการ เวลาตัดรุปขอมมน ให้ตัดติดพื้นหลังสีขาวมาด้วย เพื่อ บัง ในส่วน มุมแหลมๆไว้

ครับ อันนี้ก็เป็นตัวอย่างคร่าวๆ นะครับ ลองนำไปใช้ ประยุกต์กันดูครับ น่าจะพอเข้าใจกันนะครับ เลือกเอา ตามแต่จะเหมาะสม บางจุด ไม่จำเป็น ต้องยืดด้านข้าง ก็ไม่ต้องใช้แบบที่ 3 ก็ได้

*** หากก็อปโค้ดไปใช้ ต้องแก้ที่ตัว ” ด้วยนะครับ ไม่งั้นมันจะไม่ทำงาน

Related posts

7 Comments »

  1. DeaR said,

    January 17, 2008 @ 8:28 pm

    เยี่ยมครับ บทความนี้
    ไม่เคยเห็นบทความของคนไทยเกี่ยวกับ CSS มาก่อนเลย เยี่ยมจริงๆครับ
    ชอบๆๆๆๆ ได้ความรู้เยอะดี โดยเฉพาะพวกเทคนิคสำหรับ SEO

    ขอบคุณครับสำหรับเว็บดีๆ ไปเยี่ยมเว็บผมได้นะครับ พึ่งจะทำได้ไม่นานเองครับ ยังมีไม่เยอะ แต่กำลัง up อยู่ คิดว่าน่าจะใกล้ๆกัน…เกี่ยวกับ Web เหมือนกัน :-?

  2. PatSonic|Com said,

    February 19, 2008 @ 6:58 pm

    เยี่ยมเลยนะ วิธีนี้ ชอบๆ:d

  3. paradise29 said,

    April 12, 2008 @ 5:52 pm

    นั่งอ่านแล้วลองทำตามครับ…

    แต่ทำให้เป็นกรอบที่ขอบรูป…นั่งงมตั้งนาน…

    สิ่งที่ยากที่สุดในเรื่องของ…CSS ในความคิดผมคือ…ไม่รู้ว่าค่าไหน…

    เอาไว้ใช้ทำอะไร…มีเว็บไหนแนะนำไหมครับ…ว่าแต่ละค่าใช้งานอย่างไร

    img{
    border: 1px dashed #ccc;
    margin:10px;
    background:#fff;
    padding:4px;
    }

  4. ^One-Piece^ said,

    April 23, 2008 @ 1:24 pm

    ยอดเยี่ยมเลยครับ

  5. feekz said,

    May 27, 2008 @ 11:06 am

    น่าสนใจดีครับ ได้ความรู้เพิ่มขึ้นด้วย
    ขอบคุณมากครับ

  6. Por said,

    June 5, 2008 @ 3:04 pm

    สอนได้ดีมาครับ ขอบคุณมากๆ

  7. hmongasia said,

    July 22, 2008 @ 10:52 am

    โอวว .. ในที่สุดก็เจอ เว็บ CSS ไทย บทความนี้เป็นประโยชน์มากครับ อยากรู้วิธีทำนานแล้ว แต่ไม่รู้ต้องค้นคำไหนถึงจะเจอ .. ขอบคุณครับ

RSS feed for comments on this post · TrackBack URI

Leave a Comment

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

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