普通视图

发现新文章,点击刷新页面。
昨天 — 2026年5月9日首页

从零开始,学习所有指令!

作者 心连欣
2026年5月9日 17:03

哈喽大家好,我是心连欣。在 Vue.js 的世界里,我们不再直接操作 DOM(比如 document.getElementById),而是通过操作 数据(Data)  来驱动 视图(View)  的变化。今天,我们就通过四个具体的场景,来看看 Vue 是如何做到这一点的。

1. 视觉控制:v-show (条件渲染)

核心思想:  用数据控制元素的“显”与“隐”。

还记得小时候玩的“躲猫猫”吗?v-show 就像是一个开关,控制着元素是否在页面上显示。

  • 原理:  根据表达式的真假(true/false),切换元素的 CSS display 属性。
  • 适用场景:  需要频繁切换显示状态的元素。

案例解析:控制图片显隐
在这个案例中,我们通过一个布尔值 isshow 来控制图片。

  • 初始状态 isshow: false,图片隐藏。
  • 点击按钮时,执行 changeisshow 方法,利用 ! 取反操作符,让 true 变 false,图片状态随之切换。

image.png 效果如下:

image.png

2. 批量处理:v-for (列表渲染)

核心思想:  用数据控制元素的“生”与“灭”。

当数据不再是单一的字符串,而是一组数据(数组或对象)时,v-for 就派上用场了。它能帮我们循环生成 DOM 结构,比如列表、表格等。

案例解析:旅游清单与美食菜单
在这个案例中,我们展示了两种用法:

  1. 遍历数组:  arr 存储了省份信息,v-for="(it, index) in arr" 拿到了每一项和索引。
  2. 遍历对象数组:  vegetables 是一个对象数组。点击“添加”按钮时,push 方法将新数据追加到数组末尾,Vue 会自动帮我们生成新的 <li> 标签。

image.png 效果如下:

image.png

3. 交互响应:v-on (事件监听)

核心思想:  监听用户的操作,执行对应的逻辑。

光有界面是不够的,网页必须能响应用户的点击、双击、鼠标移动等行为。v-on 指令(简写为 @)就是连接用户操作与 JavaScript 代码的桥梁。

案例解析:按钮与文本更新
这里我们监听了三种事件:

  • @click:单击按钮,弹出警告框。
  • @dblclick:双击按钮,也触发同一个函数。
  • @mouseenter:鼠标移入时触发。

同时,我们还演示了如何修改数据来更新视图:点击标题时,changefood 方法修改了 food 字符串,页面上的文字立刻就变了。

image.png 效果如下:

image.png 这几个指令分别代表了 Vue 的四种核心能力:条件渲染列表渲染事件监听 和 双向数据绑定

为了帮你梳理知识体系,我将你提供的四个案例整合成了一篇结构化的学习笔记。这篇文章不仅展示了代码,还解析了它们背后的逻辑,希望能帮你把零散的知识点串联起来。


🚀 Vue 2 核心指令实战:从数据到界面的魔法

在 Vue.js 的世界里,我们不再直接操作 DOM(比如 document.getElementById),而是通过操作 数据(Data)  来驱动 视图(View)  的变化。今天,我们就通过四个具体的场景,来看看 Vue 是如何做到这一点的。

1. 视觉控制:v-show (条件渲染)

核心思想:  用数据控制元素的“显”与“隐”。

还记得小时候玩的“躲猫猫”吗?v-show 就像是一个开关,控制着元素是否在页面上显示。

  • 原理:  根据表达式的真假(true/false),切换元素的 CSS display 属性。
  • 适用场景:  需要频繁切换显示状态的元素。

案例解析:控制图片显隐
在这个案例中,我们通过一个布尔值 isshow 来控制图片。

  • 初始状态 isshow: false,图片隐藏。
  • 点击按钮时,执行 changeisshow 方法,利用 ! 取反操作符,让 true 变 false,图片状态随之切换。

html

预览

<!-- 模板部分 -->
<div id="app">
    <!-- v-show 绑定 data 中的 isshow -->
    <img v-show="isshow" src="/曾婉之宝宝/image/2.jpg" alt="">
    <!-- @click 是 v-on:click 的缩写 -->
    <input type="button" value="点击切换显示状态" @click="changeisshow">
</div>

<script>
var app = new Vue({
    el: '#app',
    data: {
        isshow: false // 数据驱动视图
    },
    methods: {
        changeisshow: function(){
            // 修改数据,视图自动更新
            this.isshow = !this.isshow;
        }
    }
})
</script>

2. 批量处理:v-for (列表渲染)

