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

Image

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

คอนเซปคือ เราจะใส่แบ็คกราวด์ ใน แท็ก a จัดชิดขวา และจะใส่รูปเดียวกัน ที่ แท็ก span แล้วจัดชิดซ้าย ง่ายๆ แค่นี้เอง มาดู HTML และ CSS กัน
HTML
<ul class="blue">
<li><a class="current" title="home" href="#">home</a></li>
<li><a title="products" href="#">products</a></li>
<li><a title="blog" href="#">blog</a></li>
<li><a title="contact" href="#">contact</a></li>
</ul>
CSS
<ul>- Unorder-List
ul.blue {
padding: 5px;
margin: 10px 0;
list-style: none;
float: left;
}
อย่าลืมใส่ list-style เป็น none ครับ เพราะไม่งั้นเราจะใส่ แบ็คกรานด์ไม่ได้
<li>- List
ul.blue li {
float: left;
}
ul.blue li a {
float: left;
text-decoration: none;
color: #ccc;
padding: 4px 15px 0 0;
margin-right: 8px;
font: 900 14px "Arial", Helvetica, sans-serif;
}
ใส่ padding ด้านขวา 15 เพื่อเว้นระยะ ระหว่างปุ่ม
<span>- span ที่อยู่ใน link
ul.blue li a span {
float: left;
padding-right: 15px;
display: block;
margin-top: -4px;
height: 24px;
}
จะเห็นว่าใส่ margin-top ไว้ -4px นั่นเพราะว่า ส่วนของ a เรามี padding ด้านบนอยู่ 4px ครับ
<Hover>- ตอนที่เอาเมาส์โอเวอร์
ul.blue li a:hover, ul.blue li a.current {
color: #0d5f83;
background: url("images/blue.png") no-repeat top right;
}
ul.blue li a:hover span, ul.blue li a.current span {
background: url("images/blue.png") no-repeat top left;
}
******************************
10วิธีง่ายๆ ช่วยเพิ่ม SEO ให้กับบล็อกของคุณ
ในการเขียนบล็อกสิ่งที่คนส่วนใหญ่ต้องการก็คือ มีคนเข้ามาอ่าน รวมไปถึงเข้ามาคอมเมนต์ ในเนื้อหา บทความ จากบล็อกของเรา บ่อยครั้งที่เนื้อหาในบล็อกของเรา ถูกพบด้วยการเซิร์ชผ่านเซิร์ชเอนจิ้น เช่น google, ask เป็นต้น ทำให้ขาจรที่ไม่ใช่แฟนประจำ ได้เข้ามาอ่านสิ่งที่เขาค้นหาผ่านคำสำคัญ ที่ได้ระบุลงไปในช่องสืบค้น ผมมีวิธีง่ายๆในการเพิ่มความเป็นมิตรกับบอทจากเซิร์ชเอนจิ้นครับ
1. ให้ความสำคัญกับ tags, คำสำคัญ

tags และ คำสำคัญ(keyword) ถือเป็นสิ่งที่มีความสำคัญในการเรียกบอท หรือ เว็บสไปเดอร์ เข้าเว็บหรือบล็อก โดยบรรดาบอทจาก google, metacrawler, bing จะไล่อ่านจาก head ลงมาก่อน ในการตั้งชื่อ tags, คำสำคัญ(keyword) นั้น เราควรที่จะตั้งให้สั้น และกระชับ และผมมีเทคนิคเล็กๆน้อยในการตั้งชื่อ tags ดังนี้ครับ




2. ใส่คำอธิบายรูปภาพด้วย alt หรือ title
รูปแบบของโค้ด


เอาเมาส์จิ้มยังแสดงคำอธิบายรูป นั่นแปลว่าเรามีความละเอียดในการลงมือเขียนบล็อกครับ

สำหรับเครืองมือลงรูปภาพใน exteen นั้น ก็มีช่องให้ใส่อยู่แล้ว แต่หลายคนก็จะข้ามไป ไม่ได้ให้ความสนใจ
3. หัวข้อสั้นกระชับ และได้ใจความ
ถ้าเราสนใจที่จะทำ SEO ในการใส่ h1, h2, h3, h4 เราควรจะเลือกใช้คำที่สั้นกระชับ ใน exteen เรา ส่วนที่มีการแทรก h1 ก็คือส่วนของ ชื่อบล็อก ซึ่งถ้าเราสนใจในส่วนนี้ ก็ควรจะใช้คำที่แสดงถึงเนื้อหาในเว็บบล็อกของเราเอง สั้นๆ แต่กระชับ หรือใช้ชื่อเฉพาะของเราก็ได้ ในกรณีที่เราต้องการจะสร้างแบรนด์ หรือให้คนจดจำชื่อบล็อกของเรา




