html
复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/index.css">
</link>
<title>Document</title>
</head>
<body style="margin: 0;">
<div id="app">
<div class="meun-btn" @click="showMeun"></div>
<div id="sidebar" class="sidebar">
<img class="close-btn" src="img/close.svg" @click="closeMeun" />
<div class="content">
<ul>
<li>Home</li>
<li>Track My Order</li>
<li>Contact us</li>
</ul>
<ul>
<li>FAQs</li>
<li>Return Policy</li>
<li>Payment Methods</li>
<li>Terms of Service</li>
<li>Privacy Policy</li>
<li>Shipping Policy</li>
</ul>
</div>
</div>
<div class="overlay" v-show="show" @click="closeMeun"></div>
<div style="background-color: #f7f7f7">
<div class="logo">
<img src="img/logo.gif" width="100">
</div>
<div class="content">
<div class="left">
<div class="img" :style="{backgroundImage: `url('/img/${optionIndex}.jpg')`}"></div>
<div class="img-bar">
<div class="front" @click="frontImg">
<img src="img/zuojiantou.svg" alt="">
</div>
<div class="product-bar">
<div class="product-image" v-for="(item, index) in options" :key="index"
@click="optionIndex=index">
<img :src="`img/${index}.jpg`">
</div>
</div>
<div class="next" @click="nextImg">
<img src="img/youjiantou.svg" alt="">
</div>
</div>
</div>
<div class="right">
<h1>🔥LAST DAY 60% OFF🎁Intelligent Electric Heating Scarf🔥</h1>
<div class="price">
<span class="old">$45.96 </span>
<span class="new">$22.98</span>
</div>
<hr>
<div class="text">
<p>HURRY! ONLY <span style="color: red;">250</span> LEFT IN STOCK.</p>
<p>
<span>98%</span> customer buy <span>3-5</span> items to use
daily and gifts for their beloved
one
</p>
<p><span>3555</span> People are viewing right now</p>
</div>
<p style="color: #626262;">Sale ending in</p>
<div class="bar">
<div class="value"></div>
</div>
<p class="timer">08:41</p>
<h4>Color</h4>
<div class="options">
<div class="item" :class="optionIndex==index?'active':''" v-for="(item, index) in options"
:key="index" @click="optionIndex=index">{{item}}
</div>
</div>
<div class="pay">
<div class="top">
<div class="count">
<span @click="count--">➖</span>
<input v-model="count"></input>
<span @click="count++">➕</span>
</div>
<div class="block cart">
<img src="img/card.svg" width="20">
<span>Add to cart</span>
</div>
<div class="block now">
<img src="img/buy.svg" width="20">
<span>Buy it now</span>
</div>
</div>
<div class="center">
<img src="img/paypal.svg" height="20">
</div>
<img src="img/safe-checkout.png" width="100%">
</div>
</div>
</div>
</div>
<div class="description">
<div class="left">
Description
</div>
<div class="right">
<p><span>The Newly Upgraded Scarf</span></p>
<p style="margin: 25px 0 5px;"><span>It adopts the principle of infrared heating, rapid heating,
three-speed</span></p>
<p style="margin: 0;"><span>temperature adjustment, not afraid of cold winter.</span></p>
<img src="img/img1.jpg" width="100%">
<p style="font-size: 25px;">FEATURES</p>
<ul>
<li>
⭐<span>Intelligent Heating</span>: Heats up in 3 seconds with an efficient graphene carbon fiber
heating
system. Intelligent heating settings (35°C-45°C-55°C/95°F-113°F-131°F) to suit your needs.
</li>
<li>
⭐<span>Comfortable Material</span>: Breathable and ultra-light material. Comfortable and soft
cotton with
decent elasticity.
</li>
</ul>
<img src="img/img2.jpg" width="100%">
<ul>
<li>
⭐<span>Health Benefits:</span> Graphene heating technology and release of 8-9mm far-infrared
rays aid blood
circulation and help relax tense neck muscles. The position of the heated pad can be adjusted
for targeted therapy.
</li>
<li>
⭐<span>Human-friendly</span>: The output current is 5V, which is a weak current within
the
acceptable range
of the human body and will not cause harm to the body.
</li>
<li>
⭐<span>Notes:</span> It is washable (hand wash, machine wash); an external power bank is
required. Please be
sure to remove the mobile power supply before washing.
</li>
</ul>
<p style="font-size: 25px;"><span> SPECIFICATION</span></p>
<ul>
<li><span>Material:</span> Cotton</li>
<li><span>Current:</span>5V</li>
<li><span>Color:</span>red; pink; gray; blue; navy blue; black</li>
<li><span>Weight:</span> 110g / 0.24lb</li>
<li><span>Size:</span> 80*10cm / 31.49*3.93in</li>
</ul>
<p style="font-size: 25px;"><span>PACKAGE INCLUDED</span></p>
<ul>
<li>1 × Upgraded Heating Scarf</li>
</ul>
<p>Power Bank not included</p>
</div>
</div>
<div class="footer">
<div class="left">
<p><span>Order</span></p>
<p>Track My Order</p>
<p>Shipping Policy</p>
<p style="margin-bottom: 30px;">Return & Refund Policy</p>
<p><span>How can we help you?</span></p>
<div class="btn">
Contact Us
</div>
</div>
<div class="center">
<p><span>Resources</span></p>
<p>About Us</p>
<p>FAQs</p>
<p>Payment Methods</p>
<p>Terms of Service</p>
<p>Privacy Policy</p>
</div>
<div class="right">
<div class="btn">sigmakin.com</div>
<div class="email">
<img src="img/email.svg" width="20">
<span>
support@sigmakin.com
</span>
</div>
</div>
</div>
<div class="info">
<div class="left">
<p>© 2024 sigmakin.com. All rights reserved.</p>
</div>
<div class="right" @click="goTop">
<p> Go to top⬆</p>
</div>
</div>
</div>
</body>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const { createApp, ref, watch } = Vue
createApp({
setup() {
const options = ref([
'Red', 'Pink', 'Gray', 'Navy Blue', 'Yellow',
'Brown', 'Beige', 'Black',
'SET 2(Red+Pink)🔥50% OFF And Extra 10%🔥',
'SET 2(Gray+Blue)🔥50% OFF And Extra 10%🔥',
'SET 2(Navy Blue+Yellow)🔥50% OFF And Extra 10%🔥',
'SET 2(Brown+Beige)🔥50% OFF And Extra 10%🔥',
'SET 2(Red+Pink+Gray)🔥50% OFF And Extra 10%🔥',
'SET 2(Blue+Navy Blue+Yellow)🔥50% OFF And Extra 10%🔥',
'SET 2(Beige+Brown+Gray)🔥50% OFF And Extra 10%🔥'
])
const optionIndex = ref(0)
const count = ref(1)
const show = ref(false)
function frontImg() {
const productBar = document.querySelector('.product-bar')
productBar.scrollLeft -= 50;
}
function nextImg() {
const productBar = document.querySelector('.product-bar')
productBar.scrollLeft += 50;
}
function showMeun() {
const sidebar = document.querySelector('#sidebar')
sidebar.style.left = '0';
show.value = true;
}
function closeMeun() {
const sidebar = document.querySelector('#sidebar')
sidebar.style.left = '-300px';
show.value = false;
}
watch(optionIndex, newVal => {
const productBar = document.querySelector('.product-bar')
const image = document.querySelectorAll('.product-image')[newVal]
productBar.scrollLeft = image.offsetLeft
})
function goTop() {
window.scrollTo({
top: 0,
behavior: 'smooth' // 平滑滚动
});
}
return {
options, optionIndex,
frontImg, nextImg, count,
showMeun, closeMeun, show, goTop
}
}
}).mount('#app')
</script>
</html>
css
复制代码
.logo {
height: 200px;
display: flex;
align-items: center;
justify-content: center;
}
.meun-btn {
cursor: pointer;
width: 20px;
height: 20px;
position: absolute;
top: 80px;
left: 50px;
background-image: url("img/menu.svg");
background-size: 100% 100%;
}
#sidebar {
z-index: 1001;
margin: 0;
height: 100%;
width: 250px;
position: fixed;
left: -300px;
background-color: #1b1b1b;
color: white;
transition: 0.3s;
padding: 20px;
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.5);
}
#sidebar .content {
height: 90%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
#sidebar .content ul {
list-style-type: none;
padding-left: 20px;
}
#sidebar .content ul li {
margin: 30px 0;
cursor: pointer;
}
#sidebar .content ul:nth-child(1) {
font-size: 20px;
}
#sidebar .content ul:nth-child(2) {
font-size: 12px;
color: #878787;
}
#sidebar .close-btn {
color: white;
font-size: 30px;
cursor: pointer;
width: 15px;
margin-left: 20px;
margin-top: 20px;
}
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 1000;
}
.content {
display: flex;
flex-wrap: wrap;
justify-content: center;
padding-bottom: 50px;
}
.content .left {
width: 30%;
min-width: 400px;
margin-right: 20px;
}
.content .left .img {
background-size: 100% 100%;
height: 450px;
border-radius: 10px;
}
.content .left .img-bar {
display: flex;
margin-top: 10px;
}
.content .left .img-bar .front,
.content .left .img-bar .next {
width: 20px;
height: 80px;
display: flex;
align-items: center;
cursor: pointer;
}
.content .left .img-bar .product-bar {
scroll-behavior: smooth;
margin: 0 10px;
height: 100px;
width: 90%;
overflow-x: hidden;
white-space: nowrap;
overflow-y: hidden;
position: relative;
}
.content .left .img-bar .product-bar .product-image {
cursor: pointer;
display: inline-block;
height: 80px;
width: 80px;
margin-right: 10px;
}
.content .left .img-bar .product-bar .product-image img {
width: 100%;
height: 100%;
}
.content .right {
width: 30%;
min-width: 300px;
}
.content .right .price .old {
text-decoration: line-through;
color: #717171;
}
.content .right .price .new {
color: #008000;
font-size: 20px;
}
.content .right .text p:nth-child(1) {
font-size: 20px;
margin-bottom: 0;
}
.content .right .text p:nth-child(2) {
font-size: 18px;
font-style: italic;
margin: 5px 0;
}
.content .right .text p:nth-child(2) span {
color: red;
font-size: 20px;
font-weight: bold;
}
.content .right .text p:nth-child(3) {
font-size: 15px;
}
.content .right .text p:nth-child(3) span {
font-size: 20px;
font-weight: bold;
}
.content .right .bar {
border-radius: 10px;
height: 10px;
background-color: #efefef;
}
.content .right .bar .value {
width: 80px;
border-radius: 10px;
height: 10px;
background-color: #cccccc;
}
.content .right .timer {
color: #df4848;
font-size: 25px;
}
.content .right h4 {
margin: 0;
}
.content .right .options {
display: flex;
flex-wrap: wrap;
}
.content .right .options .item {
cursor: pointer;
margin: 5px;
line-height: 30px;
padding: 5px 8px;
width: max-content;
border: 1px solid #cccccc;
border-radius: 5px;
font-size: 13px;
}
.content .right .options .active {
background-color: #ec7526;
color: white;
}
.content .right .pay {
margin-top: 50px;
}
.content .right .pay .top {
display: flex;
flex-wrap: wrap;
}
.content .right .pay .top .count {
margin: 10px 0;
border: 1px solid #cccccc;
width: 90px;
height: 50px;
display: flex;
justify-content: space-around;
align-items: center;
background-color: white;
}
.content .right .pay .top .count input {
text-align: center;
width: 30px;
height: 30px;
border-width: 0;
font-size: 15px;
}
.content .right .pay .top .count span {
cursor: pointer;
}
.content .right .pay .top .block {
margin: 10px 5px;
cursor: pointer;
width: 150px;
height: 50px;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
color: white;
}
.content .right .pay .top .block img {
margin-right: 20px;
}
.content .right .pay .top .cart {
background-color: black;
}
.content .right .pay .top .now {
background-color: #ff4343;
}
.content .right .pay .center {
cursor: pointer;
border-radius: 5px;
margin: 10px 0;
height: 50px;
background-color: #ffc439;
display: flex;
justify-content: center;
align-items: center;
}
.content .right .pay .center:hover {
background-color: #f2ba36;
}
.description {
padding-top: 80px;
padding-bottom: 50px;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.description .left {
width: 30%;
font-size: 30px;
font-weight: bold;
text-align: center;
}
.description .right {
width: 40%;
}
.description .right ul {
padding: 0;
}
.description .right ul li {
line-height: 30px;
margin-bottom: 20px;
font-size: 15px;
}
.description .right span {
font-weight: bold;
}
.footer {
margin: 0;
height: 300px;
background-color: #242424;
display: flex;
flex-wrap: wrap;
justify-content: center;
padding-top: 40px;
}
.footer p {
color: #929292;
font-size: 12px;
}
.footer span {
color: white;
font-size: 15px;
}
.footer .left {
width: 20%;
}
.footer .left .btn {
text-align: center;
line-height: 40px;
border-radius: 5px;
color: white;
width: 120px;
height: 40px;
background-color: #ff4343;
}
.footer .center {
width: 20%;
}
.footer .right {
width: 30%;
}
.footer .right .btn {
cursor: pointer;
margin: 20px 0px;
padding-left: 10px;
width: 300px;
height: 60px;
color: white;
font-size: 30px;
font-weight: bold;
line-height: 60px;
}
.footer .right .btn:hover {
background-color: white;
color: #485fc7;
}
.footer .right .email {
display: flex;
align-items: center;
}
.footer .right .email img {
margin-right: 20px;
}
.info {
border-top: 1px solid #333;
background-color: #242424;
height: 60px;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-items: center;
}
.info p {
color: #929292;
font-size: 12px;
cursor: pointer;
}
@media screen and (max-width: 730px) {
.logo {
padding-left: 10px;
height: 100px;
justify-content: left;
}
.logo img {
width: 60px;
}
.meun-btn {
left: auto;
right: 30px;
top: 50px;
}
.content .left,
.content .right {
width: 95%;
}
.content .left .pay .top .count,
.content .right .pay .top .count,
.content .left .pay .top .block,
.content .right .pay .top .block {
width: 100%;
}
.description .left {
display: none;
}
.description .right {
width: 95%;
}
.description .right ul {
padding-left: 20px;
}
.footer {
height: auto;
padding-bottom: 50px;
padding-left: 30px;
}
.footer .left,
.footer .center,
.footer .right {
width: 95%;
}
.info {
height: 200px;
flex-direction: column;
}
}