核心思想:  用数据控制元素的“生”与“灭”。

当数据不再是单一的字符串,而是一组数据(数组或对象)时,v-for 就派上用场了。它能帮我们循环生成 DOM 结构,比如列表、表格等。

案例解析:旅游清单与美食菜单
在这个案例中,我们展示了两种用法:

  1. 遍历数组:  arr 存储了省份信息,v-for="(it, index) in arr" 拿到了每一项和索引。
  2. 遍历对象数组:  vegetables 是一个对象数组。点击“添加”按钮时,push 方法将新数据追加到数组末尾,Vue 会自动帮我们生成新的 <li> 标签。

html

预览

<!-- 模板部分 -->
<div id="app">
    <!-- 遍历数组 -->
    <ul>
        <li v-for="(it, index) in arr">
            {{ index+1 }}我最喜欢的地方:{{ it }}
        </li>
    </ul>
    
    <!-- 遍历对象数组,并动态绑定title属性 -->
    <h2 v-for="item in vegetables" v-bind:title="item.name">
        {{ item.name }}
    </h2>
    
    <!-- 按钮触发方法 -->
    <input type="button" value="添加" @click="add">
    <input type="button" value="删除" @click="remove">
</div>

<script>
var app = new Vue({
    el: '#app',
    data: {
        arr: ["重庆", "四川", "云南", "贵州"],
        vegetables: [
            { name: "番茄炒鸡蛋" },
            { name: "鸡蛋炒番茄" }
        ]
    },
    methods: {
        add() {
            // 修改数组,视图自动更新列表
            this.vegetables.push({ name: "土豆炒马铃薯" });
        },
        remove() {
            this.vegetables.shift();
        }
    }
})
</script>

3. 交互响应:v-on (事件监听)

核心思想:  监听用户的操作,执行对应的逻辑。

光有界面是不够的,网页必须能响应用户的点击、双击、鼠标移动等行为。v-on 指令(简写为 @)就是连接用户操作与 JavaScript 代码的桥梁。

案例解析:按钮与文本更新
这里我们监听了三种事件:

  • @click:单击按钮,弹出警告框。
  • @dblclick:双击按钮,也触发同一个函数。
  • @mouseenter:鼠标移入时触发。

同时,我们还演示了如何修改数据来更新视图:点击标题时,changefood 方法修改了 food 字符串,页面上的文字立刻就变了。

html

预览

<!-- 模板部分 -->
<div id="app">
    <!-- 监听 click 事件 -->
    <input type="button" value="单击" @click="doIt">
    <!-- 监听 dblclick 事件 -->
    <input type="button" value="双击" @dblclick="doIt">
    <!-- 监听 mouseenter 事件 -->
    <input type="button" value="鼠标" @mouseenter="doIt">
    
    <!-- 点击修改数据 -->
    <h2 @click="changefood">{{ food }}</h2>
</div>

<script>
var app = new Vue({
    el: '#app',
    data: {
        food: '番茄炒鸡蛋'
    },
    methods: {
        doIt() {
            alert('学习It'); // 执行业务逻辑
        },
        changefood() {
            // 修改数据
            this.food += '好吃!';
        }
    }
})
</script>

4. 数据同步:v-model (双向数据绑定)

核心思想:  数据变了,界面变;界面变了,数据也变。

这是 Vue 最神奇的特性之一。在传统的开发中,我们要想获取输入框的内容,必须手动去 DOM 里取。而在 Vue 中,v-model 像一根双向的管道,把输入框的值和数据对象紧紧绑定在一起。

案例解析:文本输入与回车事件
在这个例子中:

  1. 输入框绑定了 msg 数据。当你在输入框打字时,msg 的值在内存中实时改变。
  2. 页面上的 <h1>{{ msg }}</h1> 实时显示这个值。
  3. 修饰符实战:  我们用了 @keyup.enter,意思是只有当用户按下“回车键”时,才触发 getM 方法弹出警告。这展示了 Vue 如何优雅地处理键盘事件。

image.png 效果如下:

image.png

核心指令对比总结

指令 作用 核心逻辑 典型场景
v-show 条件渲染 display: none / block 开关、选项卡
v-for 列表渲染 循环生成 DOM 商品列表、表格数据
v-on 事件监听 监听用户行为 按钮点击、表单提交
v-model 双向绑定 数据 ↔ 视图 表单输入、搜索框
这些是基础的,简单的实例,让我们继续努力学习吧!😊😊😊
昨天以前首页

轮播图实战:用Web API玩转元素属性操作

作者 心连欣
2026年4月27日 16:05

