ToolDeck

ตัวสร้าง CSS Gradient

สร้าง linear gradient และ radial gradient แบบภาพ แล้วคัดลอกโค้ด CSS

ลองตัวอย่าง
ประเภท
มุม135°

จุดหยุดสี

0%
100%

ผลลัพธ์ CSS

background: linear-gradient(135deg, #6366f1 0%, #ec4899 100%);

CSS Gradient คืออะไร?

ตัวสร้าง CSS gradient คือเครื่องมือแบบภาพที่ช่วยให้คุณสร้างการเปลี่ยนสีอย่างราบเรียบโดยไม่ต้องเขียนไวยากรณ์ gradient ด้วยมือ ใน CSS, gradient คือการเปลี่ยนผ่านระหว่างสองสีขึ้นไปอย่างราบเรียบ โดยเบราว์เซอร์แสดงผลโดยตรงโดยไม่ต้องใช้ไฟล์ภาพ ข้อกำหนด CSS Image Module Level 4 กำหนดให้ฟังก์ชัน gradient เป็นประเภทหนึ่งของค่าภาพ ซึ่งหมายความว่าสามารถใช้ได้ทุกที่ที่รับค่า background-image, list-style-image, หรือ border-image เนื่องจากเบราว์เซอร์แปลง gradient เป็นพิกเซลในขณะแสดงผล จึงรองรับทุกความละเอียดและไม่เกิดความพร่ามัวบนหน้าจอ high-DPI การใช้ตัวสร้าง CSS gradient ช่วยประหยัดเวลาและลดการเดาสุ่ม — คุณปรับสีและตำแหน่งแบบภาพ แล้วคัดลอกกฎ CSS ที่สมบูรณ์

CSS รองรับรูปทรง gradient หลักสามแบบ ได้แก่ linear (ตามเส้นตรง), radial (แผ่ออกจากจุดศูนย์กลาง) และ conic (หมุนรอบจุดศูนย์กลาง) แต่ละรูปทรงรับรายการจุดหยุดสี ซึ่งคุณระบุสีและตำแหน่งเป็นเปอร์เซ็นต์หรือความยาวได้ตามต้องการ เบราว์เซอร์คำนวณสีระหว่างจุดหยุดโดยใช้ sRGB เป็นค่าเริ่มต้น แม้ว่า CSS Color Level 4 จะอนุญาตให้ระบุ color space อื่น เช่น oklch และ lab สำหรับการเปลี่ยนสีที่ราบเรียบขึ้นในเชิงการรับรู้

Gradient ทำหน้าที่แทนพื้นหลังจากไฟล์ภาพสำหรับงานตกแต่งส่วนใหญ่บนเว็บ กฎ CSS เพียงหนึ่งบรรทัดสร้างสิ่งที่เคยต้องส่งออกจาก Photoshop และใช้ HTTP request Gradient ไม่ขึ้นกับความละเอียด ไม่ใช้แบนด์วิธเครือข่ายนอกจาก CSS เอง และสามารถใช้ animation หรือ transition ด้วยคุณสมบัติ CSS มาตรฐาน ไวยากรณ์ gradient มีความเสถียรในเบราว์เซอร์หลักทุกตัวมาตั้งแต่ปี 2013 และรูปแบบที่ไม่มี prefix ทำงานได้ใน Chrome, Firefox, Safari และ Edge โดยไม่ต้องมี fallback

ทำไมต้องใช้ตัวสร้าง CSS Gradient นี้?

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

ดูตัวอย่างแบบเรียลไทม์
เห็น gradient อัปเดตทันทีขณะที่คุณเปลี่ยนสี ตำแหน่ง และมุม ไม่ต้องสลับระหว่างโปรแกรมแก้ไขโค้ดและเบราว์เซอร์
🔒
ประมวลผลในเครื่องของคุณ
การแสดงผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ ไม่มีข้อมูลสีหรือการตั้งค่า gradient ถูกส่งไปยังเซิร์ฟเวอร์ใด
🎨
รองรับหลายประเภท Gradient
สร้าง linear gradient และ radial gradient พร้อมควบคุมทิศทาง มุม และตำแหน่งจุดหยุดสีได้อย่างสมบูรณ์ คัดลอก CSS ด้วยคลิกเดียว
📋
ไม่ต้องสมัครสมาชิก
เปิดหน้าแล้วเริ่มสร้างได้เลย ไม่ต้องลงทะเบียน ไม่มีการบล็อกด้วยอีเมล ไม่มีขีดจำกัดการใช้งาน ใช้งานออฟไลน์ได้หลังโหลดครั้งแรก

กรณีการใช้งานตัวสร้าง CSS Gradient

การพัฒนา Frontend
สร้างพื้นหลัง hero section, overlay บนการ์ด และสถานะ hover ของปุ่ม ดูตัวอย่าง gradient ที่ขนาดเป้าหมาย แล้ววาง CSS โดยตรงใน stylesheet หรือการตั้งค่า Tailwind
การออกแบบ Email Template
โปรแกรม email บางตัวรองรับ CSS gradient ใน inline style สร้างโค้ด gradient ที่ต้องการและใส่โดยตรงบน element พร้อมสีทึบเป็น fallback สำหรับโปรแกรมที่ไม่รองรับ gradient
การสร้างต้นแบบงานออกแบบ
เมื่อทดสอบชุดสีในเบราว์เซอร์แทน Figma ให้สร้างพื้นหลัง gradient อย่างรวดเร็ว เปรียบเทียบหลายตัวเลือกเคียงกันโดยไม่ต้องส่งออก asset
การจัดสไตล์ Dashboard DevOps
Dashboard แสดงสถานะและ UI สำหรับการติดตามระบบใช้ color gradient เพื่อแสดงช่วงความรุนแรง (เขียวถึงแดง) หรือความหนาแน่นของข้อมูล สร้างค่า gradient แล้วนำไปใช้กับพื้นหลังกราฟหรือแถบสถานะ
การแสดงข้อมูลเชิงภาพ
ไลบรารีกราฟ เช่น D3.js และ Recharts รับค่า CSS gradient สำหรับการเติมพื้นที่และ heatmap สร้าง gradient แบบภาพ แล้วดึงสีของจุดหยุดไปใช้ในฟังก์ชัน scale
การเรียนรู้ CSS
นักศึกษาที่เรียน CSS สามารถทดลองกับไวยากรณ์ gradient เห็นว่าการเปลี่ยนมุมส่งผลต่อทิศทางอย่างไร และเข้าใจการวางตำแหน่งจุดหยุดสี CSS ที่สร้างขึ้นเป็นแหล่งอ้างอิงที่ใช้งานได้จริง

เอกสารอ้างอิงประเภท CSS Gradient

CSS กำหนดฟังก์ชัน gradient ห้าแบบ ประเภทหลักสามแบบ (linear, radial, conic) แต่ละแบบมีตัวแปรแบบซ้ำที่ทำให้รูปแบบต่อเนื่อง repeating-linear-gradient() และ repeating-radial-gradient() มีประโยชน์สำหรับพื้นหลังลายทางและวงแหวนซ้อนกัน ฟังก์ชัน gradient ทั้งหมดรับจุดหยุดสีในรูปแบบสี CSS ใดก็ได้ ทั้ง HEX, RGB, HSL, ชื่อสี หรือ oklch เบราว์เซอร์ทุกตัวรองรับฟังก์ชันทั้งห้าแบบอย่างครบถ้วน ไม่จำเป็นต้องใช้ vendor prefix

ฟังก์ชันตัวอย่างไวยากรณ์ทิศทางการใช้งานทั่วไป
linear-gradient()to right, #f00, #00fStraight lineBackgrounds, hero sections, progress bars
radial-gradient()circle, #f00, #00fOutward from centerSpotlight effects, buttons, badges
conic-gradient()from 0deg, #f00, #00fSweep around centerPie charts, color wheels, spinners
repeating-linearto right, #f00 0 10px, #00f 10px 20pxTiled lineStripes, progress indicators, decorative borders
repeating-radialcircle, #f00 0 10px, #00f 10px 20pxTiled circleConcentric ring patterns, retro textures

Linear vs Radial vs Conic Gradient

Gradient แต่ละประเภทจับคู่สีกับเรขาคณิตต่างกัน การเลือกประเภทที่เหมาะสมขึ้นอยู่กับเอฟเฟกต์ภาพที่ต้องการ ไม่ใช่ความแตกต่างด้านคุณภาพระหว่างกัน สำหรับพื้นหลังหน้าและตัวแบ่ง section ส่วนใหญ่ linear gradient เป็นตัวเลือกเริ่มต้นที่เหมาะสม — เข้าใจง่ายที่สุดและคาดเดาได้มากที่สุดในองค์ประกอบที่มีขนาดต่างกัน Radial และ conic gradient เหมาะสำหรับเอฟเฟกต์ภาพเฉพาะที่เรขาคณิตแบบวงกลมหรือการหมุนมีความหมาย

linear-gradient()
สีเปลี่ยนผ่านตามเส้นตรงที่กำหนดด้วยมุม (0deg = ล่างขึ้นบน, 90deg = ซ้ายไปขวา) หรือคีย์เวิร์ด เช่น 'to right' เป็นประเภทที่ใช้บ่อยที่สุด สำหรับพื้นหลัง overlay และตัวบ่งชี้ความคืบหน้า รองรับจุดหยุดสีหลายจุดที่ตำแหน่งใดก็ได้
radial-gradient()
สีแผ่ออกจากจุดศูนย์กลางเป็นวงกลมหรือวงรี ควบคุมรูปร่าง ขนาด และตำแหน่งศูนย์กลางด้วยไวยากรณ์ เหมาะสำหรับเอฟเฟกต์ spotlight, vignette และองค์ประกอบ UI แบบวงกลม เช่น badge หรือวงแหวน avatar
conic-gradient()
สีหมุนรอบจุดศูนย์กลางเหมือนเข็มนาฬิกา มุมเริ่มต้นปรับได้ด้วย 'from Xdeg' เหมาะสำหรับส่วนของ pie chart, วงล้อสี และตัวบ่งชี้การโหลดแบบหมุน ต้องมีอย่างน้อยสองจุดหยุด การทำซ้ำสีแรกที่ท้ายสร้างลูปต่อเนื่อง

ตัวอย่างโค้ด

ตัวอย่างการสร้างและใช้ CSS gradient ด้วยโปรแกรมใน JavaScript, Python, CSS และ Go แต่ละตัวอย่างสร้างสตริง CSS gradient ที่ถูกต้องซึ่งสามารถใช้ใน stylesheet หรือ inline style ได้โดยตรง

JavaScript
// Generate a CSS linear-gradient string from an array of stops
function buildGradient(angle, stops) {
  const parts = stops.map(s => `${s.color} ${s.position}%`)
  return `linear-gradient(${angle}deg, ${parts.join(', ')})`
}

const stops = [
  { color: '#6366f1', position: 0 },
  { color: '#ec4899', position: 50 },
  { color: '#f59e0b', position: 100 },
]
buildGradient(90, stops)
// -> "linear-gradient(90deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%)"

// Apply to an element
document.querySelector('.hero').style.background = buildGradient(135, stops)
Python
# Generate a CSS gradient string for use in templates or SVGs
def build_gradient(angle: int, stops: list[tuple[str, int]]) -> str:
    parts = [f"{color} {pos}%" for color, pos in stops]
    return f"linear-gradient({angle}deg, {', '.join(parts)})"

stops = [("#6366f1", 0), ("#ec4899", 50), ("#f59e0b", 100)]
print(build_gradient(135, stops))
# -> "linear-gradient(135deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%)"

# Interpolate N colors between two endpoints
def interpolate_hex(c1: str, c2: str, steps: int) -> list[str]:
    r1, g1, b1 = int(c1[1:3], 16), int(c1[3:5], 16), int(c1[5:7], 16)
    r2, g2, b2 = int(c2[1:3], 16), int(c2[3:5], 16), int(c2[5:7], 16)
    return [
        f"#{int(r1+(r2-r1)*i/(steps-1)):02x}"
        f"{int(g1+(g2-g1)*i/(steps-1)):02x}"
        f"{int(b1+(b2-b1)*i/(steps-1)):02x}"
        for i in range(steps)
    ]

interpolate_hex("#6366f1", "#f59e0b", 4)
# -> ['#6366f1', '#9a7399', '#d18042', '#f59e0b']
CSS
/* Linear gradient — left to right */
.hero {
  background: linear-gradient(90deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%);
}

/* Radial gradient — circular spotlight */
.badge {
  background: radial-gradient(circle at 30% 30%, #6366f1, #312e81);
}

/* Conic gradient — color wheel */
.wheel {
  background: conic-gradient(from 0deg, #ef4444, #f59e0b, #22c55e, #3b82f6, #8b5cf6, #ef4444);
  border-radius: 50%;
}

/* Multi-stop with transparency */
.overlay {
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.6) 60%,
    rgba(0, 0, 0, 0.9) 100%
  );
}

/* Repeating stripes */
.stripes {
  background: repeating-linear-gradient(
    45deg,
    #6366f1 0 10px,
    transparent 10px 20px
  );
}
Go
package main

import "fmt"

// Stop represents one color stop in a gradient.
type Stop struct {
	Color    string
	Position int // percent 0-100
}

func buildGradient(angle int, stops []Stop) string {
	result := fmt.Sprintf("linear-gradient(%ddeg", angle)
	for _, s := range stops {
		result += fmt.Sprintf(", %s %d%%", s.Color, s.Position)
	}
	return result + ")"
}

func main() {
	stops := []Stop{
		{"#6366f1", 0},
		{"#ec4899", 50},
		{"#f59e0b", 100},
	}
	fmt.Println(buildGradient(135, stops))
	// -> "linear-gradient(135deg, #6366f1 0%, #ec4899 50%, #f59e0b 100%)"
}

คำถามที่พบบ่อย

linear-gradient และ radial-gradient ต่างกันอย่างไร?
linear-gradient() เปลี่ยนสีตามเส้นตรงที่มุมที่กำหนด ในขณะที่ radial-gradient() เปลี่ยนสีออกจากจุดศูนย์กลางเป็นวงกลมหรือวงรี Linear gradient เป็นตัวเลือกมาตรฐานสำหรับพื้นหลังหน้าและ overlay Radial gradient เหมาะกว่าสำหรับเอฟเฟกต์ spotlight และองค์ประกอบ UI แบบวงกลม
จะกำหนดทิศทางของ linear gradient ได้อย่างไร?
ใช้มุมเป็นองศา (เช่น 90deg สำหรับซ้ายไปขวา, 180deg สำหรับบนลงล่าง) หรือคีย์เวิร์ด (to right, to bottom left) มุมหมุนตามเข็มนาฬิกาจากด้านล่าง 0deg ชี้ขึ้น และ 90deg ชี้ขวา คุณยังสามารถใช้ 'to top right' เพื่อกำหนดเป้าหมายเป็นมุม และเบราว์เซอร์จะคำนวณมุมที่แน่นอนตามอัตราส่วนของ element
สามารถทำ animation กับ CSS gradient ได้ไหม?
เบราว์เซอร์ไม่สามารถคำนวณค่าระหว่างค่า gradient สองค่าโดยตรงด้วย CSS transition วิธีแก้ปัญหาที่พบบ่อย ได้แก่ การทำ animation กับ background-position ของ gradient ขนาดใหญ่กว่าปกติ การใช้ @property เพื่อทำ animation กับค่าจุดหยุดสีแต่ละจุดเป็น custom property หรือการใช้ opacity cross-fade บน pseudo-element แนวทาง @property (รองรับใน Chrome และ Edge ตั้งแต่ปี 2020, Firefox ตั้งแต่ปี 2024) เป็นทางออกที่สะอาดที่สุด
Gradient มีจุดหยุดสีได้กี่จุด?
ข้อกำหนด CSS ไม่กำหนดจำนวนสูงสุด เบราว์เซอร์รองรับ gradient ที่มีจุดหยุดหลายสิบจุดโดยไม่มีปัญหาด้านประสิทธิภาพ ในทางปฏิบัติ gradient ส่วนใหญ่ใช้ 2 ถึง 5 จุดหยุด แต่ละจุดหยุดสามารถระบุสีและตำแหน่งเป็นเปอร์เซ็นต์หรือความยาวได้ตามต้องการ คุณยังสามารถกำหนดสองตำแหน่งต่อจุดหยุดเพื่อสร้างแถบสีที่ชัดเจนโดยไม่มีการเปลี่ยนผ่าน
Gradient และภาพต่างกันอย่างไรใน CSS?
ใน CSS, gradient เป็น computed image มันใช้ rendering pipeline เดียวกับภาพ url() และสามารถใช้ได้ทุกที่ที่ค่าภาพถูกต้อง ทั้ง background-image, list-style-image, border-image และ mask-image ความแตกต่างคือ gradient ถูกสร้างโดยเบราว์เซอร์ในขณะแสดงผล ขยายได้ทุกขนาดโดยไม่สูญเสียคุณภาพ และไม่เพิ่มขนาดหน้าเลยเนื่องจากไม่มีการดาวน์โหลดไฟล์
จะสร้าง gradient ที่มีจุดหยุดสีแบบชัดเจน (ไม่มีการเปลี่ยนผ่าน) ได้อย่างไร?
วางจุดหยุดสีสองจุดที่ตำแหน่งเดียวกัน ตัวอย่างเช่น linear-gradient(to right, #6366f1 50%, #ec4899 50%) สร้างการแบ่งที่คมชัดโดยไม่มีการผสมสี คุณยังสามารถใช้ไวยากรณ์สองตำแหน่ง linear-gradient(to right, #6366f1 0% 50%, #ec4899 50% 100%) เพื่อกำหนดแต่ละแถบอย่างชัดเจน
ฟังก์ชัน conic-gradient รองรับในทุกเบราว์เซอร์ไหม?
conic-gradient() รองรับใน Chrome 69+, Firefox 83+, Safari 12.1+ และ Edge 79+ ณ ปี 2024 การรองรับของเบราว์เซอร์ทั่วโลกเกิน 95% ตามข้อมูลจาก Can I Use ไม่จำเป็นต้องใช้ vendor prefix สำหรับผู้ใช้ส่วนน้อยที่ใช้เบราว์เซอร์รุ่นเก่า ให้กำหนด background-color ทึบเป็น fallback ก่อนการประกาศ gradient