【vue中修改swiper样式】

这篇具有很好参考价值的文章主要介绍了【vue中修改swiper样式】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文:https://www.cnblogs.com/fightjianxian/p/11920913.html

vue中修改swiper样式

问题:vue单文件组件中无法修改swiper样式。
解决

1. 单文件组件中:新增一个style 不加scoped 让它最终成为全局样式。只在其中操作swiper的样式。

<style lang="scss">
  .swiper-container{
    .swiper-pagination{
      .swiper-pagination-bullet{
        width: 14px;
        height: 14px;
      }
    }
  }
</style>

// 项目中多次使用swiper 的话 就给swiper-container 添加特定className作为区分。
<div class="swiper-container index-swiper"><div>
<style>
    .index-wiper{}
</style>

2. 新建专用于操作swiper 样式的css, 在main.js中引入, 使用!import保证比swiper 预设样式权重高。

产生原因

  • 单文件中的template,和style 都会经过vue-loader的编译。在style标签上使用了 scoped 属性的话,template中手写的元素和style之间会通过vue-loader生成的一个自定义属性,形成呼应关系,style只对对应的template起作用。 编译过程中由swiper 生成的分页器标签不会经过vue-loader的编译,所以选不到。
// vue-loader 生成的 data-v-2967ba60

footer-bar[data-v-2967ba60]

<div class="footer-bar" data-v-2967ba60>
  • 不使用scoped 修饰的都是全局样式,如果在全局样式中还是覆盖不了的话说明选择器权重没有swiper中预定义的高。

vue-awesome-swiper 组件内设置样式失效问题

给外框定义id

<swiper class="swiper" id="pa" :options="swiperOption"  ref="mySwiper">
    <!-- slides -->
    <swiper-slide style="background: #007aff"> I'm slide 1</swiper-slide>
    <swiper-slide style="background: yellow"> I'm slide 2</swiper-slide>
    <swiper-slide style="background: red"> I'm slide 3</swiper-slide>
    <swiper-slide style="background: green"> I'm slide 4</swiper-slide>
    <!-- Optional controls -->
    <div class="swiper-pagination" slot="pagination"></div>
  </swiper>

方法一:全局覆盖

  • **单独新建css文件,在index.html引入 **
  • 在组件内书写 不要加scoped
<style>
  .swiper {
    width: 100%;
    height: 600px;
  }

  swiper-slide {
    width: 100%;
    height: 600px;
  }

  .swiper-pagination-bullet {
    width: 20px;
    height: 20px;
    text-align: center;
    line-height: 20px;
    font-size: 12px;
    color:#000;
    opacity: 1;
    background: rgba(0,0,0,0.2);
  }
  .swiper-pagination-bullet-active {
    color:#fff;
    background: #ff51d6;
  }

注:如果存在优先级问题 添加 !important提升指定样式规则的应用优先权 例如:

<style>
    .swiper-pagination-bullet-active {
        color: #fff !important;
    }
</style>

方法二:局部样式限定

用该组件最外层class包裹内部轮播样式,不加scoped

<style css="less">
.swiper{
    .swiper-pagination-bullet-active {
        color: #fff;
    }
}
</style>

方法三:样式穿透(推荐)

/deep/ 是sass和less的样式穿透

#pa /deep/ .swiper-pagination-bullet {
    width: 20px;
    height: 20px;
    text-align: center;
    line-height: 20px;
    font-size: 12px;
    color:#000;
    opacity: 1;
    background: rgba(0,0,0,0.2);
  }
  #pa /deep/ .swiper-pagination-bullet-active {
    color:#fff;
    background: #ff51d6;
  }

是stylus的样式穿透

#pa >>> .swiper-pagination-bullet {
    width: 20px;
    height: 20px;
    text-align: center;
    line-height: 20px;
    font-size: 12px;
    color:#000;
    opacity: 1;
    background: rgba(0,0,0,0.2);
  }
  #pa >>> .swiper-pagination-bullet-active {
    color:#fff;
    background: #ff51d6;
  }

全部代码文章来源地址https://www.toymoban.com/news/detail-473470.html

<template>
  <swiper class="swiper" id="pa" :options="swiperOption"  ref="mySwiper">
    <!-- slides -->
    <swiper-slide style="background: #007aff"> I'm slide 1</swiper-slide>
    <swiper-slide style="background: yellow"> I'm slide 2</swiper-slide>
    <swiper-slide style="background: red"> I'm slide 3</swiper-slide>
    <swiper-slide style="background: green"> I'm slide 4</swiper-slide>
    <!-- Optional controls -->
    <div class="swiper-pagination" slot="pagination"></div>
  </swiper>
</template>
<script>
  import {swiper, swiperSlide} from 'vue-awesome-swiper'
  import 'swiper/dist/css/swiper.css'

  export default {
    name: 'carrousel',
    data() {
      return {
        swiperOption: {
          // spaceBetween: 30, //板块间距
          loop: true, //无缝轮播
          centeredSlides: true,
          autoplay: {  //自动轮播
            delay: 3000,
            disableOnInteraction: false,
          },
          pagination: {
            el: '.swiper-pagination',
            clickable: true,
            paginationClickable: false,
            paginationType: 'custom',
          }
        }
      }
    },
    components: {
      swiper,
      swiperSlide
    },
    // 如果你需要得到当前的swiper对象来做一些事情,你可以像下面这样定义一个方法属性来获取当前的swiper对象,同时notNextTick必须为true
    computed: {
      swiper() {
        // console.log(this.$refs.mySwiper.swiper);
        return this.$refs.mySwiper.swiper
      }
    },
    mounted() {
      // 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
      console.log('this is current swiper instance object', this.swiper);
      // this.swiper.slideTo(3, 1000, false)
      console.log('mounted');
      //鼠标覆盖停止自动切换
      this.swiper.el.onmouseover = function () {
        this.swiper.autoplay.stop();
      };
      //鼠标离开开始自动切换
      this.swiper.el.onmouseout = function () {
        this.swiper.autoplay.start();
      };
    }
  }
