Skip to content

Commit e357a8c

Browse files
Lv4要素追加
1 parent 121a36b commit e357a8c

File tree

3 files changed

+105
-0
lines changed

3 files changed

+105
-0
lines changed

plainHTML/public/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ <h1 class="productName">
3636
<p class="price">¥19,000-(税込)</p>
3737
<div class="buyButtons">
3838
<button id="Purchase">今すぐ購入</button>
39+
<button id="Discount">割引を適用する</button>
3940
<button id="Cart">カートに追加</button>
4041
</div>
4142
</div>
@@ -69,6 +70,17 @@ <h2>レビュー</h2>
6970
</div>
7071
</div>
7172
</section>
73+
<div class="popup" id="popup">
74+
<div class="popupContent">
75+
<p>割引コードを持っている場合、以下の欄に記入してください。</p>
76+
<input type="text" id="discountInput" placeholder="例: SAVE30" />
77+
<div>
78+
<button id="applyDiscount">適用</button>
79+
<button class="closeBtn" id="closePopup">閉じる</button>
80+
</div>
81+
<p id="discountMessage"></p>
82+
</div>
83+
</div>
7284
</main>
7385

7486
<footer>

plainHTML/public/script.mjs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// ===== 割引コード設定 =====
2+
const validCode = "f3s8ijm1e";
3+
const discountRate = 0.3;
4+
5+
const popup = document.getElementById("popup");
6+
const discountBtn = document.getElementById("Discount");
7+
const applyBtn = document.getElementById("applyDiscount");
8+
const closeBtn = document.getElementById("closePopup");
9+
const message = document.getElementById("discountMessage");
10+
const input = document.getElementById("discountInput");
11+
const priceTag = document.querySelector(".price");
12+
13+
let originalPrice = 19000;
14+
15+
// ===== ポップアップ表示 =====
16+
discountBtn.addEventListener("click", () => {
17+
popup.style.display = "flex";
18+
message.textContent = "";
19+
input.value = "";
20+
});
21+
22+
// ===== ポップアップを閉じる =====
23+
closeBtn.addEventListener("click", () => {
24+
popup.style.display = "none";
25+
});
26+
27+
// ===== 割引適用処理 =====
28+
applyBtn.addEventListener("click", () => {
29+
const code = input.value.trim();
30+
if (code === validCode) {
31+
const discounted = Math.floor(originalPrice * (1 - discountRate));
32+
priceTag.textContent = `¥${discounted.toLocaleString()}-(税込)`;
33+
message.style.color = "green";
34+
message.textContent = "30%割引が適用されました!";
35+
} else {
36+
message.style.color = "red";
37+
message.textContent = "無効なコードです。";
38+
}
39+
});

plainHTML/public/style.css

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ main {
111111
border-radius: 6px;
112112
transition: 0.2s;
113113
}
114+
#Discount {
115+
padding: 10px 20px;
116+
border: none;
117+
font-size: 16px;
118+
cursor: pointer;
119+
border-radius: 6px;
120+
transition: 0.2s;
121+
}
114122

115123
#Purchase {
116124
background-color: #0070f3;
@@ -180,3 +188,49 @@ footer {
180188
color: #aaa;
181189
font-size: 14px;
182190
}
191+
192+
.popup {
193+
position: fixed;
194+
top: 0;
195+
left: 0;
196+
width: 100vw;
197+
height: 100vh;
198+
background: rgba(0, 0, 0, 0.6);
199+
display: none;
200+
justify-content: center;
201+
align-items: center;
202+
z-index: 2000;
203+
}
204+
205+
.popupContent {
206+
background: white;
207+
padding: 30px;
208+
border-radius: 12px;
209+
text-align: center;
210+
width: 300px;
211+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
212+
}
213+
214+
.popupContent input {
215+
width: 80%;
216+
padding: 8px;
217+
margin: 10px 0;
218+
}
219+
220+
.popupContent button {
221+
padding: 8px 15px;
222+
border: none;
223+
border-radius: 5px;
224+
background-color: #0070f3;
225+
color: white;
226+
cursor: pointer;
227+
margin: 5px;
228+
}
229+
230+
.popupContent button:hover {
231+
background-color: #005ed1;
232+
}
233+
234+
.closeBtn {
235+
background-color: gray;
236+
}

0 commit comments

Comments
 (0)