哈喽大家好,我是心连欣。轮播图是前端开发中最常见的组件之一,无论是电商网站的商品展示,还是新闻门户的头条轮播,都离不开它的身影。今天,我们就用Web API的核心能力——操作元素属性,来实现一个基础但功能完整的轮播图。

核心思路:属性操作是轮播图的“命脉”

轮播图的本质,是通过动态修改元素的属性来实现图片的切换和指示器的同步。具体来说,我们需要操作两类属性:

  • 图片的src属性:决定显示哪张图片。
  • 指示器的类名属性:决定哪个指示器处于“激活”状态。

第一步:HTML结构搭建

首先,我们需要一个包含图片和指示器的基本结构:

<div class="carousel"> <!-- 图片容器 --> 
  <img id="carouselImage" src="./images/1.jpg" alt="轮播图"> <!-- 指示器容器 --> 
  <div class="indicators"> 
    <span class="active" data-index="0"></span>
    <span data-index="1"></span> 
    <span data-index="2"></span>
  </div> 
</div>

这里,我们给图片一个id,方便后续通过document.getElementById获取;给每个指示器一个data-index自定义属性,用于标记对应的图片索引。

第二步:CSS样式准备

为了让轮播图看起来更美观,我们需要一些基础样式:

.carousel {
    position: relative;
    width: 600px; 
    height: 400px;
    overflow: hidden;
  }
#carouselImage { 
    width: 100%;
    height: 100%;
  } 
.indicators { 
    position: absolute;
    bottom: 20px; 
    left: 50%;
    transform: translateX(-50%);
  } 
.indicators span { 
    display: inline-block;
    width: 10px; 
    height: 10px;
    background-color: #fff;
    border-radius: 50%; 
    margin: 0 5px; 
    cursor: pointer; 
    opacity: 0.5;
  }
.indicators .active {
    opacity: 1;
    background-color: #f00;
  }

这里的关键是.active类,它会让当前指示器的透明度变为1,背景色变为红色,从而突出显示。

第三步:JavaScript实现轮播逻辑

接下来,就是最核心的JavaScript部分。我们需要做三件事:

  1. 获取元素:拿到图片和所有指示器。
  2. 定义轮播函数:修改图片的src和指示器的class
  3. 定时切换:用setInterval实现自动轮播。
获取元素
const image = document.getElementById('carouselImage');
const indicators = document.querySelectorAll('.indicators span');

这里,我们用getElementById获取图片元素,用querySelectorAll获取所有指示器,返回的是一个NodeList。

定义轮播函数
  let currentIndex = 0;
// 当前显示的图片索引
  const images = ['./images/1.jpg', './images/2.jpg', './images/3.jpg']; 
// 图片路径数组 
  function changeImage() { 
// 1. 修改图片的src属性 image.src = images[currentIndex];
// 2. 修改指示器的class属性 // 先移除所有指示器的active类
  indicators.forEach(indicator => { indicator.classList.remove('active'); });
// 再给当前索引的指示器添加active类 
  indicators[currentIndex].classList.add('active');
// 3. 更新索引,循环到下一张 
  currentIndex = (currentIndex + 1) % images.length; }

这里用到了classList属性,它是操作元素类名的现代方法,比直接操作className更灵活。remove方法用于移除类,add方法用于添加类。

定时切换

javascript

编辑

// 每3秒调用一次changeImage函数
setInterval(changeImage, 3000);

这样,轮播图就会每3秒自动切换一张图片,同时指示器也会同步更新。

进阶:点击指示器切换图片

为了让用户能手动控制轮播图,我们可以给每个指示器添加点击事件:

javascript

编辑

indicators.forEach((indicator, index) => {
  indicator.addEventListener('click', () => {
    // 点击时,将当前索引设置为点击的指示器索引
    currentIndex = index;
    // 立即调用changeImage函数,切换图片
    changeImage();
  });
});

这里用到了addEventListener方法,它是Web API中用于绑定事件的核心方法。当用户点击某个指示器时,我们会将currentIndex设置为该指示器的索引,然后调用changeImage函数,实现手动切换。

总结

通过这个轮播图的实现,我们深入理解了Web API中操作元素属性的核心方法:

  • getElementByIdquerySelectorAll:用于获取DOM元素。
  • src属性:用于修改图片的路径。
  • classList属性:用于操作元素的类名,实现样式的动态切换。
  • addEventListener:用于绑定事件,实现用户交互。

这些看似简单的API,却是构建复杂前端组件的基石。掌握了它们,你就能轻松实现各种动态交互效果,让网页“活”起来。

❌
❌