4. ใส่คำอธิบายให้กับคำย่อ ด้วย acronym, abbr
ขอยกตัวอย่างของคำย่อนะครับ css, html คำต่อไปนี้ถ้าคนในวงการเดียวกัน เขียนบล็อก ทำเว็บ ก็จะเข้าใจความหมายไปในการเดียวกันใช่ไหมครับ แต่ถ้าคำต่อไปนี้ละ id, ครม ซึ่งถ้าผมไม่รู้ผมก็อาจจะตีความคำว่า ครม ไปได้สองทางคือ คณะรัฐมนตรี หรือ คูณร่วมมาก(ซึ่งไม่มีนะ) ก็ได้
ตัวอย่างคำที่ขีดเส้นใต้ด้วยเส้นสีเขียวพอเอาเมาส์วางก็จะมีคำอธิบายประกอบด้วย

วิธีการใช้ก็ง่าย

ส่วน acronym ก็ใช้ในทำนองเดียวกันครับ เพียงแต่ว่า ie6 มันไม่รู้จัก acronym เว็บเบราเซอร์ตัวอื่นๆ เขารู้จักหมด!
5. รู้จักการแบ่งช่องไฟ, เว้น วรรคประโยค

ตัวอย่างที่ไม่ดีในการเว้นวรรค, ช่องไฟ
ในบทความนี้เป็นการนำเสนอการทำseoให้กับบล็อกของคุณ โดยวิธีง่ายๆต่อไปนี้ได้แก่ การให้ความสำคัญกับtags,การใส่คำอธิบายให้กับรูปภาพคำย่อ และลิงค์
ที่บอกว่าไม่ดีเพราะ มันติดกันเป็นพรื้ดดครับ ลองนึกภาพเวลาที่เราเซิร์ชหาจากกูเกิ้ล เราจะใส่คำสำคัญลงไปใช่ไหม ซึ่งคำสำคัญส่วนใหญ่จะเป็นคำสั้นๆ กระชับ ดังนั้นการที่เราใส่ข้อความยาวเป็นพรื้ดแบบนี้ จะทำให้มันไม่เกาะคำสำคัญ จากข้างบนควรแก้เป็น
ในบทความนี้เป็นการนำเสนอ "การทำseo" ให้กับบล็อกของคุณ โดยวิธีง่ายๆต่อไปนี้ ได้แก่ การให้ความสำคัญกับtags, การใส่คำอธิบายให้กับรูปภาพ คำย่อ และลิงค์
6. ใส่คำอธิบาย link
เราสามารถเพิ่มคำอธิบายให้กับลิงค์ได้ ด้วยการเพิ่ม title ลงไปในปีกกาของแท็ก a ตามรูปแบบโค้ดตัวอย่างนี้ครับ

ลองเอาเมาส์จิ้มระหว่างสองลิงค์นี้ดู
แต่งsidebarให้สวยแบบมีสไตล์ ไม่ได้ใส่ title
แต่งsidebarให้สวยแบบมีสไตล์ อันนี้ใส่ title
ผมแทรกเพิ่มไปแค่ title="แต่งsidebarให้สวยแบบมีสไตล์" เพียงเท่านั้นเอง ซึ่งก็ไม่ยากเย็นอะไรเลย


เทคนิคแต่งบล็อก1 กับ แต่งsidebarให้สวยแบบมีสไตล์ อันไหน make sense กว่ากันครับ เป็นlink เดียวกันแท้ๆ

7. อัพเดตบล็อกอย่างต่อเนื่อง

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

8. เข้าสังคมกับเขาบ้าง

เดี๋ยวนี้มันมีเทคโนโลยีในการสูบเว็บโดยที่ไม่จำเป็นต้องมานั่งคลิ้ก นั่งพิมพ์ url address เข้าเว็บนั้น เข้าเว็บนี้ ให้เมื่อยแ้ล้ว สิ่งเหล่านี้เราเรียกว่า social bookmark ซึ่งใน exteen ผมก็ได้เห็นการเพิ่มส่วนนี้ตรงปุ่มโปรโมตบล็อกผ่าน tweeter แถวๆปุ่มคอมเมนต์ ซึ่งก็สะดวกดีครับ เราไม่ต้องสนใจแต่บอทกูเกิ้ลอย่างเดียวอีกต่อไป เว็บไซต์ในแนวที่เน้นดึงบทความด้วย RSS ในปัจจุบันก็เยอะครับไม่เขียนข่าวเอง เอาแต่ดึง

ตัวอย่างของเว็บ webdesignerwall

