diff --git a/Colors/index.html b/Colors/index.html
new file mode 100644
index 0000000..b8b3f1c
--- /dev/null
+++ b/Colors/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ Colors
+
+
+
+
+
+
+
+
diff --git a/Colors/script.js b/Colors/script.js
new file mode 100644
index 0000000..6c77b70
--- /dev/null
+++ b/Colors/script.js
@@ -0,0 +1,12 @@
+const colors = ['SpringGreen', 'DarkGreen', 'SlateBlue', 'Salmon', 'Gold', 'DarkKhaki', 'BlueViolet', 'OliveDrab', 'LightSteelBlue', 'Chocolate', 'SandyBrown', 'AliceBlue'];
+const buttonElement = document.querySelector('button');
+
+buttonElement.addEventListener('click', e => {
+ const containerElement = e.target.closest('.container');
+ containerElement.style.backgroundColor = randomColor(colors);
+})
+
+const randomColor = (colors) => {
+ const randomNum = Math.floor(Math.random() * colors.length);
+ return colors[randomNum];
+}
\ No newline at end of file
diff --git a/Colors/style.css b/Colors/style.css
new file mode 100644
index 0000000..6efbc72
--- /dev/null
+++ b/Colors/style.css
@@ -0,0 +1,30 @@
+body {
+ margin: 0;
+ padding: 0;
+}
+.container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100vw;
+ height: 100vh;
+ background-color: AliceBlue;
+}
+
+.container button {
+ padding: 16px 32px;
+ border: 1px solid #000;
+ border-radius: 3px;
+ background: transparent;
+ font-size: 18px;
+}
+
+.container button:focus {
+ outline: 0;
+ box-shadow: 0px 0px 0px 3px rgba(0, 0, 0, 0.3);
+}
+
+.container button:hover {
+ background-color: #000;
+ color: #fff;
+}
diff --git a/Hex-Colors-Gradient/index.html b/Hex-Colors-Gradient/index.html
new file mode 100644
index 0000000..4163844
--- /dev/null
+++ b/Hex-Colors-Gradient/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+ Hex Colors
+
+
+
+
CLICK THE BUTTON BELLOW TO GENERATE A RANDOM GRADIENT
HEX COLOR COMBINATION
+
+ background: linear-gradient(to right, #052c0e,
+ #532724)
+
+
+
+
+
+
diff --git a/Hex-Colors-Gradient/script.js b/Hex-Colors-Gradient/script.js
new file mode 100644
index 0000000..5742bc9
--- /dev/null
+++ b/Hex-Colors-Gradient/script.js
@@ -0,0 +1,19 @@
+const buttonElement = document.querySelector('button');
+const colorElement1 = document.querySelector('.hexcode-1');
+const colorElement2 = document.querySelector('.hexcode-2');
+
+buttonElement.addEventListener('click', (e) => {
+ const containerElement = e.target.closest('.container');
+ const color1 = randomColor();
+ const color2 = randomColor();
+
+ colorElement1.textContent = color1;
+ colorElement2.textContent = color2;
+
+ containerElement.style.background = `linear-gradient(to right, ${color1}, ${color2})`
+})
+
+const randomColor = () => {
+ let color = '#' + Math.floor(Math.random() * 16777215).toString(16)
+ return color
+}
\ No newline at end of file
diff --git a/Hex-Colors-Gradient/style.css b/Hex-Colors-Gradient/style.css
new file mode 100644
index 0000000..a1df388
--- /dev/null
+++ b/Hex-Colors-Gradient/style.css
@@ -0,0 +1,58 @@
+* {
+ margin: 0;
+ padding: 0;
+}
+.container {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 100vw;
+ height: 100vh;
+ background: linear-gradient(to right, rgb(5, 44, 14), rgb(83, 39, 36));
+ text-align: center;
+}
+
+.container h1 {
+ margin-bottom: 8vh;
+ font-size: 2.5vw;
+ line-height: 1.2;
+ animation: textColor 5s infinite alternate;
+}
+
+.container h2 {
+ margin-bottom: 3vh;
+ font-size: 2vw;
+ font-weight: normal;
+ animation: textColor 5s infinite alternate;
+}
+
+@keyframes textColor {
+ 10% {
+ color: #000;
+ }
+ 50% {
+ color: #fff;
+ }
+ 100% {
+ color: #000;
+ }
+}
+
+.container button {
+ padding: 16px 32px;
+ border: 1px solid #000;
+ border-radius: 3px;
+ background: #fff;
+ font-size: 18px;
+}
+
+.container button:focus {
+ outline: 0;
+ box-shadow: 0px 0px 0px 3px rgba(0, 0, 0, 0.3);
+}
+
+.container button:hover {
+ background-color: #000;
+ color: #fff;
+}
diff --git a/QuoteGenerator/index.html b/QuoteGenerator/index.html
new file mode 100644
index 0000000..60cc964
--- /dev/null
+++ b/QuoteGenerator/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+ Quote Generator
+
+
+
+
+
+
diff --git a/QuoteGenerator/script.js b/QuoteGenerator/script.js
new file mode 100644
index 0000000..0f3f311
--- /dev/null
+++ b/QuoteGenerator/script.js
@@ -0,0 +1,40 @@
+const API_END_POINT = 'https://free-quotes-api.herokuapp.com';
+
+const request = async () => {
+ try {
+ const res = await fetch(`${API_END_POINT}`);
+ if (res.ok) {
+ return await res.json();
+ }
+ throw new Error('API 호출 오류');
+ } catch (e) {
+ alert(e.message);
+ }
+}
+
+const cardElement = document.querySelector('.card');
+const quoteElement = document.createElement('p');
+quoteElement.className = 'quote';
+const authorElement = document.createElement('p');
+authorElement.className = 'author';
+const buttonElement = document.querySelector('.btn-generate');
+
+const loadQuote = async () => {
+ const quoteText = await request();
+ quoteElement.textContent = quoteText.quote;
+ authorElement.textContent = quoteText.author;
+}
+
+buttonElement.addEventListener('click', () => {
+ loadQuote()
+ cardElement.appendChild(quoteElement);
+ cardElement.appendChild(authorElement);
+})
+
+
+
+
+
+
+
+
diff --git a/QuoteGenerator/style.css b/QuoteGenerator/style.css
new file mode 100644
index 0000000..66ecd9d
--- /dev/null
+++ b/QuoteGenerator/style.css
@@ -0,0 +1,70 @@
+@import url("https://fonts.googleapis.com/css2?family=Dancing+Script&display=swap");
+
+* {
+ padding: 0;
+ margin: 0;
+}
+
+.container {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ width: 100vw;
+ height: 100vh;
+ background: radial-gradient(circle, rgba(17, 200, 155, 1) 0%, rgba(49, 20, 129, 1) 100%);
+}
+
+.container .card {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ width: 60vw;
+ height: 40vh;
+ margin-bottom: 3vh;
+ border: 8px solid #16e790;
+ border-radius: 10px;
+ background-color: #fff;
+ box-shadow: 3px 3px 5px 0px rgba(0, 0, 0, 0.75);
+}
+
+.container p:first-child::before,
+.container p:first-child::after {
+ content: '"';
+}
+
+.container p:last-child::before {
+ content: "- ";
+}
+
+.container p {
+ width: 95%;
+ margin-bottom: 20px;
+ font-size: 24px;
+ text-align: center;
+}
+
+.container p:last-child {
+ font-style: italic;
+ font-family: "Dancing Script", cursive, serif;
+}
+
+.container button {
+ padding: 10px 20px;
+ border-radius: 3px;
+ border: 0;
+ background-color: #7332e7;
+ font-size: 16px;
+ color: #fff;
+ cursor: pointer;
+}
+
+.container button:focus {
+ outline: none;
+ box-shadow: 0px 0px 0px 4px rgba(255, 255, 255, 0.3);
+}
+
+.container button:hover {
+ background-color: #5e18db;
+}
diff --git a/README.md b/README.md
index 8e7c12a..e0cf3c4 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,18 @@
- [Project1/리아] 프로젝트명
- 예) [Project1/리아] Colors
+## 2회차(~9/21)
+### Project 4 The message
+
+### Project 5 Counter
+
+### Project 6 Image carousel
+
+### Project 7 Digital clock
+
+
+
+
## 1회차(~9/12)
### Project 1 Colors
