vue 一个简单的项目 之一 首页 step6

本文详细介绍了一个热销推荐组件的开发过程,包括组件的创建、样式设置及数据绑定,使用Vue.js实现响应式布局。

上一篇,我们实现了图标轮播区域,这里,我们将要实现,热销推荐组件部分。

当然先去,新建一个单独的分支,pull 下来,在新分支里开发。

组件大概的样子,如下。

    

开始啦。

首先在home/components 新建一个文件 Recommend.vue

Recommend.vue 代码如下    

<template>
  <div>hello</div>
</template>

<script>
export default {
  name: 'HomeRecommend'
}
</script>

<style lang="stylus" scoped>

</style>

Home.vue 代码如下

<template>
  <div>
    <home-header></home-header>
    <home-swiper></home-swiper>
    <home-icons></home-icons>
    <home-recommend></home-recommend>
  </div>
</template>

<script>
import HomeHeader from './components/Header.vue'
import HomeSwiper from './components/Swiper.vue'
import HomeIcons from './components/Icons.vue'
import HomeRecommend from './components/Recommend.vue'
export default {
  name: 'Home',
  components: {
    HomeHeader,
    HomeSwiper,
    HomeIcons,
    HomeRecommend
  }
}
</script>

<style>

</style>

下面,就直接贴代码吧。其中item 下 min-width 是配合下面ellipsis() 的,因为若没有min-width , ellipsis() 在这儿就不起作用。

<template>
  <div>
    <div class="title">热销推荐</div>
    <ul>
      <li class="item border-bottom">
        <img class="item-img" src="http://imgs.qunarzz.com/ftejia/1806/f9/8a23740f5a6f86.jpg" />
        <div class="item-info">
          <p class="item-title">地名</p>
          <p class="item-desc">地名的一个简单介绍sdkbksksjbksbksdjhskksjbkbvdkbk啊啊啊啊啊啊啊啊</p>
          <button class="item-button">查看详情</button>
        </div>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'HomeRecommend'
}
</script>

<style lang="stylus" scoped>
  @import '~styles/mixins.styl'
  .title
    margin-top: .2rem
    line-height: .8rem
    background: #eee
    text-indent: .2rem
  .item
    overflow: hidden
    display: flex
    height: 1.9rem
    .item-img
      width: 1.7rem
      height: 1.7rem
      padding: .1rem
    .item-info
      flex: 1
      min-width: 0
      padding: .1rem
      .item-title
        line-height: .54rem
        font-size: .32rem
        ellipsis()
      .item-desc
        line-height: .4rem
        color: #ccc
        ellipsis()
      .item-button
        line-height: .44rem
        margin-top: .16rem
        background: #ff9300
        padding: 0 .1rem
        border-radius: .06rem
        color: #fff
</style>

再把数据部分提取出来。如下。

<template>
  <div>
    <div class="title">热销推荐</div>
    <ul>
      <li class="item border-bottom" v-for="item of recommendList" :key="item.id">
        <img class="item-img" :src='item.imgUrl' />
        <div class="item-info">
          <p class="item-title">{{item.title}}</p>
          <p class="item-desc">{{item.desc}}</p>
          <button class="item-button">查看详情</button>
        </div>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'HomeRecommend',
  data: function () {
    return {
      recommendList: [{
        id: '0001',
        imgUrl: 'http://imgs.qunarzz.com/ftejia/1806/f9/8a23740f5a6f86.jpg',
        title: '地名1',
        desc: '地名的一个简单介绍sdkbksksjbksbksdjhskksjbkbvdkbk啊啊啊啊啊啊啊啊'
      },{
        id: '0002',
        imgUrl: 'http://imgs.qunarzz.com/ftejia/1806/f9/8a23740f5a6f86.jpg',
        title: '地名2',
        desc: '地名的一个简单介绍sdkbksksjbksbksdjhskksjbkbvdkbk啊啊啊啊啊啊啊啊'
      },{
        id: '0003',
        imgUrl: 'http://imgs.qunarzz.com/ftejia/1806/f9/8a23740f5a6f86.jpg',
        title: '地名3',
        desc: '地名的一个简单介绍sdkbksksjbksbksdjhskksjbkbvdkbk啊啊啊啊啊啊啊啊'
      }]
    }
  }
}
</script>

Done!

### el-step 组件第一个节点未高亮显示的原因及解决方案 el-step 是 Element UI 框架中的一个组件,用于实现步骤条功能。当用户遇到 el-step 组件的第一个节点未高亮显示的问题时,通常与以下几个因素有关: #### 1. 当前步骤索引设置不正确 el-steps 和 el-step 的核心属性之一是 `active` 属性,它决定了当前激活的步骤索引。如果 `active` 属性值设置错误,可能导致第一个节点未被正确高亮。 ```vue <el-steps :active="activeIndex"> <el-step title="步骤一"></el-step> <el-step title="步骤二"></el-step> <el-step title="步骤三"></el-step> </el-steps> ``` 确保在 Vue 数据中正确设置了 `activeIndex`,例如: ```javascript data() { return { activeIndex: 0 // 表示第一个步骤被激活 }; } ``` 如果未正确设置 `activeIndex` 或其初始值大于 0,则会导致第一个节点未高亮[^4]。 #### 2. 样式覆盖问题 有时候,项目的全局样式或第三方库可能对 el-step 的默认样式进行了覆盖,导致即使步骤激活,颜色也未正常显示。可以通过检查以下 CSS 属性来确认是否存在样式冲突: - `.el-step__title.is-process`:表示当前激活步骤的标题样式。 - `.el-step__title.is-finish`:表示已完成步骤的标题样式。 - `.el-step__title.is-wait`:表示未完成步骤的标题样式。 如果发现样式被覆盖,可以尝试通过自定义样式修复: ```css .el-step__title.is-process { color: #409EFF !important; /* 设置激活步骤的颜色 */ } ``` #### 3. 数据绑定问题 如果步骤的状态依赖于动态数据(如后端返回的数据),需要确保数据格式正确且及时更新到视图。例如,某些情况下可能需要手动触发 `this.$forceUpdate()` 来强制刷新视图[^5]。 #### 4. 配置属性缺失 el-step 提供了多个配置属性,如 `status` 和 `process-status`,用于更精细地控制每个步骤的状态。如果未正确配置这些属性,可能会导致状态显示异常。例如: ```vue <el-step title="步骤一" :status="stepStatus"></el-step> ``` 确保 `stepStatus` 的值为正确的状态值(如 `'wait'`, `'process'`, `'finish'`, `'error'`)。 --- ### 示例代码 以下是一个完整的示例,展示如何正确配置 el-step 并解决第一个节点未高亮的问题: ```vue <template> <el-steps :active="activeIndex" finish-status="success"> <el-step title="步骤一" description="描述信息"></el-step> <el-step title="步骤二" description="描述信息"></el-step> <el-step title="步骤三" description="描述信息"></el-step> </el-steps> </template> <script> export default { data() { return { activeIndex: 0 // 确保初始化为 0 }; } }; </script> <style> /* 确保样式未被覆盖 */ .el-step__title.is-process { color: #409EFF !important; } </style> ``` --- ### 总结 第一个节点未高亮显示的主要原因包括 `active` 属性设置错误、样式覆盖、数据绑定问题以及配置属性缺失。通过检查上述几个方面并进行相应调整,可以有效解决问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值