使用JS和CSS制作的小案例(day二)

一、写在开头

本项目是从github上摘取,自己练习使用后分享,方便登录github的小伙伴可以看本篇文章

50项目50天​编辑https://github.com/bradtraversy/50projects50daysicon-default.png?t=N7T8https://github.com/bradtraversy/50projects50days有兴趣的小伙伴可以自己去github上查看。

二、项目开始

这里展示的进度条效果,鼠标点击按钮,进度条开始变化。

对应的,这里我先把代码贴出,在一点点剖析

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">
    <title>进度条</title>
</head>

<body>
    <div class="container">
        <div class="progress-container">
            <div class="progress" id="progress"></div>
            <div class="circle active">1</div>
            <div class="circle">2</div>
            <div class="circle">3</div>
            <div class="circle">4</div>
        </div>

        <button class="btn" id="prev" disabled>Prev</button>
        <button class="btn" id="next">Next</button>
    </div>

    <script src="index.js"></script>
</body>

</html>

css

:root {
    --line-border-fill: #3498db;
    --line-border-empty: #383838;

}

* {
    box-sizing: border-box;
}

body {
    background-color: #f1f1f1;
    font-family: 'Muli', sans-serif;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    overflow: hidden;
    margin: 0;
}

.container {
    text-align: center;
}

.progress-container {
    display: flex;
    justify-content: space-between;
    position: relative;
    margin-bottom: 30px;
    max-width: 100%;
    width: 350px;
}

.progress-container::before {
    content: '';
    background-color: var(--line-border-empty);
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    height: 4px;
    width: 100%;
    z-index: -1;
}

.progress {
    background-color: var(--line-border-fill);
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    height: 4px;
    width: 0%;
    z-index: -1;
    transition: 0.4s ease;
}

.circle {
    background-color: #f1f1f1;
    color: #e2e2e2;
    border-radius: 50%;
    height: 30px;
    width: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid var(--line-border-empty);
    transition: 0.4s ease;
}

.circle.active {
    border-color: var(--line-border-fill);
}

.btn {
    background-color: var(--line-border-fill);
    color: #fff;
    border: 0;
    border-radius: 6px;
    cursor: pointer;
    font-family: inherit;
    padding: 8px 30px;
    margin: 5px;
    font-size: 14px;
}

.btn:active {
    transform: scale(0.98);
}

.btn:focus {
    outline: 0;
}

.btn:disabled {
    background-color: var(--line-border-empty);
    cursor: not-allowed;
}

js

const progress = document.getElementById("progress");
const prev = document.getElementById("prev");
const next = document.getElementById("next");
const circles = document.querySelectorAll(".circle");

let currentActive = 1;

next.addEventListener("click", () => {
  currentActive++;
  if (currentActive > circles.length) {
    currentActive = circles.length;
  }
  update();
});

prev.addEventListener("click", () => {
  currentActive--;
  if (currentActive < 1) {
    currentActive = 1;
  }
  update();
});

function update() {
    circles.forEach((circle, idx) => {
        if (idx < currentActive) {
            circle.classList.add("active");
        } else {
            circle.classList.remove("active");
        }
    })
    
    // 更新进度条
    const actives = document.querySelectorAll(".active")
    progress.style.width = ((actives.length - 1) / (circles.length - 1)) * 100 + "%";

    // 做边界判断
    if(currentActive === 1){
        prev.disabled = true;
    }else if(currentActive === circles.length){
        next.disabled = true;
    }else{
        prev.disabled = false;
        next.disabled = false;
    }


}

三、具体解析

html页面

css

js

四、最后