</script>
<style scoped>
  .swiper {
    width: 100%;
    height: 600px;
  }

  swiper-slide {
    width: 100%;
    height: 600px;
  }

  #pa /deep/ .swiper-pagination-bullet {
    width: 20px;
    height: 20px;
    text-align: center;
    line-height: 20px;
    font-size: 12px;
    color:#000;
    opacity: 1;
    background: rgba(0,0,0,0.2);
  }
  #pa /deep/ .swiper-pagination-bullet-active {
    color:#fff;
    background: #ff51d6;
  }
</style>

到了这里,关于【vue中修改swiper样式】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序 - Taro小程序中打开h5页面链接 - 并解决:无法打开该页面 - 不支持打开 https://www.baidu.com/,请在“小程序右上角更多->反馈与投诉”中和开发者反馈

    Taro 小程序中h5跳转打开页面 借助 webView 组件打开h5页面 @/pages/webView/webView.js 文件 Taro 中 webView 组件 29 行 主要代码 无法打开该页面 - 不支持打开 https://www.baidu.com/,请在“小程序右上角更多-反馈与投诉”中和开发者反馈 解决 - 在微信公众平台 小程序进行业务域名配置 具体

    2024年02月09日
    浏览(41)
  • 云计算与openStack-openStack学习 https://www.bilibili.com/video/BV1Jq4y1M7GC?p=22&spm_id_from=pageDriver

    一.openStack的主要组件 openStack提供硬件的管理能力,不提供硬件,支持不同厂商的硬件环境,将不同的硬件环境放在硬件池里面来统一管理 openStack还提供了认证服务、监测服务和数据库服务三大共享服务来服务上面的三大组件 ,应用程序可以通过API来管理提供的这三大组件和组件

    2023年04月14日
    浏览(42)
  • 【微信小程序】swiper自定义样式:指示点样式 wx-swiper-dot

    调试基础库:2.26.0 .wx-swiper-dots : 指示点容器样式 .wx-swiper-dots-horizontal : 水平滑动的指示点容器样式,其在 .wx-swiper-dots 内。 .wx-swiper-dot :指示点样式 .wx-swiper-dot-active : 当前指示点样式 默认指示点颜色 改变指示点颜色 默认指示点形状 改变指示点形状 默认指示点位置贴近

    2024年02月12日
    浏览(41)
  • vue3项目使用样式穿透修改elementUI默认样式

    在css单文件中,我们在style标签中写组件的样式,可以看到,一般style标签都会带上一个scoped属性,这样可以实现及时不同组件选择器一样,但是样式互不干扰。 看一个例子,我们在两个组件中都定义一个 hello-world-box 类,在对应的scope标签中设置不同的样式。 可以看到,vu

    2023年04月09日
    浏览(42)
  • 【Vue项目搭建】修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式

    掌握分寸感,找目标一致的人协同你,有效地调配资源,就可以提高效率。 写在前面的话 :博主最近想要搭建自己的前端若依项目,因此此系列博客会做一些记录。我的项目gitee地址: https://gitee.com/xuruicong/rachel-front-show 说明:只运行前端项目,只需要要下载官方项目http:

    2024年01月19日
    浏览(104)
  • nginx将xxx.com重定向到www.xxx.com配置

    有时候,我们网站,需要将顶级域名xxx.com统一跳转到二级域名www.xxx.com下。这时候,我们可以通过修改nginx配置达到我们的目的。

    2024年03月23日
    浏览(56)
  • 在vue中全局修改滚动条样式

    在App.vue中加入以下样式代码: 就会出现如下图所示样式: 注意:app的样式中不要使用scoped,不然全局无法生效!

    2024年02月13日
    浏览(38)
  • vue修改element面包屑样式

    element面包屑默认后边的是浅颜色的,前边的是深色的, 现在UI设计图要修改成前面是浅色的,后面是深色的 如果直接修改样式会无法区分一级或者二级路由,用一下方法可以实现: 这样就会给一级路由加上了first_route类名,给二级路由加上了two_route的类名,然后定义样式:

    2024年01月25日
    浏览(45)
  • 【vue+elementUI】输入框样式、选择器样式、树形选择器和下拉框样式修改

    写在style中不能加scoped,所以可以在最外层的div加一个专属名再写样式: A. 选择器的下拉弹框样式修改 el-select下拉项的的容器是div#app之外的,所以在scoped作用域内使用或/deep/修改样式无效,要想: 官网如是说:加 :popper-append-to-body=\\\"false\\\" 代码像普通样子写: B. 时间选择器的下

    2024年02月07日
    浏览(46)
  • Ant Design Vue 修改表格头部样式

    在网上搜了好多修改表格头部样式的,最后自己摸索出来,分享给大家,最后附上完整代码。 首先用到的是 customHeaderRow 这个API,类型是一个函数 此图是 console.log(conlumn); 打印出来的 可以看到每一列都有一个className

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包