返回顶部
首页 > 资讯 > 前端开发 > VUE >怎么设置css作用域
  • 593
分享到

怎么设置css作用域

2024-04-02 19:04:59 593人浏览 薄情痞子
摘要

这篇文章主要讲解了“怎么设置CSS作用域”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么设置css作用域”吧! 在css中,可

这篇文章主要讲解了“怎么设置CSS作用域”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么设置css作用域”吧!

在css中,可以使用scoped属性来设置作用域;当style标签有scoped属性时,它的CSS只作用于当前组件中的元素。不过一个子组件的根节点会同时受到其父作用域的CSS和子组件有作用域的CSS的影响。

教程操作环境:windows7系统、css3&&HTML5版、Dell G3电脑。

初接触Vue单文件,对style标签里的scoped属性难免有一点困惑,毕竟之前没有用到过,下面是关于scoped的一些讲解。

一个标准的.vue文件是这样的:

// html内容区域
<template>
  <div class="hello">
    <h2>{{ msg }}</h2>
  </div>
</template>

//相关数据及事件区域,通俗说就是我们写js代码的地方
<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your vue.js App'
    }
  }
}
</script>

// CSS样式区域
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
    .hello { color: #efefef; }
</style>

可以看到在style标签里面有一个scoped属性,当style标签有scoped属性时,它的CSS只作用于当前组件中的元素。这类似于shadow DOM中的样式封装。它有一些注意事项,但不需要任何的Profill。它通过使用PostCSS来实现以下转换:

<style scoped>
.example {
  color: red;
}
</style>

<template>
  <div class="example">hi</div>
</template>

转换结果:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>

<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>

混用本地和全局样式

有一点值得注意一下,在一个组件中可以同时使用有作用域和无作用域的样式:

<style>

</style>

<style scoped>

</style>

子元素样式是子元素的根元素和子组件内CSS共同作用的结果

使用scoped后,父作用域的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受到其父作用域的CSS和子组件有作用域的CSS的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式,示例如下:

子组件

<template>
    <div class="wrap">
        <p>Hello world</p>
    </div>
</template>

<style scoped>
    .wrap {
        color: #ffffff;
        background: #666666;
    }
</style>

父组件

<template>
    <div class="wrap">
       //ChildMOdul为上面的子组件 
       <ChildModul/>
    </div>
</tamplate>
<style scoped>
//子组件根元素样式
    .wrap {
        margin: 0 10px
    }
</style>

子组件中定义了一个背景色为#efefef颜色为#ccc的样式,在父元素中,为子组件的根元素定义了一个左右为10px的边框,而子模块最终表现出来的样式是这样的:
怎么设置css作用域

从上图可以看出,子组件的样式是父组件中子组件根元素和子组件中scoped中CSS样式共同作用的结果。

深度作用选择器

如果你希望scoped样式中的一个选择器能够作用的“更深”,例如影响子组件,你可以使用>>>操作符:

<style scoped>
.a >>> .b {  }
</style>

上述代码将会编译成:

.a[data-v-f3f3eg9] .b {  }

有些像Sass之类的预处理器无法正确解析>>>。这种情况下可以使用/deep/操作符取而代之–这是一个>>>的别名,同样可以正常工作。试着用之前的代码,使用深度作用选择器在父组件中设置子组件的样式:

父组件

.wrap /deep/ .child--css {
    font-size: 36px;
  }

效果图:
怎么设置css作用域

从高度可以看得到,样式已经作用到子组件里面了。我知道你可能要问,没有看到Sass预选择器,为什么用的是/deep/而不是>>>,这个其实我也不知道,先用了>>>没有用,然后换了使用/deep/,样式是有效果的。说句不负责任的话,如果>>>没作用,就换成/deep/吧,反正目的是让父组件里写的样式能渗透到子组件。。。

动态生成的内容

通过v-html创建的DOM内容不受作用域内的样式的影响。但是你仍然可以通过深度作用选择器为它们设置样式。

需留意事件

  • CSS作用域不能代替class: 考虑到浏览器渲染各种CSS选择器的方式,当p{ color: red } 设置了作用域时(即与特性选择器组合使用时)会慢很多倍。如果你使用class或者id取而代之,比如.example { color: red },性能影响就会消除。

  • 在递归组件中小心使用后代选择器对选择器.a .b中的CSS规则来说,如果匹配 .a的元素包含一个递归子组件,则所有的子组件中的.b都将被这个规则匹配。

感谢各位的阅读,以上就是“怎么设置css作用域”的内容了,经过本文的学习后,相信大家对怎么设置css作用域这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么设置css作用域

本文链接: https://lsjlt.com/news/75173.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么设置css作用域
    这篇文章主要讲解了“怎么设置css作用域”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么设置css作用域”吧! 在css中,可...
    99+
    2024-04-02
  • VB.NET中怎么设置共享变量作用域
    今天就跟大家聊聊有关VB.NET中怎么设置共享变量作用域,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一个VB.NET共享变量可以使用Shared关键字来声明,这一点很象共享方法的声...
    99+
    2023-06-17
  • 域名怎么设置
    设置域名的方法:登录域名的提供商官网。进入到个人中心,找到域名管理。进行域名解析,进入解析界面。接着添加解析,然后再填写你需要绑定的域名即可。...
    99+
    2024-04-02
  • 网页设计与制作css样式怎么设置
    如何设置 css 样式 CSS 全称层叠样式表 (Cascading Style Sheets),用于控制网页的外观和布局。以下是设置 CSS 样式的步骤: 1. 创建 CSS 文件 新...
    99+
    2024-04-25
    css
  • css如何设置扇形区域
    这篇文章将为大家详细讲解有关css如何设置扇形区域,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在css中,可以利用border-radius属性来设置扇形区域。border-radius属性可以设置边框...
    99+
    2023-06-14
  • css怎么设置fontfamily
    小编给大家分享一下css怎么设置fontfamily,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css的全称是什么css的全称是Cascading Style ...
    99+
    2023-06-14
  • jq怎么设置css
    这篇文章主要介绍了jq怎么设置css,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。jq设置css的方法:1、设置单个样式属性,代码为【$('#test').c...
    99+
    2023-06-14
  • js怎么设置css
    这篇文章主要介绍js怎么设置css,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!方法:1、引入jquery,使用css()方法设置css,语法“$("对象名").css("属性"...
    99+
    2023-06-14
  • cdn怎么设置域名
    cdn设置域名的操作步骤:登录空间提供商平台。购买cdn加速服务。购买成功后,进入cdn加速管理。点击“添加域名”。填写需要加速的域名、配置源站、缓存等信息。点击确定提交添加即可。...
    99+
    2024-04-02
  • 怎么用css设置行间距
    本文小编为大家详细介绍“怎么用css设置行间距”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用css设置行间距”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、使用数值来设置行间距,是拥有标准行高的段落。 ...
    99+
    2023-06-30
  • 怎么使用css设置定位
    本篇内容介绍了“怎么使用css设置定位”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!相对定位相对定位是指相对于元素在文档流中原本位置的定位方...
    99+
    2023-07-06
  • 怎么使用作用域与作用域链
    这篇文章主要讲解了“怎么使用作用域与作用域链”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用作用域与作用域链”吧!一、作用域如果说执行上下文是代码的执...
    99+
    2024-04-02
  • css怎么设置斜体
    本篇内容介绍了“css怎么设置斜体”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • css怎么设置间距
    这篇文章主要讲解了“css怎么设置间距”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css怎么设置间距”吧! 设置方法:1、使用...
    99+
    2024-04-02
  • css怎么设置图片
    css设置图片的方法:在css中可以使用background-image属性来设置图片。示例:<!DOCTYPE html><html><head><style>div{width:...
    99+
    2024-04-02
  • css怎么设置浮动
    小编给大家分享一下css怎么设置浮动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用...
    99+
    2023-06-14
  • css怎么设置楷体
    这篇文章将为大家详细讲解有关css怎么设置楷体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css设置楷体的方法:首先新建一个html文件;然后在html <style>标签中,输入css代码...
    99+
    2023-06-15
  • CSS怎么设置渐变
    小编给大家分享一下CSS怎么设置渐变,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!分别为线性渐变和径向渐变。渐变一般设置在背景,与元素相对应。以下为源码:<...
    99+
    2023-06-27
  • CSS怎么设置边框
    小编给大家分享一下CSS怎么设置边框,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!border:设置边框。如:设置边框为 2px,实线,红色。p{border:2...
    99+
    2023-06-27
  • css怎么设置行高
    今天小编给大家分享一下css怎么设置行高的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。表示行高的css属性是line-hei...
    99+
    2023-07-04
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作