希望这个案例可以帮助一些刚接触html、css、JavaScript的小伙伴。学习知识很重要,但是必要的练习是必不可少的。

  • 22
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: HTML、CSSJavaScript 是网页制作的三大基础技术,它们分别负责网页的结构、样式和交互。以下是一个简单的网页制作案例教程: 1. 创建 HTML 文件,定义网页的基本结构,包括头部、主体和底部。 2. 在头部中添加 CSS 样式表,定义网页的样式,包括字体、颜色、布局等。 3. 在主体中添加 HTML 元素,包括标题、段落、图片、链接等。 4. 在 CSS 样式表中定义这些元素的样式,如字体大小、颜色、边框等。 5. 使用 JavaScript 添加交互功能,如按钮点击事件、表单验证等。 6. 最后,测试网页在不同浏览器和设备上的兼容性,进行调试和优化。 以上是一个简单的网页制作案例教程,希望对您有所帮助。 ### 回答2: 网页制作是一门需要掌握多种技术的艺术。其中,HTML、CSSJavaScript是非常重要的三种语言。HTML可以创建网页的结构和内容,CSS可以为网页添加样式和布局,JavaScript可以为网页添加动态效果和交互功能。一般来说,学习这三种语言要分三个阶段进行。 首先是HTML。HTML是网页设计的基础,它定义了网页的结构和内容。在学习HTML时,要了解HTML的标签和属性,以及如何使用它们创建网页。可以通过学习HTML教程和实践案例来掌握这些知识。例如,创建一个简单的网页,并使用HTML标签创建页面标题、段落、图片和链接等元素。 接下来是CSSCSS可以为网页添加样式和布局。学习CSS需要了解各种样式和属性,以及如何将它们应用到网页上。同样,通过学习CSS教程和实践案例来掌握这些知识。例如,创建一个基本的样式表,并使用CSS定义网页元素的颜色、字体、大小和布局等属性。 最后是JavaScriptJavaScript可以为网页添加动态效果和交互功能。学习JavaScript需要了解基本的语法和DOM操作,以及如何编写JavaScript函数和事件处理程序。同样,通过学习JavaScript教程和实践案例来掌握这些知识。例如,创建一个JavaScript函数,响应鼠标事件并显示网页上的动态效果。 总之,在学习网页制作的过程中,需要不断学习和实践,掌握HTML、CSSJavaScript的基本知识和技能。通过学习案例教程,可以更加深入地了解网页制作的整个过程,从而提升自己的网页制作能力。 ### 回答3: HTML、CSSJavaScript是网页制作的三大基本技术,它们可以帮助我们构建出丰富多彩、交互性强的网页。在学习这些技术时,我们可以结合案例教程来学习,这样可以更加深入地理解这些技术的应用。 一、HTML案例教程 HTML是网页制作的基础,我们可以用HTML来定义网页的结构和内容。在实际的制作过程中,我们可以通过案例教程来学习如何使用HTML来构建网页。 例如,我们可以学习如何创建一个基本的网页结构,如何使用HTML标签来设置网页的标题、段落、列表等内容。还可以学习如何使用表格、表单等元素来展示和收集数据。 CSS案例教程 CSS是用于网页样式的技术,它可以帮助我们美化网页、让网页看起来更加美观。在学习CSS时,我们可以通过案例教程来掌握如何使用CSS来定义网页的样式。 例如,我们可以学习如何使用CSS选择器来选中网页中的元素,并设置它们的颜色、字体、大小等样式。还可以学习如何使用CSS布局来实现复杂的网页布局效果。 三、JavaScript案例教程 JavaScript是用于网页交互的技术,它可以帮助我们实现网页上的交互效果和动态效果。在学习JavaScript时,我们可以通过案例教程来学习如何使用JavaScript来实现这些效果。 例如,我们可以学习如何使用JavaScript来改变网页中元素的内容、样式、位置等,并实现动态效果。还可以学习如何使用JavaScript来处理网页中的用户输入、发送网络请求等操作。 总结: 通过学习以上三大网页制作技术的案例教程,我们可以深入了解它们的应用和相互关系,从而更快地掌握这些技术。同时,在实际的网页制作过程中,也可以用这些案例作为参考,来帮助我们更快地实现网页的设计和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有一个挚爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值