Dalam Ekonomi, kita akan mengetahui apa itu kurva permintaan dan kurva penawaran. Bagaimana contoh gambarnya, serta faktor apa saja yang mempengaruhi pergerakan dan pergeseran kurva? Simak penjelasannya di artikel Ekonomi kelas 10 berikut ini!
—
Hai, teman-teman! Sesuai judul, kali ini kita akan membahas tentang materi kurva permintaan dan kurva penawaran, nih! Tapi sebelumnya, kamu sudah pernah membaca artikel ‘Pengertian Fungsi Permintaan dan Penawaran‘, belum? Kalau belum, coba kamu baca dulu ya, supaya kamu bisa lebih paham dengan pembahasan pada artikel ini.
Dalam ilmu Ekonomi, kurva dibagi menjadi dua, yaitu kurva permintaan dan kurva penawaran. Nah, tugas kedua kurva ini adalah melihat bagaimana faktor-faktor tertentu dapat memengaruhi permintaan, penawaran, dan harga dari suatu barang.
Kita bahas satu per satu, yuk!
Apa itu Kurva Permintaan?
Bunyi hukum pada kurva permintaan adalah jika harga suatu barang turun, maka permintaan barang tersebut akan meningkat, dengan syarat ceteris paribus-nya atau faktor lain yang memengaruhi permintaan barang tersebut (selain harga), dianggap tidak berubah.
Kurva permintaan mempunyai gradien atau kemiringan atau slope negatif. Artinya, bentuk kurva permintaan akan menurun dari kiri atas ke kanan bawah. Hal ini menunjukkan bahwa hubungan antara harga dengan permintaan adalah berbanding terbalik.
Gambar Kurva Permintaan
Untuk menggambarkan kurva permintaan, coba kamu perhatikan contoh soal kurva permintaan pada tabel di bawah ini.
Baca Juga: Teori Permintaan dan Penawaran Uang
Pergerakan Kurva Permintaan
Nah, dalam teorinya, kurva permintaan juga bisa mengalami pergerakan dan pergeseran, lho! Pergerakan ini terjadi karena perubahan harga barang itu sendiri. Contohnya seperti yang tergambar pada infografik di bawah ini. Pada saat harga bakso Rp20.000,00, jumlah bakso yang diminta adalah sebesar 120 mangkok (titik A pada kurva permintaan).
Ketika harganya turun menjadi Rp18.000,00, mengakibatkan bertambahnya jumlah bakso yang diminta dari 120 mangkok menjadi 140 mangkok (titik A pada kurva permintaan bergerak ke kanan yaitu titik B), dan seterusnya. Jadi kesimpulannya, yang membuat kurva permintaan bergerak hanyalah harga barang itu sendiri.
Pergeseran Kurva Permintaan
Sementara itu, jika yang berubah adalah faktor lain, contohnya pendapatan, maka akan terjadi pergeseran kurva permintaan (shifting). Bila pendapatan meningkat, kurva permintaan bergeser sejajar ke kanan. Jika pendapatan menurun, kurva permintaan bergeser sejajar ke kiri. Contoh ini dapat diilustrasikan ke dalam kurva berikut ini.
Hubungan antara Faktor yang Mempengaruhi Permintaan dengan Pergeseran Kurva
Nah, supaya lebih mudah memahaminya, pengaruh masing-masing faktor yang memengaruhi permintaan terhadap pergerakan (movement) dan pergeseran (shifting) kurva permintaan dapat dirangkum dalam tabel berikut.
Pembahasan tentang kurva permintaan sudah, sekarang kita lanjut ke pembahasan tentang kurva penawaran, yuk!
—
Eits, tapi sebelum masuk ke pembahasan selanjutnya, mau ngasih info dulu nih, kalau Ruangguru punya fitur bernama ADAPTO yang bisa menyesuaikan dengan kecepatan belajarmu. Nah, pembahasan tentang kurva permintaan dan kurva penawaran ini juga sudah dilengkapi dengan fitur ADAPTO, lho! Jadi, jangan lupa cobain di aplikasi Ruangguru, ya!
Apa itu Kurva Penawaran?
Nah, selanjutnya kita bahas mengenai kurva penawaran. Kurva ini adalah kebalikan dari kurva permintaan. Bunyi hukum pada kurva penawaran adalah jika harga suatu barang naik, maka barang yang ditawarkan juga akan naik dengan syarat ceteris paribus.
Kurva penawaran memiliki gradien atau kemiringan atau slope positif. Artinya, hubungan antara harga dengan jumlah barang yang ditawarkan berbanding lurus. Bentuk kurva penawaran akan berjalan naik dari pojok kiri bawah ke pojok kanan atas.
Baca Juga: Faktor-Faktor yang Mempengaruhi Permintaan dan Penawaran Uang
Gambar Kurva Penawaran
Untuk menggambarkan kurva penawaran, coba kamu perhatikan contoh soal kurva penawaran pada tabel di bawah ini.
Pergerakan Kurva Penawaran
Seperti halnya kurva permintaan, kurva penawaran juga bisa bergerak dan bergeser. Kurva penawaran akan bergerak akibat perubahan harga barang itu sendiri. Sebagai contoh, dapat dilihat pada kurva penawaran di bawah ini.
Pada saat harga bakso Rp16.000,00, jumlah bakso yang ditawarkan adalah sebesar 160 mangkok (titik C pada kurva penawaran). Ketika harganya naik menjadi Rp18.000,00, mengakibatkan bertambahnya jumlah bakso yang ditawarkan dari 160 mangkok menjadi 180 mangkok (titik C pada kurva permintaan bergerak ke kanan ke titik B), dan seterusnya.
Pergeseran Kurva Penawaran
Sementara itu, jika yang berubah adalah faktor lain, sebagai contoh teknologi, maka akan terjadi pergeseran kurva permintaan (shifting). Bila teknologi meningkat (ditemukan teknologi baru yang semakin canggih yang memungkinkan produksi lebih banyak dan efisien), kurva penawaran bergeser sejajar ke kanan. Jika teknologi menurun, kurva penawaran bergeser sejajar ke kiri. Contoh ini dapat diilustrasikan dalam kurva berikut ini.
Baca Juga: Interaksi Pelaku Ekonomi yang Mempengaruhi Permintaan dan Penawaran
Hubungan antara Faktor yang Mempengaruhi Penawaran dengan Pergeseran Kurva
Oke, supaya kamu lebih mudah memahami mengenai pergerakan dan pergeseran kurva penawaran berdasarkan faktor-faktor yang mempengaruhinya, berikut tabel faktor-faktor yang mempengaruhi penawaran terhadap pergerakan (movement) dan pergeseran (shifting) kurva penawaran:
—
Nah, selesai sudah materi kali ini mengenai kurva permintaan dan kurva penawaran, meliputi pengertian, contoh, serta faktor-faktor yang mempengaruhi pergerakan dan pergeserannya.
Kalau masih ada yang belum kamu mengerti tentang pembahasan di atas, yuk langsung tanyakan sama tutor dari Ruangguru melalui roboguru Plus. Di sana, kamu bisa tanya langsung sepuasnya mengenai materi yang belum kamu mengerti. Selain itu, di roboguru Plus juga ada banyak tutor mapel lain yang pastinya asyik diajak berdiskusi. Yuk, cobain sekarang!
Referensi:
Alam, S. (2016). Ekonomi untuk SMA dan MA Kelas X. Jakarta: Erlangga.
Artikel ini telah diperbarui pada 2 Mei 2023.
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta author="viewport" content="Ruangguru Tech Team">
<title>Kurva Permintaan & Penawaran serta Faktor yang Mempengaruhi</title>
<link rel="shortcut icon" href="https://cdn-web-2.ruangguru.com/homepage-web/public/assets/icons/favicon.id.ico" type="image/x-icon" />
<!-- <link rel="profile" href="https://gmpg.org/xfn/11"> -->
<link rel="pingback" href="https://www.ruangguru.com/blog/xmlrpc.php">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://www.ruangguru.com/blog/wp-content/themes/ruangguru/css/bootstrap.min.css">
<link rel="stylesheet" href="https://www.ruangguru.com/blog/wp-content/themes/ruangguru/css/style.css">
<script src="https://www.ruangguru.com/blog/wp-content/themes/ruangguru/js/jquery-3.6.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://www.ruangguru.com/blog/wp-content/themes/ruangguru/js/bootstrap.min.js"></script>
<script src="https://www.ruangguru.com/blog/wp-content/themes/ruangguru/js/main.js"></script>
<script src="https://www.ruangguru.com/blog/wp-content/themes/ruangguru/js/side-banner.js"></script>
<!-- Google Tag Manager -->
<meta name="google-site-verification" content="VJAn1g6wmtTZPpTXh-B4xoSFEkUi5jcV74xQSr6jnOM" />
<!-- <script>
document.querySelector('meta[name="author"]').setAttribute("content", "Ruangguru Tech Team");
</script> -->
<meta name="publisher" content="PT Ruang Raya Indonesia">
<!-- Google Tag Manager -->
<script>
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-PVNLZFT');
</script>
<!-- End Google Tag Manager -->
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
<!-- This site is optimized with the Yoast SEO plugin v25.9 - https://yoast.com/wordpress/plugins/seo/ -->
<meta name="description" content="Apa itu kurva permintaan dan kurva penawaran? Faktor apa saja yang mempengaruhi pergerakan dan pergeseran kurva? Simak penjelasan lengkapnya berikut ini!" />
<link rel="canonical" href="https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Kurva Permintaan & Penawaran serta Faktor yang Mempengaruhi" />
<meta property="og:description" content="Apa itu kurva permintaan dan kurva penawaran? Faktor apa saja yang mempengaruhi pergerakan dan pergeseran kurva? Simak penjelasan lengkapnya berikut ini!" />
<meta property="og:url" content="https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya" />
<meta property="og:site_name" content="Belajar Gratis di Rumah Kapan Pun! | Blog Ruangguru" />
<meta property="article:publisher" content="https://www.facebook.com/ruanggurucom/" />
<meta property="article:published_time" content="2025-09-29T02:00:00+00:00" />
<meta property="article:modified_time" content="2025-09-29T02:38:51+00:00" />
<meta name="author" content="Seno Aji" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:creator" content="@ruangguru" />
<meta name="twitter:site" content="@ruangguru" />
<meta name="twitter:label1" content="Written by" />
<meta name="twitter:data1" content="Seno Aji" />
<meta name="twitter:label2" content="Est. reading time" />
<meta name="twitter:data2" content="6 minutes" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya","url":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya","name":"Kurva Permintaan & Penawaran serta Faktor yang Mempengaruhi","isPartOf":{"@id":"https://www.ruangguru.com/blog/#website"},"primaryImageOfPage":{"@id":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya#primaryimage"},"image":{"@id":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya#primaryimage"},"thumbnailUrl":"https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/859fe99d-45a6-4908-af3d-9e4485d913e9.png","datePublished":"2025-09-29T02:00:00+00:00","dateModified":"2025-09-29T02:38:51+00:00","author":{"@id":"https://www.ruangguru.com/blog/#/schema/person/32cd593ab9730b0359256db53a47dda5"},"description":"Apa itu kurva permintaan dan kurva penawaran? Faktor apa saja yang mempengaruhi pergerakan dan pergeseran kurva? Simak penjelasan lengkapnya berikut ini!","breadcrumb":{"@id":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya#primaryimage","url":"https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/859fe99d-45a6-4908-af3d-9e4485d913e9.png","contentUrl":"https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/859fe99d-45a6-4908-af3d-9e4485d913e9.png"},{"@type":"BreadcrumbList","@id":"https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.ruangguru.com/blog"},{"@type":"ListItem","position":2,"name":"Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10"}]},{"@type":"WebSite","@id":"https://www.ruangguru.com/blog/#website","url":"https://www.ruangguru.com/blog/","name":"Ruangguru Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.ruangguru.com/blog/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https://www.ruangguru.com/blog/#/schema/person/32cd593ab9730b0359256db53a47dda5","name":"Seno Aji","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.ruangguru.com/blog/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/?s=96&d=mm&r=g","caption":"Seno Aji"},"url":"https://www.ruangguru.com/blog/author/seno-aji"}]}</script>
<!-- / Yoast SEO plugin. -->
<link rel="alternate" type="application/rss+xml" title="Belajar Gratis di Rumah Kapan Pun! | Blog Ruangguru » Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10 Comments Feed" href="https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya/feed" />
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.ruangguru.com\/blog\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.8.1"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\ud83d\udd25","\ud83d\udc26\u200b\ud83d\udd25")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<style id='wp-emoji-styles-inline-css' type='text/css'>
img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://www.ruangguru.com/blog/wp-includes/css/dist/block-library/style.min.css?ver=6.8.1' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel="https://api.w.org/" href="https://www.ruangguru.com/blog/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.ruangguru.com/blog/wp-json/wp/v2/posts/34" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.ruangguru.com/blog/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.8.1" />
<link rel='shortlink' href='https://www.ruangguru.com/blog/?p=34' />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.ruangguru.com/blog/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.ruangguru.com%2Fblog%2Fkurva-penawaran-permintaan-pergerakan-serta-pergeserannya" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.ruangguru.com/blog/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.ruangguru.com%2Fblog%2Fkurva-penawaran-permintaan-pergerakan-serta-pergeserannya&format=xml" />
</head>
<body class="wp-singular post-template-default single single-post postid-34 single-format-standard wp-theme-ruangguru">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M28L4XJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<header class="header">
<div class="container">
<nav class="navbar navbar-expand-lg header-inner">
<div style="display:flex; gap:12px;">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<img alt="menu" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/beba4a70-3971-41be-9364-f9ee6857b192.svg" loading="lazy" width="30px" height="32px" />
</button>
<a href="https://ruangguru.com" class="header-logo">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com/static/logo-ruangguru.png" alt="Logo">
</a>
</div>
<form class="form-inline my-2 my-lg-0" role="search" method="get" id="searchformmobile" class="searchform" action="https://www.ruangguru.com/blog/">
<div>
<label class="screen-reader-text" for="s">Search for:</label>
<div class="input-group input-group-sm">
<span class="input-group-text" id="search-2"><img width="20px" height="20px" loading="lazy" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/baf38d7b-226b-4374-8b2b-e49766395871.png" alt="" /></span>
<input type="text" value="" name="s" class="form-control" placeholder="Cari artikel di sini!" aria-label="Cari artikel di sini!" aria-describedby="Cari artikel di sini!">
</div>
</div>
</form>
<div class="collapse navbar-collapse dropdown-hover-all" id="navbarSupportedContent">
<div class="d-lg-none navbar-head-collapse">
<a href="https://ruangguru.com" class="header-logo">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com/static/logo-ruangguru.png" alt="Logo">
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
X
</button>
</div>
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link" href="https://www.ruangguru.com/blog/">Blog</a>
</li>
<li class="nav-item
dropdown dropdown-hover">
<p class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Konsep & Tips Pelajaran </p>
<div class="dropdown-menu" aria-labelledby="nav1">
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu0" href="https://www.ruangguru.com/blog/c/bahasa-indonesia" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Bahasa Indonesia</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu0">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-sd-kelas-4">Kelas 4</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-sd-kelas-5">Kelas 5</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-sd-kelas-6">Kelas 6</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-indonesia/bahasa-indonesia-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu1" href="https://www.ruangguru.com/blog/c/bahasa-inggris" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Bahasa Inggris</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu1">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-sd-kelas-6">Kelas 6</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/bahasa-inggris/bahasa-inggris-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu2" href="https://www.ruangguru.com/blog/c/biologi" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Biologi</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu2">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/biologi/biologi-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/biologi/biologi-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/biologi/biologi-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/biologi/biologi-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/biologi/biologi-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/biologi/biologi-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu3" href="https://www.ruangguru.com/blog/c/ekonomi" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Ekonomi</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu3">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu4" href="https://www.ruangguru.com/blog/c/fisika" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Fisika</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu4">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/fisika/fisika-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/fisika/fisika-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/fisika/fisika-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/fisika/fisika-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/fisika/fisika-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/fisika/fisika-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu5" href="https://www.ruangguru.com/blog/c/geografi" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Geografi</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu5">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/geografi/geografi-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/geografi/geografi-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/geografi/geografi-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/geografi/geografi-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/geografi/geografi-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/geografi/geografi-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu6" href="https://www.ruangguru.com/blog/c/ipa-terpadu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">IPA Terpadu</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu6">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ipa-terpadu/ipa-terpadu-sd-kelas-4">Kelas 4</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ipa-terpadu/ipa-terpadu-sd-kelas-5">Kelas 5</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ipa-terpadu/ipa-terpadu-sd-kelas-6">Kelas 6</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu7" href="https://www.ruangguru.com/blog/c/ips-terpadu" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">IPS Terpadu</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu7">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ips-terpadu/ips-terpadu-sd-kelas-4">Kelas 4</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ips-terpadu/ips-terpadu-sd-kelas-5">Kelas 5</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/ips-terpadu/ips-terpadu-sd-kelas-6">Kelas 6</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu8" href="https://www.ruangguru.com/blog/c/kimia" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Kimia</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu8">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/kimia/kimia-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/kimia/kimia-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/kimia/kimia-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu9" href="https://www.ruangguru.com/blog/c/matematika" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Matematika</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu9">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-sd-kelas-4">Kelas 4</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-sd-kelas-5">Kelas 5</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-sd-kelas-6">Kelas 6</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/matematika/matematika-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu10" href="https://www.ruangguru.com/blog/c/sejarah" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Sejarah</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu10">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sejarah/sejarah-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sejarah/sejarah-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sejarah/sejarah-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sejarah/sejarah-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sejarah/sejarah-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sejarah/sejarah-sma-kelas-12">Kelas 12</a>
</div>
</div>
<div class="dropdown dropend">
<a class="dropdown-item dropdown-toggle" id="nav1-menu11" href="https://www.ruangguru.com/blog/c/sosiologi" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Sosiologi</a>
<div class="dropdown-menu" aria-labelledby="nav1-menu11">
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sosiologi/sosiologi-smp-kelas-7">Kelas 7</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sosiologi/sosiologi-smp-kelas-8">Kelas 8</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sosiologi/sosiologi-smp-kelas-9">Kelas 9</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sosiologi/sosiologi-sma-kelas-10">Kelas 10</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sosiologi/sosiologi-sma-kelas-11">Kelas 11</a>
<a class="dropdown-item" href="https://www.ruangguru.com/blog/c/sosiologi/sosiologi-sma-kelas-12">Kelas 12</a>
</div>
</div>
</div>
</li>
<li class="nav-item
dropdown dropdown-hover">
<p class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Latihan Soal </p>
<div class="dropdown-menu" aria-labelledby="nav2">
<a class="dropdown-item" id="nav2-menu0" href="https://www.ruangguru.com/blog/c/latihan-soal/sd-kelas-4">Latihan Soal Kelas 4</a>
<a class="dropdown-item" id="nav2-menu1" href="https://www.ruangguru.com/blog/c/latihan-soal/sd-kelas-5">Latihan Soal Kelas 5</a>
<a class="dropdown-item" id="nav2-menu2" href="https://www.ruangguru.com/blog/c/latihan-soal/sd-kelas-6">Latihan Soal Kelas 6</a>
<a class="dropdown-item" id="nav2-menu3" href="https://www.ruangguru.com/blog/c/latihan-soal/smp-kelas-7">Latihan Soal Kelas 7</a>
<a class="dropdown-item" id="nav2-menu4" href="https://www.ruangguru.com/blog/c/latihan-soal/smp-kelas-8">Latihan Soal Kelas 8</a>
<a class="dropdown-item" id="nav2-menu5" href="https://www.ruangguru.com/blog/c/latihan-soal/smp-kelas-9">Latihan Soal Kelas 9</a>
<a class="dropdown-item" id="nav2-menu6" href="https://www.ruangguru.com/blog/c/latihan-soal/sma-kelas-10">Latihan Soal Kelas 10</a>
<a class="dropdown-item" id="nav2-menu7" href="https://www.ruangguru.com/blog/c/latihan-soal/sma-kelas-11">Latihan Soal Kelas 11</a>
<a class="dropdown-item" id="nav2-menu8" href="https://www.ruangguru.com/blog/c/latihan-soal/sma-kelas-12">Latihan Soal Kelas 12</a>
</div>
</li>
<li class="nav-item
dropdown dropdown-hover">
<p class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Pojok Kampus </p>
<div class="dropdown-menu" aria-labelledby="nav3">
<a class="dropdown-item" id="nav3-menu0" href="https://www.ruangguru.com/blog/c/info-beasiswa">Info Beasiswa</a>
<a class="dropdown-item" id="nav3-menu1" href="https://www.ruangguru.com/blog/c/kampus-dan-jurusan">Kampus dan Jurusan</a>
<a class="dropdown-item" id="nav3-menu2" href="https://www.ruangguru.com/blog/c/seleksi-masuk">Seleksi Masuk</a>
</div>
</li>
<li class="nav-item
">
<a class="nav-link
" href=" https://www.ruangguru.com/blog/c/fakta-seru" id="nav4"
>
Fakta Seru </a>
</li>
<li class="nav-item
dropdown dropdown-hover">
<p class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dunia Kata </p>
<div class="dropdown-menu" aria-labelledby="nav5">
<a class="dropdown-item" id="nav5-menu0" href="https://www.ruangguru.com/blog/tag/cerpen">Cerpen</a>
<a class="dropdown-item" id="nav5-menu1" href="https://www.ruangguru.com/blog/tag/resensi-buku">Resensi Buku</a>
</div>
</li>
<li class="nav-item
">
<a class="nav-link
" href=" https://www.ruangguru.com/blog/tag/for-kids" id="nav6"
>
For Kids </a>
</li>
<li class="nav-item
dropdown dropdown-hover">
<p class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Seputar Ruangguru </p>
<div class="dropdown-menu" aria-labelledby="nav7">
<a class="dropdown-item" id="nav7-menu0" href="https://www.ruangguru.com/blog/tag/info-ruangguru">Info Ruangguru</a>
<a class="dropdown-item" id="nav7-menu1" href="https://www.ruangguru.com/blog/tag/siaran-pers">Siaran Pers</a>
<a class="dropdown-item" id="nav7-menu2" href="https://www.ruangguru.com/blog/tag/cerita-juara">Cerita Juara</a>
<a class="dropdown-item" id="nav7-menu3" href="https://www.ruangguru.com/blog/tag/seputar-guru">Seputar Guru</a>
<a class="dropdown-item" id="nav7-menu4" href="https://www.ruangguru.com/blog/tag/lifeatruangguru">Life at Ruangguru</a>
</div>
</li>
</ul>
<form class="form-inline my-2 my-lg-0" role="search" method="get" id="searchform" class="searchform" action="https://www.ruangguru.com/blog/">
<div>
<label class="screen-reader-text" for="s">Search for:</label>
<div class="input-group input-group-sm">
<span class="input-group-text" id="search-2"><img width="10" height="10" loading="lazy" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/baf38d7b-226b-4374-8b2b-e49766395871.png" alt="" /></span>
<input type="text" value="" name="s" class="form-control" placeholder="Cari artikel di sini!" aria-label="Cari artikel di sini!" aria-describedby="Cari artikel di sini!">
</div>
</div>
</form>
</div>
</nav>
<script>
(function($bs) {
const CLASS_NAME = 'has-child-dropdown-show';
$bs.Dropdown.prototype.toggle = function(_orginal) {
return function() {
document.querySelectorAll('.' + CLASS_NAME).forEach(function(e) {
e.classList.remove(CLASS_NAME);
});
let dd = this._element.closest('.dropdown').parentNode.closest('.dropdown');
for (; dd && dd !== document; dd = dd.parentNode.closest('.dropdown')) {
dd.classList.add(CLASS_NAME);
}
return _orginal.call(this);
}
}($bs.Dropdown.prototype.toggle);
document.querySelectorAll('.dropdown').forEach(function(dd) {
dd.addEventListener('hide.bs.dropdown', function(e) {
if (this.classList.contains(CLASS_NAME)) {
this.classList.remove(CLASS_NAME);
e.preventDefault();
}
e.stopPropagation(); // do not need pop in multi level mode
});
});
// for hover
document.querySelectorAll('.dropdown-hover, .dropdown-hover-all .dropdown').forEach(function(dd) {
dd.addEventListener('mouseenter', function(e) {
let toggle = e.target.querySelector(':scope>[data-bs-toggle="dropdown"]');
if (!toggle.classList.contains('show')) {
$bs.Dropdown.getOrCreateInstance(toggle).toggle();
dd.classList.add(CLASS_NAME);
$bs.Dropdown.clearMenus(e);
}
});
dd.addEventListener('mouseleave', function(e) {
let toggle = e.target.querySelector(':scope>[data-bs-toggle="dropdown"]');
if (toggle.classList.contains('show')) {
$bs.Dropdown.getOrCreateInstance(toggle).toggle();
}
});
});
})(bootstrap);
$(document).ready(() => {
if ($(window).width() > 991) {
$("a[data-bs-toggle='dropdown']").click(function() {
window.location = $(this).attr('href');
});
}
})
</script>
</div>
</header>
<div class="main-content">
<div class="side-banner-mobile">
</div>
<div class="glider-navigation mobile">
<div role="tablist" class="dots" id="side-banner-mobile-dots"></div>
<div class="glider-button-navigation">
<button aria-label="Previous" class="glider-prev" id="side-banner-mobile-prev"><img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/412de767-9fab-4a4e-9a21-09b7ac9c5f96.png"></button>
<button aria-label="Next" class="glider-next" id="side-banner-mobile-next">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/754b0134-4f20-4cdd-af8c-d5918044d734.png">
</button>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-8 post">
<div class="content">
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<!-- Home Link -->
<li class="breadcrumb-item"><a href="https://www.ruangguru.com/blog">Home</a></li>
<!-- Categories -->
<li class="breadcrumb-item"><a href="https://www.ruangguru.com/blog/c/ekonomi">Ekonomi</a></li><li class="breadcrumb-item"><a href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-sma-kelas-10">Ekonomi SMA Kelas 10</a></li> </ol>
</nav>
<h1 class="content-title">
Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10 </h1>
<div class="content-meta">
<p class="content-author"><a href="https://www.ruangguru.com/blog/author/seno-aji" class="">Seno Aji</a> </p>
<p class="content-info"><span>September 29, 2025 • </span> <span>5 minutes read</span></p>
<br />
</div>
<div class="content-body">
<p><span style="color: #000000;"><img decoding="async" style="height: auto; max-width: 100%; width: 820px; margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/859fe99d-45a6-4908-af3d-9e4485d913e9.png" alt="kurva permintaan dan kurva penawaran" /></span></p>
<p style="text-align: center;"><em>Dalam Ekonomi, kita akan mengetahui apa itu kurva permintaan dan kurva penawaran. Bagaimana contoh gambarnya, serta faktor apa saja yang mempengaruhi pergerakan dan pergeseran kurva? Simak penjelasannya di <a href="https://www.ruangguru.com/blog/c/ekonomi/ekonomi-sma-kelas-10" rel="noopener"><strong>artikel Ekonomi kelas 10</strong></a> berikut ini!</em></p>
<p style="text-align: center; font-size: 16px;">—</p>
<p> </p>
<p style="text-align: justify;">Hai, teman-teman! Sesuai judul, kali ini kita akan membahas tentang <span style="font-weight: bold;">materi kurva permintaan dan kurva penawaran</span>, nih! Tapi sebelumnya, kamu sudah pernah membaca artikel ‘<a style="font-weight: bold;" href="/blog/fungsi-permintaan-dan-penawaran" rel="noopener">Pengertian Fungsi Permintaan dan Penawaran</a>‘, belum? Kalau belum, coba kamu baca dulu ya, supaya kamu bisa lebih paham dengan pembahasan pada artikel ini.</p>
<p style="text-align: justify;">Dalam ilmu Ekonomi, kurva dibagi menjadi dua, yaitu kurva permintaan dan kurva penawaran. Nah, tugas kedua kurva ini adalah melihat bagaimana <span style="font-weight: bold;">faktor-faktor tertentu dapat memengaruhi permintaan, penawaran, dan harga</span> dari suatu barang.</p>
<p style="text-align: justify;">Kita bahas satu per satu, yuk!</p>
<p> </p>
<h2><span style="font-size: 18pt;">Apa itu Kurva Permintaan?</span></h2>
<p style="text-align: justify;">Bunyi hukum pada <span style="font-weight: bold;">kurva permintaan adalah</span> jika harga suatu barang turun, maka permintaan barang tersebut akan meningkat, dengan syarat ceteris paribus-nya atau faktor lain yang memengaruhi permintaan barang tersebut (selain harga), dianggap tidak berubah.</p>
<p style="text-align: justify;">Kurva permintaan mempunyai gradien atau kemiringan atau slope negatif. Artinya, <span style="font-weight: bold;">bentuk kurva permintaan akan menurun dari kiri atas ke kanan bawah</span>. Hal ini menunjukkan bahwa hubungan antara harga dengan permintaan adalah berbanding terbalik.</p>
<p> </p>
<h2 style="text-align: justify;"><span style="font-size: 18pt;">Gambar Kurva Permintaan</span></h2>
<p>Untuk menggambarkan kurva permintaan, coba kamu perhatikan contoh soal kurva permintaan pada tabel di bawah ini.</p>
<p><img decoding="async" style="height: auto; max-width: 100%; width: 600px; margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/8594cfbf-9f12-4d6c-8a3b-17c751150a72.png" alt="contoh kurva permintaan" /></p>
<p> </p>
<p style="font-weight: bold;">Baca Juga: <a href="/blog/ekonomi-kelas-11-teori-permintaan-dan-penawaran-uang" rel="noopener">Teori Permintaan dan Penawaran Uang</a></p>
<p> </p>
<h2 style="text-align: justify;"><span style="font-size: 18pt;">Pergerakan Kurva Permintaan</span></h2>
<p style="text-align: justify;">Nah, dalam teorinya, kurva permintaan juga bisa mengalami pergerakan dan pergeseran, lho! Pergerakan ini terjadi karena perubahan harga barang itu sendiri. Contohnya seperti yang tergambar pada infografik di bawah ini. Pada saat harga bakso Rp20.000,00, jumlah bakso yang diminta adalah sebesar 120 mangkok (titik A pada kurva permintaan).</p>
<p style="text-align: justify;">Ketika harganya turun menjadi Rp18.000,00, mengakibatkan bertambahnya jumlah bakso yang diminta dari 120 mangkok menjadi 140 mangkok (titik A pada kurva permintaan bergerak ke kanan yaitu titik B), dan seterusnya. Jadi kesimpulannya, <span style="font-weight: bold;">yang membuat kurva permintaan bergerak hanyalah harga barang itu sendiri</span>.</p>
<p style="text-align: justify;"><img decoding="async" style="margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/87818df9-48ec-44ea-97dc-e48ec3c168c2.png" alt="pergerakan kurva permintaan" /></p>
<p> </p>
<h2 style="text-align: justify;"><span style="font-size: 18pt;">Pergeseran Kurva Permintaan</span></h2>
<p style="text-align: justify;">Sementara itu, jika yang berubah adalah faktor lain, contohnya <span style="font-weight: bold;">pendapatan</span>, maka akan terjadi <span style="font-weight: bold;">pergeseran kurva permintaan</span> (<em>shifting</em>). Bila pendapatan meningkat, kurva permintaan bergeser sejajar ke kanan. Jika pendapatan menurun, kurva permintaan bergeser sejajar ke kiri. Contoh ini dapat diilustrasikan ke dalam kurva berikut ini.</p>
<p><img fetchpriority="high" decoding="async" style="margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/251c8f84-b427-4451-8a0f-18e3689a8621.png" alt="pergeseran kurva permintaan" width="600" height="400" /></p>
<p> </p>
<h2 style="text-align: justify;"><span style="font-size: 18pt;">Hubungan antara Faktor yang Mempengaruhi Permintaan dengan Pergeseran Kurva</span></h2>
<p style="text-align: justify;">Nah, supaya lebih mudah memahaminya, pengaruh masing-masing faktor yang memengaruhi permintaan terhadap pergerakan (<em>movement</em>) dan pergeseran (<em>shifting</em>) kurva permintaan dapat dirangkum dalam tabel berikut.</p>
<p><span style="color: #000000;"><img decoding="async" style="height: auto; max-width: 100%; width: 600px; margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/136ffdb9-1619-4c7b-95b1-2331333229cf.png" alt="Hubungan antara Faktor yang Mempengaruhi Permintaan dengan Pergeseran Kurva" /></span></p>
<p> </p>
<p style="text-align: justify;">Pembahasan tentang kurva permintaan sudah, sekarang kita lanjut ke pembahasan tentang kurva penawaran, yuk!</p>
<p style="text-align: center;">—</p>
<p style="text-align: center;"><em>Eits, tapi sebelum masuk ke pembahasan selanjutnya, mau ngasih info dulu nih, kalau Ruangguru punya fitur bernama <span style="font-weight: bold;">ADAPTO </span>yang bisa menyesuaikan dengan kecepatan belajarmu. Nah, pembahasan tentang kurva permintaan dan kurva penawaran ini juga sudah dilengkapi dengan fitur ADAPTO, lho! Jadi, jangan lupa cobain di aplikasi Ruangguru, ya!</em></p>
<p><span style="color: #000000;"><a class="rg-cta" style="text-align: center;" href="https://link.ruangguru.com/blPk/39940b84" target="_blank" rel="noopener"><img decoding="async" class="aligncenter" src="https://cdn-web.ruangguru.com/landing-pages/assets/cta/5a2e155b-2bf0-40bf-8b0a-a0a498e7732d.jpeg" alt="IDN CTA Blog Adapto Ruangguru 2022" width="820" height="200" /></a></span></p>
<p> </p>
<h2 style="text-align: justify;"><span style="font-size: 18pt;">Apa itu Kurva Penawaran?</span></h2>
<p style="text-align: justify;">Nah, selanjutnya kita bahas mengenai kurva penawaran. Kurva ini adalah kebalikan dari kurva permintaan. Bunyi hukum pada <span style="font-weight: bold;">kurva penawaran adalah</span> jika harga suatu barang naik, maka barang yang ditawarkan juga akan naik dengan syarat ceteris paribus.</p>
<p style="text-align: justify;">Kurva penawaran memiliki gradien atau kemiringan atau slope positif. Artinya, hubungan antara harga dengan jumlah barang yang ditawarkan berbanding lurus. <span style="font-weight: bold;">Bentuk kurva penawaran akan berjalan naik dari pojok kiri bawah ke pojok kanan atas</span>.</p>
<p style="font-weight: bold; text-align: justify;">Baca Juga: <a href="/blog/faktor-faktor-yang-memengaruhi-permintaan-dan-penawaran-uang.docx" rel="noopener">Faktor-Faktor yang Mempengaruhi Permintaan dan Penawaran Uang</a></p>
<p> </p>
<h2><span style="font-size: 18pt;">Gambar Kurva Penawaran</span></h2>
<p>Untuk menggambarkan kurva penawaran, coba kamu perhatikan contoh soal kurva penawaran pada tabel di bawah ini.</p>
<p><img decoding="async" style="margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/7ab5109d-4538-49ef-9c2b-797ae7e9e3f6.png" alt="contoh kurva penawaran" /></p>
<p> </p>
<h2 style="text-align: justify;"><span style="font-size: 18pt;">Pergerakan Kurva Penawaran</span></h2>
<p style="text-align: justify;">Seperti halnya kurva permintaan, kurva penawaran juga bisa bergerak dan bergeser. <span style="font-weight: bold;">Kurva penawaran akan bergerak akibat perubahan harga barang itu sendiri</span>. Sebagai contoh, dapat dilihat pada kurva penawaran di bawah ini.</p>
<p style="text-align: justify;">Pada saat harga bakso Rp16.000,00, jumlah bakso yang ditawarkan adalah sebesar 160 mangkok (titik C pada kurva penawaran). Ketika harganya naik menjadi Rp18.000,00, mengakibatkan bertambahnya jumlah bakso yang ditawarkan dari 160 mangkok menjadi 180 mangkok (titik C pada kurva permintaan bergerak ke kanan ke titik B), dan seterusnya.</p>
<p style="text-align: justify;"><img decoding="async" style="margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/a5bbf106-ea1e-4bdc-9d41-86ef287d0aed.png" alt="pergerakan kurva penawaran" /></p>
<p> </p>
<h2 style="font-size: 20px;"><span style="font-size: 18pt;">Pergeseran Kurva Penawaran</span></h2>
<p style="text-align: justify;">Sementara itu, jika yang berubah adalah faktor lain, sebagai contoh <span style="font-weight: bold;">teknologi</span>, maka akan terjadi <span style="font-weight: bold;">pergeseran kurva permintaan</span> (<em>shifting</em>). Bila teknologi meningkat (ditemukan teknologi baru yang semakin canggih yang memungkinkan produksi lebih banyak dan efisien), kurva penawaran bergeser sejajar ke kanan. Jika teknologi menurun, kurva penawaran bergeser sejajar ke kiri. Contoh ini dapat diilustrasikan dalam kurva berikut ini.</p>
<p><span style="color: #000000;"><img decoding="async" style="height: auto; max-width: 100%; width: 600px; margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/4c137af4-5618-444a-a6b5-e3ee416c2c69.png" alt="pergeseran kurva penawaran" /></span></p>
<p style="font-weight: bold;">Baca Juga: <a href="/blog/interaksi-pelaku-ekonomi-permintaan-dan-penawaran" rel="noopener">Interaksi Pelaku Ekonomi yang Mempengaruhi Permintaan dan Penawaran</a></p>
<p> </p>
<h2 style="font-size: 20px; text-align: justify;"><span style="font-size: 18pt;">Hubungan antara Faktor yang Mempengaruhi Penawaran dengan Pergeseran Kurva</span></h2>
<p style="text-align: justify;">Oke, supaya kamu lebih mudah memahami mengenai pergerakan dan pergeseran kurva penawaran berdasarkan faktor-faktor yang mempengaruhinya, berikut tabel faktor-faktor yang mempengaruhi penawaran terhadap pergerakan (<em>movement</em>) dan pergeseran (<em>shifting</em>) kurva penawaran:</p>
<p><span style="color: #000000;"><img decoding="async" style="height: auto; max-width: 100%; width: 600px; margin-left: auto; margin-right: auto; display: block;" src="https://cdn-web.ruangguru.com/landing-pages/assets/hs/Imported%20sitepage%20images/1d62d836-a2f0-4c19-8768-54c76ab8bda5.png" alt="Hubungan antara Faktor yang Mempengaruhi Penawaran dengan Pergeseran Kurva" /></span></p>
<p style="text-align: center;">—</p>
<p style="text-align: justify;">Nah, selesai sudah materi kali ini mengenai kurva permintaan dan kurva penawaran, meliputi pengertian, contoh, serta faktor-faktor yang mempengaruhi pergerakan dan pergeserannya.</p>
<p style="text-align: justify;">Kalau masih ada yang belum kamu mengerti tentang pembahasan di atas, yuk langsung tanyakan sama tutor dari Ruangguru melalui <span style="font-weight: bold;">roboguru Plus</span>. Di sana, kamu bisa tanya langsung sepuasnya mengenai materi yang belum kamu mengerti. Selain itu, di <span style="font-weight: bold;">roboguru Plus</span> juga ada banyak tutor mapel lain yang pastinya asyik diajak berdiskusi. Yuk, cobain sekarang!</p>
<p><a href="https://www.ruangguru.com/roboguruplus"><img decoding="async" class="aligncenter size-medium" src="https://cdn-web-2.ruangguru.com/landing-pages/assets/49506bbe-c45a-4c66-91f5-50c77e57f1f7.png" alt="CTA Roboguru Plus" /></a></p>
<p style="font-weight: bold;">Referensi:</p>
<p>Alam, S. (2016). Ekonomi untuk SMA dan MA Kelas X. Jakarta: Erlangga.</p>
<p> </p>
<p><em>Artikel ini telah diperbarui pada 2 Mei 2023.</em></p>
</div>
<div class="content-meta-tags">
<a href="https://www.ruangguru.com/blog/tag/ekonomi-x" rel="tag">Ekonomi X</a> <a href="https://www.ruangguru.com/blog/tag/kelas-10" rel="tag">Kelas 10</a> <a href="https://www.ruangguru.com/blog/tag/konsep-pelajaran" rel="tag">Konsep Pelajaran</a> <a href="https://www.ruangguru.com/blog/tag/sma" rel="tag">SMA</a> </div>
</div>
<div class="author-post">
<img loading="lazy" class="author-avatar" width="64px" height="64px" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/5196bc4b-168b-4b6f-8c46-cb076ca8b451.png">
<div>
<h5 class="author-title">Seno Aji</h5>
<p class="author-description"></p>
</div>
</div> <div class="share-post">
<p>Bagikan artikel ini:</p>
<ul class="socmed">
<li>
<a target="_blank" href="https://api.whatsapp.com/send?phone=&text=Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10%0D%0A%0D%0Ahttps://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya"><img src="https://cdn-web-2.ruangguru.com/static/whatsapp.png" loading="lazy" alt="Logo Whatsapp " /></a>
</li>
<li>
<a target="_blank" href="https://www.facebook.com/share.php?u=https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya&quote=Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10"> <img src="https://cdn-web-2.ruangguru.com/static/facebook.png" loading="lazy" alt="Logo Facebook " /> </a>
</li>
<li>
<a target="_blank" href="https://twitter.com/intent/tweet?text=Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10&url=https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya"> <img src="https://cdn-web-2.ruangguru.com/static/twitter.png" loading="lazy" alt="Logo Twitter " /> </a>
</li>
<li>
<a target="_blank" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.ruangguru.com/blog/kurva-penawaran-permintaan-pergerakan-serta-pergeserannya&title=Kurva Permintaan & Kurva Penawaran serta Faktor yang Mempengaruhinya | Ekonomi Kelas 10"><img src="https://cdn-web-2.ruangguru.com/static/linkedin.png" loading="lazy" alt="Logo LinkedIn " /></a>
</li>
</ul>
</div>
</div>
<div class="col-md-4 sticky">
<aside id="sidebar">
<div class="side-banner-desktop">
</div>
<div class="glider-navigation desktop">
<div role="tablist" class="dots" id="side-banner-dots"></div>
<div class="glider-button-navigation">
<button aria-label="Previous" class="glider-prev" id="side-banner-prev"><img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/412de767-9fab-4a4e-9a21-09b7ac9c5f96.png"></button>
<button aria-label="Next" class="glider-next" id="side-banner-next">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/754b0134-4f20-4cdd-af8c-d5918044d734.png">
</button>
</div>
</div>
<h2 style="font-size: 24px; font-weight: bold; margin-bottom: 16px;margin-top: 16px;">Artikel Terbaru</h2>
<ul>
<li>
<a href="https://www.ruangguru.com/blog/pergerakan-nasional-indonesia">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com//landing-pages/assets/dd9f819a-e3e7-4992-b8c7-3ce436bb27f8.png" alt="Pergerakan Nasional" class="external-img wp-post-image " /> <span>Pergerakan Nasional Indonesia: Pengertian, Tujuan & Penyebabnya | Sejarah Kelas 11</span>
</a>
</li>
<li>
<a href="https://www.ruangguru.com/blog/runtuhnya-uni-soviet">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com//landing-pages/assets/b9f1448f-d581-42c3-bf06-6300fdbcd7c8.png" alt="Runtuhnya Uni Soviet" class="external-img wp-post-image " /> <span>Sejarah Runtuhnya Uni Soviet, Penyebab, dan Dampaknya | Sejarah Kelas 12</span>
</a>
</li>
<li>
<a href="https://www.ruangguru.com/blog/konflik-palestina-israel">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com//landing-pages/assets/724ad604-4b78-4c7c-9d4b-627165954c4a.png" class="external-img wp-post-image " /> <span>Latar Belakang Terjadinya Konflik Palestina dengan Israel | Sejarah Kelas 12</span>
</a>
</li>
<li>
<a href="https://www.ruangguru.com/blog/9-lembaga-dan-pelaku-pasar-modal-di-indonesia">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com//landing-pages/assets/279825ac-672b-43f9-b66e-a1c7ec87f784.png" alt="Pelaku Pasar Modal di Indonesia" class="external-img wp-post-image " /> <span>9 Lembaga dan Pelaku Pasar Modal di Indonesia | Ekonomi Kelas 10</span>
</a>
</li>
<li>
<a href="https://www.ruangguru.com/blog/peristiwa-kontemporer-dunia-perpecahan-cekoslovakia">
<img loading="lazy" src="https://cdn-web-2.ruangguru.com//landing-pages/assets/2a1a35c0-f1f5-45d4-8869-ff5083bd90e5.png" alt="Perpecahan Cekoslowakia" class="external-img wp-post-image " /> <span>Latar Belakang Perpecahan Cekoslowakia dan Penyebabnya | Sejarah Kelas 12</span>
</a>
</li>
</ul>
</aside>
</div>
</div>
<div class="row">
<div class="col-12">
<section class="related-posts">
<h2 class="page-title">
Artikel Lainnya
</h2>
<div class="content-grid">
<div class="content">
<a href="https://www.ruangguru.com/blog/pergerakan-nasional-indonesia">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com//landing-pages/assets/dd9f819a-e3e7-4992-b8c7-3ce436bb27f8.png?height=320&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com//landing-pages/assets/dd9f819a-e3e7-4992-b8c7-3ce436bb27f8.png?height=320" type="image/png">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/dd9f819a-e3e7-4992-b8c7-3ce436bb27f8.png" loading="lazy" alt="" />
</picture>
<div>
<h2 class="content-title">
Pergerakan Nasional Indonesia: Pengertian, Tujuan & Penyebabnya | Sejarah Kelas 11 </h2>
<div class="content-meta">
<span>March 6, 2026</span> <span>• 8 minutes read</span>
</div>
</div>
</a>
</div>
<div class="content">
<a href="https://www.ruangguru.com/blog/runtuhnya-uni-soviet">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com//landing-pages/assets/b9f1448f-d581-42c3-bf06-6300fdbcd7c8.png?height=320&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com//landing-pages/assets/b9f1448f-d581-42c3-bf06-6300fdbcd7c8.png?height=320" type="image/png">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/b9f1448f-d581-42c3-bf06-6300fdbcd7c8.png" loading="lazy" alt="" />
</picture>
<div>
<h2 class="content-title">
Sejarah Runtuhnya Uni Soviet, Penyebab, dan Dampaknya | Sejarah Kelas 12 </h2>
<div class="content-meta">
<span></span> <span>• 11 minutes read</span>
</div>
</div>
</a>
</div>
<div class="content">
<a href="https://www.ruangguru.com/blog/konflik-palestina-israel">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com//landing-pages/assets/724ad604-4b78-4c7c-9d4b-627165954c4a.png?height=320&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com//landing-pages/assets/724ad604-4b78-4c7c-9d4b-627165954c4a.png?height=320" type="image/png">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/724ad604-4b78-4c7c-9d4b-627165954c4a.png" loading="lazy" alt="" />
</picture>
<div>
<h2 class="content-title">
Latar Belakang Terjadinya Konflik Palestina dengan Israel | Sejarah Kelas 12 </h2>
<div class="content-meta">
<span>March 5, 2026</span> <span>• 5 minutes read</span>
</div>
</div>
</a>
</div>
</div>
</section> </div>
</div>
<div class="banner-product-wrapper">
<a href="https://cta.ruangguru.com/7c02db90-610d-11ee-80fe-4201ac180089" target="_blank" class="alert alert-dismissible fade show banner-product" role="alert">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
<!-- <p>Yuk pilih kelas dan materi belajar kamu di sini</p>
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/0e292531-9ee1-4eed-92f5-b5c053eea4c2.svg" width="42px" height="42px" class="arrow-right"> -->
<img class="image-floating-bottom" src="https://cdn-web-2.ruangguru.com/landing-pages/assets/d19eb9b6-999d-4b92-87c6-c4fb32000d73.png?convert=web" />
</a>
</div>
</div>
</div>
<script>
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function replaceCtaMarkupAsync() {
await sleep(2000);
alert("replace")
const contentBody = document.querySelector('.content-body');
const paragraphs = contentBody.querySelectorAll('p');
const regexPattern = /{{cta\(['"](.+?)['"]\)}}/g;
paragraphs.forEach((paragraph) => {
const originalHTML = paragraph.innerHTML;
let modifiedHTML = '';
let lastIndex = 0;
for (const match of originalHTML.matchAll(regexPattern)) {
const ctaId = match[1];
modifiedHTML += originalHTML.slice(lastIndex, match.index) + `<b>${ctaId}</b>`;
lastIndex = match.index + match[0].length;
}
modifiedHTML += originalHTML.slice(lastIndex);
paragraph.innerHTML = modifiedHTML;
});
document.addEventListener("DOMContentLoaded", () => {
replaceCtaMarkupAsync();
});
}
</script>
<div class="modal fade" id="popupPromo" tabindex="-1" aria-labelledby="popupPromoLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" data-bs-backdrop="static" data-bs-keyboard="false">
<div class="modal-content">
<div class="button-wrapper">
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="glider-contain">
<div class="glider">
<a class="" target="_blank" href="https://cta.ruangguru.com/ab-web-pop-up-banner-blog-rg">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/4680961a-4e01-4169-8ff4-da0823d0da6c.png" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/ab-web-pop-up-banner-blog-rg-1">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/e0ebb0c9-e368-4524-9241-dbaf73cafccd.png" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/rasionalisasi-popup-blog-rg">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/0ec15e92-707a-4660-8134-11f1c1e539a8.png" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/to-snbt-reg-2026-popup-blog-rg">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/b95e02b2-28a4-4c24-a6db-930ecddef2fa.jpg" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/pop-blog-to-snbt-prem">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/1b8558a2-ad51-4144-b30c-01a3231a22da.jpg" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/to-prem-tka-sd-smp-popup-blog-rg">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/e6888a56-1d95-4d8a-b87a-b19b8a185651.png" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/rgp-popup-blog-rg">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/851003e6-07b5-40d1-9068-f9b0bcb1625a.png" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/25f78174-4fc2-11ef-9a39-4201ac180089">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/cbe7b869-fbe2-4497-8a1e-42344df5b137.jpg" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/kitab-tka-smp-popup-blog">
<img src="https://cdn-web-2.ruangguru.com//landing-pages/assets/eb41ad00-e4dc-46f5-b9f6-721266fc371e.jpg" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/pop-rg-kitab-utbk-snbt-lite">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/f7908ac1-3b0b-492c-bf87-dcea2b20b87c.png" />
</a>
<a class="" target="_blank" href="https://cta.ruangguru.com/pop-rg-kitablitetkasmp">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/50097055-1862-46a8-bbe0-fa5b077f88bb.png" />
</a>
</div>
<div class="glider-navigation">
<div role="tablist" class="dots" id="popup-promo-dots"></div>
<div class="glider-button-navigation">
<button aria-label="Previous" class="glider-prev" id="popup-promo-prev"><img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/412de767-9fab-4a4e-9a21-09b7ac9c5f96.png"></button>
<button aria-label="Next" class="glider-next" id="popup-promo-next">
<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/754b0134-4f20-4cdd-af8c-d5918044d734.png">
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
var jsonString = '[{"CreatedAt":"2025-07-25 01:01:27+00:00","Id":696,"UpdatedAt":"2026-02-25 02:12:12+00:00","campaign":null,"cta":[{"Id":31467,"ctaId":"ab-web-pop-up-banner-blog-rg","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/ab-web-pop-up-banner-blog-rg)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/b9b5f501-be14-4e3f-9ad8-a87e17ec16e9.png","name":"[AB] Web Pop Up Banner - Blog RG","targetUrl":"https:\/\/bayar.ruangguru.com\/?utm-source=ab-web-pop-up-banner-blog-rg"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/\/landing-pages\/assets\/4680961a-4e01-4169-8ff4-da0823d0da6c.png","name":"[RG] Popup Banner Blog - Promo SNBT Ramadan","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":1,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2025-07-25 01:01:27+00:00","Id":705,"UpdatedAt":"2026-02-23 10:52:46+00:00","campaign":null,"cta":[{"Id":33341,"ctaId":"ab-web-pop-up-banner-blog-rg-1","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/ab-web-pop-up-banner-blog-rg-1)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/f30c4943-4456-4a96-858b-fe065c9073ae.png","name":"[AB] Web Pop Up Banner - Blog RG 1","targetUrl":"https:\/\/bayar.ruangguru.com\/?utm-source=ab-web-pop-up-banner-blog-rg"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/e0ebb0c9-e368-4524-9241-dbaf73cafccd.png","name":"[RG] Popup Banner Blog - Promo TKA Ramadan","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":2,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2023-08-16 13:35:02+00:00","Id":657,"UpdatedAt":"2026-02-06 03:52:10+00:00","campaign":null,"cta":[{"Id":33189,"ctaId":"rasionalisasi-popup-blog-rg","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/rasionalisasi-popup-blog-rg)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/0ec15e92-707a-4660-8134-11f1c1e539a8.png","name":"[RG] Pop Up Blog - Rasionalisasi","targetUrl":"https:\/\/www.ruangguru.com\/rasionalisasi"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/0ec15e92-707a-4660-8134-11f1c1e539a8.png","name":"[RG] Pop Up Blog RG - Rasionalisasi","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":3,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2023-12-07 09:26:39+00:00","Id":677,"UpdatedAt":"2026-02-12 02:22:12+00:00","campaign":null,"cta":[{"Id":33305,"ctaId":"to-snbt-reg-2026-popup-blog-rg","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/to-snbt-reg-2026-popup-blog-rg)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/b95e02b2-28a4-4c24-a6db-930ecddef2fa.jpg","name":"[IDN] CTA Popup Blog RG - Tryout SNBT Regular 2026","targetUrl":"https:\/\/link.ruangguru.com\/blPk\/TOUTBKREG7"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/b95e02b2-28a4-4c24-a6db-930ecddef2fa.jpg","name":"[RG] Popup Blog RG - Tryout Regular 2026","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":4,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2026-02-05 10:16:52+00:00","Id":689,"UpdatedAt":"2026-03-05 02:41:12+00:00","campaign":null,"cta":[{"Id":33338,"ctaId":"pop-blog-to-snbt-prem","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/pop-blog-to-snbt-prem)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/\/landing-pages\/assets\/1b8558a2-ad51-4144-b30c-01a3231a22da.jpg","name":"[RG] Popup Blog - TO SNBT Prem","targetUrl":"https:\/\/link.ruangguru.com\/blPk\/TOUTBKPREM"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/\/landing-pages\/assets\/1b8558a2-ad51-4144-b30c-01a3231a22da.jpg","name":"[RG] Pop blog - TO SNBT Prem","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":5,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2023-12-07 09:26:39+00:00","Id":679,"UpdatedAt":"2026-03-04 03:44:16+00:00","campaign":null,"cta":[{"Id":33304,"ctaId":"to-prem-tka-sd-smp-popup-blog-rg","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/to-prem-tka-sd-smp-popup-blog-rg)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/1bf472e1-62f4-4aa9-ab8c-4fa72a82dd7b.png","name":"[RG] Pop Up Blog RG - TO Premium TKA SD SMP","targetUrl":"https:\/\/s.id\/TOTKAPREMSDSMP"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/\/landing-pages\/assets\/e6888a56-1d95-4d8a-b87a-b19b8a185651.png","name":"[RG] Popup Blog RG - TO TKA Premium SD SMP","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":6,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2025-08-25 04:25:04+00:00","Id":672,"UpdatedAt":"2026-02-06 03:52:17+00:00","campaign":null,"cta":[{"Id":33285,"ctaId":"rgp-popup-blog-rg","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/rgp-popup-blog-rg)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/851003e6-07b5-40d1-9068-f9b0bcb1625a.png","name":"[RG] Pop Up Blog - RGP","targetUrl":"https:\/\/www.ruangguru.com\/privat"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/851003e6-07b5-40d1-9068-f9b0bcb1625a.png","name":"[RG] Pop Up Blog - RGP","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":7,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2023-08-16 13:35:02+00:00","Id":379,"UpdatedAt":"2026-03-06 01:54:52+00:00","campaign":null,"cta":[{"Id":31356,"ctaId":"25f78174-4fc2-11ef-9a39-4201ac180089","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/25f78174-4fc2-11ef-9a39-4201ac180089)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/f60bc49c-c00f-4a5e-80a2-2552fa18ae21.jpg","name":"CTA Blog RG - Kitab UTBK SNBT","targetUrl":"https:\/\/bit.ly\/orderkitabrg"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/\/landing-pages\/assets\/cbe7b869-fbe2-4497-8a1e-42344df5b137.jpg","name":"[RG] Pop Up Blog RG - Kitab UTBK SNBT","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":8,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2023-08-16 13:35:02+00:00","Id":587,"UpdatedAt":"2026-03-06 01:55:00+00:00","campaign":null,"cta":[{"Id":33020,"ctaId":"kitab-tka-smp-popup-blog","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/kitab-tka-smp-popup-blog)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/9ea9eca7-9ef7-433c-baad-14bc1019f890.jpg","name":"[RG] Pop up blog - Kitab TKA SMP","targetUrl":"https:\/\/bit.ly\/kitabtkasmprg"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/\/landing-pages\/assets\/eb41ad00-e4dc-46f5-b9f6-721266fc371e.jpg","name":"[RG] Pop Up Blog RG - Kitab TKA SMP","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":9,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2025-11-12 10:28:45+00:00","Id":636,"UpdatedAt":"2026-02-06 03:52:20+00:00","campaign":null,"cta":[{"Id":33149,"ctaId":"pop-rg-kitab-utbk-snbt-lite","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/pop-rg-kitab-utbk-snbt-lite)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/8d6f8639-cfff-4d64-89ea-f68bfe7a868c.png","name":"[RG] Pop blog - Kitab utbk snbt lite","targetUrl":"https:\/\/s.id\/litesnbt26"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/f7908ac1-3b0b-492c-bf87-dcea2b20b87c.png","name":"[RG] Pop blog - Kitab utbk snbt lite","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":10,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"},{"CreatedAt":"2025-11-14 08:09:42+00:00","Id":647,"UpdatedAt":"2026-02-06 03:52:21+00:00","campaign":null,"cta":[{"Id":33160,"ctaId":"pop-rg-kitablitetkasmp","ctaLink":"URI::(https:\/\/cta.ruangguru.com\/pop-rg-kitablitetkasmp)","imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/20edba9b-ef84-4938-b698-4a82783478a5.png","name":"[RG] Pop blog - kitab lite tka smp","targetUrl":"https:\/\/s.id\/litetkasmp26"}],"endDate":null,"hide":0,"imageUrl":"https:\/\/cdn-web-2.ruangguru.com\/landing-pages\/assets\/50097055-1862-46a8-bbe0-fa5b077f88bb.png","name":"[RG] Pop blog - kitab lite tka smp","nc_v5ij___rg_campaign_id":null,"nc_v5ij___rg_product_id":41,"product":"ruangguru","rankPosition":11,"rg_campaign":null,"rg_product":{"Id":41,"name":"ruangguru"},"showIn":"blog","startDate":null,"type":"popup"}]';
var jsArray = JSON.parse(jsonString);
console.log(jsArray);
</script>
<script>
let windowHeight = window.innerHeight;
let promosLength = 11;
document.addEventListener('DOMContentLoaded', function() {
// Initialize Bootstrap Modal
let popupPromo = new bootstrap.Modal(document.getElementById('popupPromo'), {});
// Initialize Glider.js inside the Bootstrap Modal
function initGliderInModal() {
new Glider(document.querySelector('#popupPromo .glider'), {
slidesToScroll: 1,
slidesToShow: 1,
draggable: true,
dots: '#popup-promo-dots',
arrows: {
prev: '#popup-promo-prev',
next: '#popup-promo-next'
}
});
}
// Show Bootstrap Modal and initialize Glider.js after a specified scroll amount
const scrollThreshold = 2 / 3 * windowHeight; // The scroll amount in pixels to trigger the Modal
let gliderInitialized = false;
window.addEventListener('scroll', function() {
if (window.scrollY >= scrollThreshold && !gliderInitialized && promosLength > 0) {
popupPromo.show();
// Listen for the 'shown' event to initialize Glider.js after the Modal has been fully displayed
$('#popupPromo').on('shown.bs.modal', function() {
initGliderInModal();
gliderInitialized = true;
// Optionally, remove the 'shown' event listener after initializing the Glider to avoid re-initializing
$('#popupPromo').off('shown.bs.modal');
});
// Remove the scroll event listener after the Modal is shown to avoid re-initializing the Glider
this.removeEventListener('scroll', arguments.callee);
}
});
});
</script>
<script src="https://unpkg.com/analytics@0.8.1/dist/analytics.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/analytics-plugin-trackable-min@0.4.5/dist/analytics-plugin-trackable.min.js"></script>
<script type="text/javascript" defer>
/* Initialize analytics */
var Analytics = window._analytics.init({
app: "ruangguruLanding",
debug: false,
plugins: [analyticsTrackable()],
});
/* Additional context tracker pageView */
const post_id = 34;
const tags_id = [49,52,10,37];
const category_id = 541;
const sub_category_id = 545;
const customData = {
tags_id: tags_id,
category_id: category_id,
sub_category_id: sub_category_id,
post_id: post_id,
};
Analytics.plugins.trackable.context(JSON.stringify(customData));
Analytics.ready(function () {
Analytics.page();
});
$(document).on('click', '[data-tracking-event-type]', function (event) {
const eventType = $(this).data('tracking-event-type');
const context = $(this).data('tracking-context');
Analytics.track(eventType, context);
});
</script>
<footer class="footer">
<div class="container">
<div class="row">
<div class="col-lg-3">
<div class="office">
<a href="https://www.ruangguru.com/">
<img src="https://cdn-web-2.ruangguru.com/static/RG_LOGO_WHITE.png?convert=auto" alt="Logo Ruangguru" loading="lazy" />
</a>
<address>
<p class="hq">RUANGGURU HQ</p>
<p>
Gedung Sinarmas MSIG Tower Lt. 33. Jl. Jenderal Sudirman Kav. 21, Karet Kuningan, Setiabudi, Jakarta Selatan, Jakarta 12920
</p>
</address>
</div>
<nav class="footer-menu call-us">
<p class="title">Hubungi Kami</p>
<address>
<a href="mailto:info@ruangguru.com">
<img class="icon-call-us" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/4739a139-8f09-42ea-b517-d842c5d1c28d.png" loading="lazy" alt="Logo Email Footer" />
info@ruangguru.com</a>
<a href="tel:02130930000">
<img class="icon-call-us" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/6f4bb6c8-52c9-4acb-859b-47a10a7eec75.png" loading="lazy" alt="Logo Phone Footer" />(021) 3093 0000</a>
<a href="https://wa.me/6281574410000">
<img class="icon-call-us" src="https://cdn-web-2.ruangguru.com/file-uploader/lp/4b58468a-b2f9-40e4-867f-d3242a065dcf.png" loading="lazy" alt="Logo Whatsapp Footer" />0815 7441 0000</a>
</address>
</nav>
<nav class="footer-menu social d-none d-lg-block">
<p class="title">Ikuti Kami</p>
<a target="_blank" href="https://www.instagram.com/ruangguru/">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/instagram.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/instagram.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/instagram.png" loading="lazy" alt="Logo Instagram Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.facebook.com/ruanggurucom/">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/facebook.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/facebook.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/facebook.png" loading="lazy" alt="Logo Facebook Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://twitter.com/ruangguru/">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/twitter.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/twitter.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/twitter.png" loading=" lazy" alt="Logo Twitter Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.youtube.com/ruangguru">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/youtube.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/youtube.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/youtube.png" loading=" lazy" alt="Logo Youtube Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.linkedin.com/company/ruangguru-com">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/linkedin.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/linkedin.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/linkedin.png" loading=" lazy" alt="Logo LinkedIn Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.tiktok.com/@ruangguru">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/tiktok.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/tiktok.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/tiktok.png" loading=" lazy" alt="Logo TikTok Footer" width="32px" height="32px" />
</picture>
</a>
</nav>
</div>
<div class="col-lg-9">
<div class="row">
<div class="col-6 col-md-3">
<nav class="footer-menu">
<p class="title">Produk Ruangguru</p>
<ul type="none">
<li><a href="https://roboguru.ruangguru.com" target="_blank">Roboguru</a></li>
<li><a href="https://www.ruangguru.com/roboguruplus">Roboguru Plus</a></li>
<li><a href="https://www.ruangguru.com/dafa-lulu">Dafa dan Lulu</a></li>
<li><a href="https://www.ruangguru.com/for-kids/kursus">Kursus for Kids</a></li>
<li><a href="https://www.ruangguru.com/for-kids">Ruangguru for Kids</a></li>
<li><a href="https://www.ruangguru.com/bisnis">Ruangguru for Business</a></li>
<li><a href="https://www.ruangguru.com/ruanguji">Ruanguji</a></li>
<li><a href="https://www.ruangguru.com/blog">Ruangbaca</a></li>
<li><a href="https://www.ruangguru.com/ruangkelas">Ruangkelas</a></li>
<li><a href="https://www.ruangguru.com/ruangbelajar">Ruangbelajar</a></li>
<li><a href="https://pengajar.ruangguru.com/">Ruangpengajar</a></li>
<li><a href="https://www.ruangguru.com/privat">Ruangguru Privat</a></li>
<li><a href="https://www.ruangpeduli.org/" target="_blank">Ruangpeduli</a></li>
</ul>
</nav>
</div>
<div class="col-6 col-md-3">
<nav class="footer-menu">
<p class="title">Bantuan & Panduan</p>
<ul type="none">
<li><a href="https://www.ruangguru.com/company-credentials">Company Credentials</a></li>
<li><a href="https://www.ruangguru.com/beasiswa">Beasiswa Ruangguru</a></li>
<li><a href="https://www.ruangguru.com/cicilan">Cicilan Ruangguru</a></li>
<li><a href="https://www.ruangguru.com/promo">Promo Ruangguru</a></li>
<li><a href="https://ticketing.ruangguru.com/help?request_type_id=459" target="_blank">Vulnerability Report</a></li>
<li><a href="https://www.ruangguru.com/bantuan#layanan">Layanan Pengaduan</a></li>
<li><a href="https://www.ruangguru.com/terms-conditions">Syarat & Ketentuan</a></li>
<li><a href="https://www.ruangguru.com/privacy-policy">Kebijakan Privasi</a></li>
<li><a href="https://www.ruangguru.com/about-us">Tentang Kami</a></li>
<li><a href="https://www.ruangguru.com/contact-us">Kontak Kami</a></li>
<li><a href="https://www.ruangguru.com/press">Press Kit</a></li>
<li><a href="https://www.ruangguru.com/bantuan">Bantuan</a></li>
<li><a href="https://career.ruangguru.com/">Karier</a></li>
</ul>
</nav>
</div>
<div class="col-6 col-md-3">
<nav class="footer-menu">
<p class="title">Produk Lainnya</p>
<ul type="none">
<li><a href="https://www.brainacademy.id/" target="_blank">Brain Academy</a></li>
<li><a href="https://www.english-academy.id/" target="_blank">English Academy</a></li>
<li><a href="https://skillacademy.com/" target="_blank">Skill Academy</a></li>
<li><a href="https://www.ruangkerja.id/" target="_blank">Ruangkerja</a></li>
<li><a href="https://www.schoters.com/id/" target="_blank">Schoters</a></li>
<li><a href="https://www.kalananti.id/" target="_blank">Kalananti</a></li>
</ul>
</nav>
</div>
<div class="col-6 col-md-3">
<nav class="footer-menu">
<p class="title"> Coba GRATIS Aplikasi Ruangguru</p>
<div class="download-list">
<ul>
<li>
<a target="_blank" rel="nofollow" href="https://apps.apple.com/id/app/ruangguru-solusi-belajar/id1099742206?l=id">
<img src="https://cdn-web-2.ruangguru.com/static/appstore.png" loading="lazy" alt="Button App Store Footer " />
</a>
</li>
<li>
<a target="_blank" rel="nofollow" href="https://play.google.com/store/apps/details?id=com.ruangguru.livestudents&hl=in">
<img src="https://cdn-web-2.ruangguru.com/static/googleplay.png" loading="lazy" alt="Button Google Play Footer " />
</a>
</li>
<li>
<a target="_blank" rel="nofollow" href="https://appgallery.huawei.com/#/app/C102352375">
<img src="https://cdn-web-2.ruangguru.com/static/huawei.png" loading="lazy" alt="Button AppGallery Footer " />
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
</div>
</div>
<div class="d-lg-none text-center">
<nav class="footer-menu social">
<p class="title">Ikuti Kami</p>
<a target="_blank" href="https://www.instagram.com/ruangguru/">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/instagram.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/instagram.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/instagram.png" loading="lazy" alt="Logo Instagram Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.facebook.com/ruanggurucom/">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/facebook.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/facebook.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/facebook.png" loading="lazy" alt="Logo Facebook Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://twitter.com/ruangguru/">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/twitter.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/twitter.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/twitter.png" loading=" lazy" alt="Logo Twitter Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.youtube.com/ruangguru">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/youtube.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/youtube.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/youtube.png" loading=" lazy" alt="Logo Youtube Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.linkedin.com/company/ruangguru-com">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/linkedin.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/linkedin.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/linkedin.png" loading=" lazy" alt="Logo LinkedIn Footer" width="32px" height="32px" />
</picture>
</a>
<a target="_blank" href="https://www.tiktok.com/@ruangguru">
<picture>
<source srcset="https://cdn-web-2.ruangguru.com/static/tiktok.png?height=60&convert=webp" type="image/webp">
<source srcset="https://cdn-web-2.ruangguru.com/static/tiktok.png?height=60" type="image/png">
<img src="https://cdn-web-2.ruangguru.com/static/tiktok.png" loading=" lazy" alt="Logo TikTok Footer" width="32px" height="32px" />
</picture>
</a>
</nav>
</div>
<p class="footer-copyright">
© 2026 All Rights Reserved PT. Ruang Raya Indonesia
</p>
</div>
<style>
.bantuan-container {
position: relative;
}
.bantuan-element {
position: fixed;
z-index: 999;
display: flex;
align-items: flex-end;
justify-content: flex-end;
cursor: pointer;
transition: all 0.6s ease;
}
.bantuan-top {
bottom: 11rem;
right: 2rem;
}
.bantuan-bottom {
bottom: 2rem;
right: 2rem;
}
.bantuan-top-2 {
bottom: 15rem;
right: 2rem;
}
.bantuan-top-3 {
bottom: 19rem;
right: 2rem;
}
.bantuan-bottom-2 {
bottom: 5rem;
right: 2rem;
}
.bantuan-bottom-3 {
bottom: 8rem;
right: 2rem;
}
@media (min-width: 768px) {
.bantuan-element img {
width: auto;
transition: all 0.4s ease;
}
.bantuan-top img {
width: 140px;
}
.bantuan-bottom img {
width: 140px;
}
.bantuan-top-2 img,
.bantuan-top-3 img {
width: 140px;
}
.bantuan-bottom-2 img,
.bantuan-bottom-3 img {
width: 140px;
}
.bantuan-element.clicked {
bottom: 9rem;
right: 2.5rem;
}
.bantuan-element.clicked img {
width: auto;
height: 64px;
}
}
@media (max-width: 767px) {
.bantuan-top {
bottom: 8rem;
right: 1rem;
align-items: center;
}
.bantuan-bottom {
bottom: 2rem;
right: 1.25rem;
align-items: center;
}
.bantuan-top-2 {
bottom: 12rem;
right: 1rem;
align-items: center;
}
.bantuan-top-3 {
bottom: 16rem;
right: 1rem;
align-items: center;
}
.bantuan-bottom-2 {
bottom: 5rem;
right: 1.25rem;
align-items: center;
}
.bantuan-bottom-3 {
bottom: 8rem;
right: 1.25rem;
align-items: center;
}
.bantuan-element img {
width: auto;
}
.bantuan-top img,
.bantuan-top-2 img,
.bantuan-top-3 img {
width: 96px;
}
.bantuan-bottom img,
.bantuan-bottom-2 img,
.bantuan-bottom-3 img {
width: 96px;
}
}
.bantuan-element:hover {
transform: scale(1.05);
}
.bantuan-element img {
max-width: 100%;
height: auto;
}
</style>
<div id="bantuan-divs-container" style="position: relative" data-product="ruangguru" data-table="rg_floating_icon"></div>
<script>
class FloatingDivsComponent {
constructor(product = 'ruangguru', table = 'rg_floating_icon') {
this.container = document.getElementById('bantuan-divs-container');
this.floatingElements = [];
this.product = product;
this.table = table;
// Configuration
this.config = {
baseApiUrl: 'https://gw.ruangguru.com/api/v3/rdb/p_ddgy8hjx5dxsqx/rg_banner/views/',
apiKey: 'vLyK3dJrDBRmOwueX2OJXibMkgsUbBk0WS4ua2p1',
maxElements: 2,
zIndexBase: 100,
};
// Build dynamic API URL based on table parameter
this.config.apiUrl = this.buildApiUrl();
this.init();
}
buildApiUrl() {
const baseUrl = this.config.baseApiUrl;
const tableName = this.table || 'rg_floating_icon';
const queryParams =
'offset=0&limit=99999&sort=rankPosition&where=(type,eq,floating)~and(showIn,anyof,blog)~and(hide,is,false)~and(product,eq,' +
this.product +
')&nested%5Bcta%5D%5Bfields%5D=Id,name,ctaId,imageUrl,ctaLink,targetUrl';
return `${baseUrl}${tableName}?${queryParams}`;
}
async init() {
try {
await this.fetchFloatingElements();
this.renderFloatingElements();
} catch (error) {
console.error('Failed to initialize floating divs component:', error);
}
}
async fetchFloatingElements() {
try {
const options = {
method: 'GET',
headers: {
'xc-token': this.config.apiKey || 'vLyK3dJrDBRmOwueX2OJXibMkgsUbBk0WS4ua2p1',
},
};
const urlNoco = this.config.apiUrl;
const response = await fetch(urlNoco, options);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
this.floatingElements = this.processApiResponse(data);
} catch (error) {
console.error('Error fetching floating elements:', error);
throw error;
}
}
processApiResponse(data) {
if (!data || !data.list || !Array.isArray(data.list)) {
return [];
}
console.log(data.list);
// Ensure we only get maximum 2 elements
const limitedElements = data.list.slice(0, this.config.maxElements);
return limitedElements;
}
renderFloatingElements() {
if (!this.container || this.floatingElements.length === 0) {
return;
}
// Additional safeguard: ensure we never render more than maxElements
const elementsToRender = this.floatingElements.slice(0, this.config.maxElements);
// Clean up existing elements and their event listeners
this.cleanupExistingElements();
// Clear existing content
this.container.innerHTML = '';
elementsToRender.forEach((element, index) => {
const floatingDiv = this.createFloatingDiv(element, index);
this.container.appendChild(floatingDiv);
});
}
cleanupExistingElements() {
// Clear existing elements (no need for event listener cleanup with CSS approach)
const existingElements = this.container.querySelectorAll('[data-floating-element]');
existingElements.forEach(element => {
element.remove();
});
}
createFloatingDiv(element, index) {
const div = document.createElement('div');
const cta = element.cta[0]; // Use the first CTA
// Add data attribute for cleanup tracking
div.setAttribute('data-floating-element', 'true');
// Apply CSS classes based on rankPosition
const positionClass = this.getPositionClass(element.rankPosition, index);
div.className = `bantuan-element ${positionClass}`;
div.style.zIndex = this.config.zIndexBase + index;
// Create the link and image
const link = document.createElement('a');
link.href = 'https://cta.ruangguru.com/' + cta.ctaId || '#';
link.target = '_blank';
// Add tracking attributes
link.setAttribute('data-tracking-event-type', 'landing_page__core__item_click');
link.setAttribute(
'data-tracking-context',
JSON.stringify({
product_name: this.product,
cta_action: 'redirection',
cta_action_detail: link.href,
item_type: 'floating',
item_name: element.name || 'Floating element',
item_category: 'payment',
item_position: index,
item_serial: null,
section_type: 'floating_item',
section_position: 'body',
section_name: 'floating_item',
})
);
const img = document.createElement('img');
img.src = element.imageUrl + '?h=200&convert=webp';
img.alt = element.name || 'Floating element';
img.loading = 'lazy';
// Add click tracking
link.addEventListener('click', () => {
this.trackClick(element, cta);
});
link.appendChild(img);
div.appendChild(link);
return div;
}
getPositionClass(rankPosition, index) {
// Define positioning classes based on rankPosition
if (rankPosition === 1) {
return 'bantuan-top'; // Top position
} else if (rankPosition === 2) {
return 'bantuan-bottom'; // Bottom position
} else {
// For additional elements, distribute them evenly
return `bantuan-${index % 2 === 0 ? 'top' : 'bottom'}-${Math.floor(index / 2) + 1}`;
}
}
trackClick(element, cta) {
// Implement click tracking logic here
console.log('Floating element clicked:', {
elementId: element.Id,
elementName: cta.name,
ctaId: cta.ctaId,
targetUrl: cta.targetUrl,
});
}
// Public method to manually refresh
async refresh() {
try {
await this.fetchFloatingElements();
this.renderFloatingElements();
} catch (error) {
console.error('Failed to refresh floating elements:', error);
throw error;
}
}
// Public method to get current floating elements
getFloatingElements() {
return [...this.floatingElements];
}
}
// Initialize the component when DOM is ready
document.addEventListener('DOMContentLoaded', () => {
// Get product and table parameters from data attributes
const container = document.getElementById('bantuan-divs-container');
const product = container.getAttribute('data-product') || 'ruangguru';
const table = container.getAttribute('data-table') || 'rg_floating_icon';
new FloatingDivsComponent(product, table);
});
// Export for use in other modules if needed
if (typeof module !== 'undefined' && module.exports) {
module.exports = FloatingDivsComponent;
}
</script> <div id="wp-install-nudge" style="
position: fixed;
bottom: 0rem;
right: 0;
z-index: 999;
cursor: pointer;
"></div>
<script>
(function (w, d, s, o, f, js, fjs) {
w['Sales-Nudge-Widget'] = o; w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
}(window, document, 'script', 'wpInstallNudge', 'https://cdn-web-2.ruangguru.com/sales-nudge/6198a95130/dist/widget.js'));
wpInstallNudge('init', { targetElementId: 'wp-install-nudge', clientTarget: 'ruangguru_blog' });
</script>
<script>
// note: disabled due to auto reload page
// var lastScrollTop = 0;
// $(window).scroll(function(event){
// var st = $(this).scrollTop();
// if (st > lastScrollTop){
// $('#wp-install-nudge').slideDown( "slow", function() {});
// } else {
// $('#wp-install-nudge').slideUp( "slow", function() {});
// }
// lastScrollTop = st;
// });
// $(document).ready(function () {
// $("#wp-install-nudge").hide();
// });
$('#wp-install-nudge').click(function(){
Analytics.track("promotion__install_nudge__click",
{
user_email: "ruangguru@blog.com",
cta_link: widgetData.dataConfig.target_link
}).catch((err) => {
console.log("tracker error", err);
});
});
</script>
</footer>
<div id="__next"></div>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/blog\/*"},{"not":{"href_matches":["\/blog\/wp-*.php","\/blog\/wp-admin\/*","\/blog\/wp-content\/uploads\/*","\/blog\/wp-content\/*","\/blog\/wp-content\/plugins\/*","\/blog\/wp-content\/themes\/ruangguru\/*","\/blog\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script>
async function getCtaDetails(ctaIds) {
const endpoint =
" https://gw.ruangguru.com/api/v3/rdb/p_ddgy8hjx5dxsqx/CTA/views/CTA?offset=0&limit=10&where=(ctaId,in," + ctaIds.toString() + ")";
try {
const response = await fetch(endpoint, {
headers: {
"xc-token": "-hG2nBDJzSj0agSgNtcJx97M4F02y54nUMoY6plJ",
},
});
const data = await response.json();
const ctaList = data?.list || [];
const ctaMap = new Map();
for (const ctaData of ctaList) {
ctaMap.set(ctaData.ctaId, ctaData);
}
return ctaMap;
} catch (error) {
console.error("Error fetching CTA details:", error);
return new Map();
}
}
async function replaceCTA() {
const regex = /{{cta\((‘(.*?)’|“(.*?)”)\)}}/g;
const bodyHTML = document.body.innerHTML;
const matches = Array.from(bodyHTML.matchAll(regex));
const ctaIds = matches.map((match) => {
let ctaId = match[2] ?? match[3];
return ctaId;
});
const ctaMap = await getCtaDetails(ctaIds);
const replacedHTML = bodyHTML.replace(regex, (match, _inner, ctaId1, ctaId2) => {
const ctaId = ctaId1 ?? ctaId2;
const ctaData = ctaMap.get(ctaId);
if (ctaData) {
return `<a href="https://cta.ruangguru.com/${ctaData.ctaId}" target="_${ctaData.targetType}" style="position:relative;display:inline-block;">
<img src="${ctaData.imageUrl}" loading="lazy" alt="${ctaData.altText}" />
</a>`;
} else {
return match;
}
});
document.body.innerHTML = replacedHTML;
}
</script>
<meta name="author" content="Ruangguru Tech Team">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PVNLZFT" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- Tracker -->
<script type="text/javascript" src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/global-assets/js/cta.js"></script>
<script src="https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.mjs" type="module"></script>
</body>
</html>