vue项目之页面class不生效问题及解决

 更新时间:2023年07月05日 16:14:49   作者:paopaosama  
这篇文章主要介绍了vue项目之页面class不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue项目页面class不生效问题

代码如下,vue项目中,页面有一个class为c-ul的div,但是浏览器中style里没有我的c-li样式。这是为什么呢。

研究一番之后发现

1.我的style是scoped,也就是css样式仅应用于我的这个名为component1的页面。因此,在挂载的时候,页面的所有元素都会被vue加上一个自定义属性名:类似于这样的<div data-v-5e57fb82="" class="wrapper"></div>

2.但是因为我的c-ul是条件渲染,因为List.length刚上来是0,所以这个元素不会被挂载在dom树里,因此,就不具备scoped的自定义标签在dom挂载的时候并不会挂载,

3.因此导致了,没有对应的data-v-5e57fb82属性,所以样式不会生效。

<div class='wrapper'>
    <div v-if="List.length" class="c-ul">
        这是一个list列表
    </div>
</div>
<script>
export default {
  name: 'component1',
  data(){
    return{
      List:[]
    }
  },
</scropt>
<style scoped>
  .wrapper{
    background-color: #f4f4f4;
    height: 100vh;
    overflow-y:scroll;
    -webkit-overflow-scrolling:touch;
  }
  .c-ul{
    min-height: 100vh ;
  }
</style>

解决办法

1.css style删除scoped,应用于整个项目,那么即便if条件满足之后,在dom中插入新的元素,没有scoped的自定义属性限制,c-ul就能够生效了。但是这个方法会使这套css应用于全局,会影响其他页面相同类名的元素样式。(推荐指数1颗星)

2.style仍然scoped,把v-if条件渲染标签需要的样式加在行间style里,就一定会生效,但是如果样式设置太多,则代码不简洁美观。(推荐指数2.5颗星)

3.style仍然scoped,把v-if条件渲染标签单独拎出来进行判断,加一层div,不能用template不然也会失效、(这个最方便解决,推荐指数3颗星!!!)

  <div v-if="List.length==0" 这里不加class='c-li',只用来v-if>
      <div class="c-li" >
        这里是list
      </div>
  </div>

4.style仍然scoped,但是不使用v-if来条件渲染,不然dom首次挂载中没有这个标签,导致样式不生效,可以使用v-show,原理是,v-show的标签一定会被挂载在dom中,只是display为none,那么既然他首次挂载在了DOM中,scoped给每个DOM元素加自定义属性的时候,这个c-ul元素也会有这个标识,那么对应的c-ul样式就会生效了~但是v-show的条件必须是true or false,语法上和v-if不同,需要你自己处理一下啦。(推荐指数2颗星)

v-html中@click和class不生效解决

vue v-html 中html标签中@click 和 class 不生效问题解决方案

前端用v-html解析渲染html标签能成功渲染,但click事件无法触发(vue没有将其作为vue的模板解析渲染)

点击事件解决方案

将标签中的@click  改为 onclick,

增加

created(){
    window.test=this.test ;
},
methods: {
    //标签中的点击事件    
    test() {
    },
}

点击事件就可以触发了

class 样式不生效解决方案

1.使用  >>>  穿透

2.定义一个新的style标签,不含有scoped

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue中JS动画与Velocity.js的结合使用

    Vue中JS动画与Velocity.js的结合使用

    这篇文章主要介绍了Vue中JS动画与Velocity.js的结合使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • vue实现过渡动画Message消息提示组件示例详解

    vue实现过渡动画Message消息提示组件示例详解

    这篇文章主要为大家介绍了vue实现过渡动画Message消息提示组件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Vue如何获取两个时间点之间的所有间隔时间

    Vue如何获取两个时间点之间的所有间隔时间

    这篇文章主要介绍了Vue如何获取两个时间点之间的所有间隔时间,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Vue2老项目配置ESLint和Prettier完整步骤

    Vue2老项目配置ESLint和Prettier完整步骤

    ESLint是一个静态代码分析工具,用于检查JavaScript代码的语法结构和查找程序错误,Prettier是一个代码格式化工具,这篇文章主要给大家介绍了关于Vue2老项目配置ESLint和Prettier的完整步骤,需要的朋友可以参考下
    2024-08-08
  • 在vue2项目中使用dart-sass的问题及解决方法

    在vue2项目中使用dart-sass的问题及解决方法

    在Vue2项目中,使用dart-sass替代node-sass可以解决安装困难和环境兼容问题,VueCLI3+用户可直接使用,而VueCLI2用户需升级VueCLI和项目,具体方法包括修改package.json依赖并使用.scss文件编写样式,此更改有助于提升项目的开发效率和跨平台兼容性
    2024-09-09
  • 关于vue-cli3打包代码后白屏的解决方案

    关于vue-cli3打包代码后白屏的解决方案

    这篇文章主要介绍了关于vue-cli3打包代码后白屏的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Vue项目使用CDN优化首屏加载问题

    Vue项目使用CDN优化首屏加载问题

    这篇文章主要介绍了Vue项目使用CDN优化首屏加载问题,本文以vue、vuex、vue-touter为例,给大家介绍处理流程,需要的朋友可以参考下
    2018-04-04
  • 利用HBuilder打包前端开发webapp为apk的方法

    利用HBuilder打包前端开发webapp为apk的方法

    下面小编就为大家带来一篇利用HBuilder打包前端开发webapp为apk的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 解决vue+ element ui 表单验证有值但验证失败问题

    解决vue+ element ui 表单验证有值但验证失败问题

    这篇文章主要介绍了vue+ element ui 表单验证有值但验证失败,本文通过实例代码给大家分享解决方案,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • vue组件间传值的6种方法总结

    vue组件间传值的6种方法总结

    这篇文章主要给大家介绍了关于vue组件间传值的6种方法,组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,需要的朋友可以参考下
    2023-08-08

最新评论