vue新闻轮播简单实现

vue新闻轮播简单实现

需求:如图左边是图片,右边是文字,时间间隔n秒自动播放下一则新闻

前言:所想所学所感记录下来,供以后参考学习。

关于轮播,我一开始想到的是插件swiper(官网上有很详细的讲解这里就不多说),他确实是一个非常好用的插件,但是我想着自己要实现的功能其实特别小,而且需要的样式也不符合,所以决定自己写。

自己写?那么问题来了,自己写该用什么写?CSS3????

其实很简单,vue有自己的动画和过度 点击查看官网

实现:单个组件过渡用:transition    多个组件用:transition-group

html+css片段(vue数据这些根据需要修改,css使用sass写的)

<div class="newsList">
    <transition-group tag="ul" class="ac_scroll-ul" name="list" @after-leave="autoPlay" v-if="newsList.length > 0 && newsList">
        <li class="ac_scroll-item" v-for="(item, index) in newsList" :key="index"  v-show="index === newsIndex" @click="goToPage(item.url)">
          <div class="div">
            <div class="div_image">
              <img :src="require('../../assets/imgs/dsjr.png')" class="image" />
            </div>
            <div class="div_p">
              <p class="p">{{item.detail}}</p>
            </div>
          </div>
        </li>
    </transition-group>
    <p v-else class="no_massage">暂无消息</p>
</div>
.newsList {
  margin: 15px 15px 0 15px;
  padding: 10px 20px;
  height: 60px;
  box-shadow: 0 4px 30px 0 rgba(80, 119, 170, 0.12);
  font-size: 14px;
  overflow: hidden;
  .no_massage {
    text-align: center;
    margin-top: 10px;
  }
  .ac_scroll-ul {
    position: relative;
    width: 100%;
    .ac_scroll-item {
      position: absolute;
      width: 100%;
      .div {
        .div_image {
          width: 20%;
          float: left;
          text-align: center;
          .image {
            width: 40px;
            height: 40px;
          }
        }
        .div_p {
          width: 80%;
          float: right;
          .p {
            text-align: left;
            word-wrap: break-word;
            overflow: hidden;
            -webkit-line-clamp: 2;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-box-orient: vertical;
          }
        }
      }
    }
    .list-enter-to {
      transition: all 2s ease; //时间可以按照自己的需求修改,Y就是上下滑动 X就是左右滑动
      transform: translate(0); 
    }
    .list-leave-active {
      transition: all 2s ease;
      transform: translateY(-100%);
    }
    .list-enter {
      transform: translateY(100%);
    }
    .list-leave {
      transform: translateY(0);
    }
  }
}

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现Vue中的竖向无缝滚动轮播图,你可以使用一些Vue插件或自定义组件实现。下面是一个简单的示例,演示了如何使用Vuevue-awesome-swiper插件来实现这个效果: 首先,确保你已经安装了vue-awesome-swiper插件。你可以通过npm或yarn进行安装: ```bash npm install vue-awesome-swiper --save ``` 然后,在你的Vue组件中,引入vue-awesome-swiper: ```javascript import 'swiper/css/swiper.css'; import VueAwesomeSwiper from 'vue-awesome-swiper'; Vue.use(VueAwesomeSwiper); ``` 接下来,你可以在Vue组件中使用vue-awesome-swiper来创建一个竖向无缝滚动的轮播图: ```html <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="news in newsList" :key="news.id"> <!-- 这里是你的新闻内容 --> <h3>{{ news.title }}</h3> <p>{{ news.content }}</p> </div> </div> </div> </template> <script> export default { data() { return { newsList: [ // 这里是你的新闻数据 { id: 1, title: '新闻标题1', content: '新闻内容1' }, { id: 2, title: '新闻标题2', content: '新闻内容2' }, { id: 3, title: '新闻标题3', content: '新闻内容3' }, // ... ] }; } }; </script> <style> .swiper-container { height: 300px; /* 设置轮播图容器的高度 */ } </style> ``` 最后,你可以在组件的生命周期钩子中初始化swiper: ```javascript mounted() { this.$nextTick(() => { new Swiper('.swiper-container', { direction: 'vertical', loop: true, autoplay: { delay: 3000, // 自动切换的间隔时间 disableOnInteraction: false // 用户操作后是否停止自动切换 } }); }); } ``` 上述代码中的swiper-container类名和swiper-wrapper类名是vue-awesome-swiper插件要求的类名,需要保持一致。 希望这个示例能帮助到你实现竖向无缝滚动的轮播图。如果有任何问题,请随时向我提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值