ตัวอย่างจากพันทิป ใครเคยใช้บ้างหว่า...
9. ย่อ/ลดขนาด รูปภาพที่ไม่จำเป็นลงบ้าง
ขนาดของรูปภาพมันเกี่ยวอะไรกับการทำ SEO ในฐานะของคนเขียนบล็อกอย่างเดียวที่ exteen อาจจะไม่เกี่ยว เพราะเราไม่ต้องรับผิดชอบเรืองข้อมูลภายในโฮสต์ แต่ถ้าเราออกไปเขียนบล็อกภายใต้โฮสต์ของตัวเอง มันก็เกี่ยวขึ้นมาทันทีเลยครับ มันเกี่ยวในเรื่องของ Transfer rate ของแต่ละเดือน ตัวอย่างเช่น ไฟล์ avatars ก็แล้วกัน

ถ้าเราช่วยโลกร้อน(น่าจะเกี่ยวนะ) ด้วยการลดขนาด avatars ลงครึ่งนึง

จะประหยัดแบนวิดท์ หรือ Data transfer rate(แล้วแต่จะเรียก) ลงไปได้ต่อครั้ง 3kb ซึ่งอาจจะดูจิ๊บจ๊อย ลองมองอย่างนี้นะครับ ถ้ามีคนเข้ามาอ่านบล็อกเราอย่างน้อยวันละ 1000 ครั้ง(ผมไม่นับในกรณีที่เป็น cache ไฟล์ในครื่องนะครับ) จาก3kbคูณด้วย 1000 ก็จะเป็น 3000kb ก็คือ พื้นที่ในการ Transfer หายไปเฉยๆ 3MB ต่อวัน เดือนนึงๆ ถ้าคิดในฐานเดียวกันมีขาจรเข้ามาชม แบนด์วิทช์ก็จะหายไปเฉพาะเรื่องของ avatars ตัวเดียว 90MB ! ซึ่งเอาตรงนั้นให้บอท หรือคนวิ่งเข้า-ออกบล็อกเราดีกว่าจริงไหม

10. รู้จักการโยงบทความภายในบล็อก และนอกบล็อก
เทคนิคนี้เราอาจจะเรียกว่าเป็นการเพิ่ม บทความที่เกี่ยวข้อง, relate link หรือ relate article เป็นการเชื่อมโยงบทความแต่ละบทความที่เกี่ยวข้องกัน โดยเป็นการโฆษณาบล็อกของเราเองไปในตัว ใน cms เช่น wordpress, joomla, drupal ก็มีเครื่องมือเชือมโยงบทความเข้าด้วยกันอยู่แล้ว หรือใช้วิธีการทำ site map ภายในบล็อกของเราเองก็ช่วยได้เยอะเลยครับ
สำหรับการโยงบทความ ถ้าเราสนใจที่จะเพิ่มเรตจากบอท เราก็ต้องทำ relate article จากบทความในบล็อกของเราก่อน ส่วนนอกบล็อกของเรา เราอาจจะไม่ต้องทำก็ได้ แต่จริงๆแล้ว ทำไว้ก็ดีคนอ่านจะได้มีบทความที่เกี่ยวข้องไว้อ่านเพิ่มเติม
********************************
วิธีทำ Banner เลื่อน ขึ้น-ลง ตาม Scroll Bar
ในการทำ Tip นี้ ต้องอาศัย Technology 2 อย่างด้วยกัน นั้นคือ CSS และ JavaScript การนำไปใช้นั้นศึกษาจากโค้ดด้านล่างนี้ได้เลยคับ
- โค้ดส่วนแรกจะเป็นโค้ด CSS และ JavaScript ให้นำไปวางไว้ใน Tag ของ <Head></Head>:
<!--โค้ด CSS-->
<style type="text/css">
#topbar{
position:absolute;
border: 1px solid black;
padding: 2px;
background-color: lightyellow;
width: 150px;
visibility: hidden;
z-index: 100;
}
</style>
<!-- สิ้นสุดการแก้ไขรูปแบบของกรอบข้อความ -->
#topbar{
position:absolute;
border: 1px solid black;
padding: 2px;
background-color: lightyellow;
width: 150px;
visibility: hidden;
z-index: 100;
}
</style>
<!-- สิ้นสุดการแก้ไขรูปแบบของกรอบข้อความ -->
<!--โค้ด JavaScript-->
<script type="text/javascript">
var persistclose=0 // ให้ใส่เป็น 0 หรือไม่ก็ 1 (โดย 0 หมายถึง เมื่อกดปิดแล้ว กด REFRESH กรอบข้อความจะขึ้นมาอีก แต่ถ้า 1 กรอบข้อความจะไม่ขึ้นมาอีกแล้ว)
var startX = 10 // ตำแหน่งแสดงกรอบข้อความ นับจากด้านซ้าย
var startY = 10 // ตำแหน่งแสดงกรอบข้อความ นับจากด้านบน
function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
var verticalpos="fromtop"
function closebar(){
if (persistclose)
document.cookie="remainclosed=1"
document.getElementById("topbar").style.visibility="hidden"
}
function staticbar(){
var ns = (navigator.appName.indexOf("Netscape") != -1);
var d = document;
function ml(id){
var el=d.getElementById(id);
if (!persistclose || persistclose && get_cookie("remainclosed")=="")
el.style.visibility="visible"
if(d.layers)el.style=el;
el.sP=function(x,y){this.style.left=x+"px";this.style.top=y+"px";};
el.x = startX;
if (verticalpos=="fromtop")
el.y = startY;
else{
el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
el.y -= startY;
}
return el;
}
window.stayTopLeft=function(){
if (verticalpos=="fromtop"){
var pY = ns ? pageYOffset : iecompattest().scrollTop;
ftlObj.y += (pY + startY - ftlObj.y)/8;
}
else{
var pY = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
ftlObj.y += (pY - startY - ftlObj.y)/8;
}
ftlObj.sP(ftlObj.x, ftlObj.y);
setTimeout("stayTopLeft()", 10);
}
ftlObj = ml("topbar");
stayTopLeft();
}
if (window.addEventListener)
window.addEventListener("load", staticbar, false)
else if (window.attachEvent)
window.attachEvent("onload", staticbar)
else if (document.getElementById)
window.onload=staticbar
</script>
<script type="text/javascript">
var persistclose=0 // ให้ใส่เป็น 0 หรือไม่ก็ 1 (โดย 0 หมายถึง เมื่อกดปิดแล้ว กด REFRESH กรอบข้อความจะขึ้นมาอีก แต่ถ้า 1 กรอบข้อความจะไม่ขึ้นมาอีกแล้ว)
var startX = 10 // ตำแหน่งแสดงกรอบข้อความ นับจากด้านซ้าย
var startY = 10 // ตำแหน่งแสดงกรอบข้อความ นับจากด้านบน
function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
var verticalpos="fromtop"
function closebar(){
if (persistclose)
document.cookie="remainclosed=1"
document.getElementById("topbar").style.visibility="hidden"
}
function staticbar(){
var ns = (navigator.appName.indexOf("Netscape") != -1);
var d = document;
function ml(id){
var el=d.getElementById(id);
if (!persistclose || persistclose && get_cookie("remainclosed")=="")
el.style.visibility="visible"
if(d.layers)el.style=el;
el.sP=function(x,y){this.style.left=x+"px";this.style.top=y+"px";};
el.x = startX;
if (verticalpos=="fromtop")
el.y = startY;
else{
el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
el.y -= startY;
}
return el;
}
window.stayTopLeft=function(){
if (verticalpos=="fromtop"){
var pY = ns ? pageYOffset : iecompattest().scrollTop;
ftlObj.y += (pY + startY - ftlObj.y)/8;
}
else{
var pY = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
ftlObj.y += (pY - startY - ftlObj.y)/8;
}
ftlObj.sP(ftlObj.x, ftlObj.y);
setTimeout("stayTopLeft()", 10);
}
ftlObj = ml("topbar");
stayTopLeft();
}
if (window.addEventListener)
window.addEventListener("load", staticbar, false)
else if (window.attachEvent)
window.attachEvent("onload", staticbar)
else if (document.getElementById)
window.onload=staticbar
</script>
- โค้ดส่วนที่สอง จะอยู่ใน Tag <Body></Body>:
<div id="topbar">
<a href="" onClick="closebar(); return false"><img src="winclose.gif" border="0" width="16" height="14" /></a>
<!-- ใส่ข้อความที่คุณต้องการลงไปด้านล่างนี้ได้เลยครับ -->
จะมีข้อความขึ้นตรงนี้ครับ อาจนำไปทำเป็นพื้นที่โฆษณาใน WEB คุณได้นะครับ
<!-- สิ้นสุดการใส่ข้อความ-->
</div>
<a href="" onClick="closebar(); return false"><img src="winclose.gif" border="0" width="16" height="14" /></a>
<!-- ใส่ข้อความที่คุณต้องการลงไปด้านล่างนี้ได้เลยครับ -->
จะมีข้อความขึ้นตรงนี้ครับ อาจนำไปทำเป็นพื้นที่โฆษณาใน WEB คุณได้นะครับ
<!-- สิ้นสุดการใส่ข้อความ-->
</div>
********************************