当前位置: 首页 > news >正文

青岛网站自己做图片上传网站

青岛网站,自己做图片上传网站,搜狗关键词排名此会zjkwlgs,中国国际旅行社官网线路引言 在Vue开发中#xff0c;Scoped CSS是一个强大而复杂的功能。它允许我们将样式限制在特定组件内#xff0c;但同时也带来了一些细微的行为#xff0c;可能导致意外的样式泄漏。本文将深入探讨Vue Scoped CSS的工作原理#xff0c;解释常见的误区#xff…引言 在Vue开发中Scoped CSS是一个强大而复杂的功能。它允许我们将样式限制在特定组件内但同时也带来了一些细微的行为可能导致意外的样式泄漏。本文将深入探讨Vue Scoped CSS的工作原理解释常见的误区并提供最佳实践建议。 Scoped CSS的基本原理 当我们在Vue组件中使用style scoped时Vue会使用PostCSS对CSS进行转换。这个过程包括 为组件的元素添加一个唯一的数据属性例如data-v-f3f3eg9。重写CSS选择器使其包含这个唯一属性。 例如以下代码 templatediv classexampleHello/div /templatestyle scoped .example { color: red; } /style 会被转换为 div classexample data-v-f3f3eg9Hello/div .example[data-v-f3f3eg9] { color: red; } 这样样式就被限制在了特定的组件内。 父子组件的Scoped CSS行为 当涉及到父子组件时Scoped CSS的行为会变得复杂。让我们看一个例子 !-- ParentComponent.vue -- templatediv classparentChildComponent //div /templatestyle scoped .parent { color: blue; } .child { color: red; } /style!-- ChildComponent.vue -- templatediv classchildpChild content/p/div /templatestyle scoped .child { color: green; } /style 在这个例子中 父组件的.parent样式会正常应用不会影响子组件。父组件的.child样式会影响到子组件尽管子组件有自己的scoped样式。 解密data-v属性继承 这里有一个常见的误解需要澄清。当我们说子组件的根元素继承父组件的作用域时并不意味着子组件的根元素获得与父组件相同的data-v-属性。实际情况如下 唯一标识符每个带有scoped样式的组件都有自己唯一的data-v-标识符。子组件根元素子组件的根元素实际上同时接收到自己的data-v-属性和父组件的data-v-属性。内部元素子组件内部的元素只接收子组件自己的data-v-属性。 让我们看一个具体的例子 !-- ParentComponent.vue -- templatediv classparentChildComponent //div /template!-- ChildComponent.vue -- templatediv classchildpChild content/p/div /template 渲染后的HTML如下所示 div classparent data-v-parent123div classchild data-v-child456 data-v-parent123p data-v-child456Child content/p/div /div 注意 父div有data-v-parent123子组件的根div同时有data-v-child456和data-v-parent123子组件内的p元素只有data-v-child456 为什么会这样 根元素继承子组件的根元素继承父组件的作用域这允许父组件有意地对子组件进行样式设置。隐式深度选择器Vue对scoped样式中的类选择器和属性选择器应用了隐式的深度选择器行为。这不同于显式使用/deep/或但效果类似。组件边界处理Vue对组件之间的边界和组件内部的边界处理方式不同这就是为什么样式可能会以看似意外的方式泄漏到子组件中。 这种机制的影响 样式泄漏父组件的样式可能会影响子组件的根元素这既可能是有用的也可能造成问题。特异性增加子组件的根元素由于有两个data-v-属性其特异性更高这可能使得样式覆盖变得棘手。调试在检查元素时看到多个data-v-属性可以帮助你理解样式来源。 如何控制这种行为 提高选择器特异性在子组件中使用更具体的选择器。 !-- ChildComponent.vue -- style scoped .child-component .child { color: green; } /style 使用CSS Modules考虑使用CSS Modules而不是scoped CSS以获得更严格的封装。 style module .child { color: green; } /style 采用BEM命名约定使用BEM等命名约定来减少冲突的可能性。 templatediv classchild-component__containerp classchild-component__textChild content/p/div /templatestyle scoped .child-component__container { /* styles */ } .child-component__text { /* styles */ } /style 使用Vue 3的:deep()伪类在Vue 3中可以使用:deep()伪类来明确控制深度选择器的行为。 style scoped .parent :deep(.child) {/* 这会影响.parent内的.child即使在子组件中 */color: red; } /style 最佳实践 明确意图当从父组件样式化子组件时要尽可能具体以避免意外的样式泄漏。使用组件类为你的组件添加识别性的类使选择更加有意图性。 templatediv classmy-component!-- 组件内容 --/div /templatestyle scoped .my-component { /* 样式 */ } /style 谨慎使用全局样式尽量避免在scoped样式中使用全局选择器。如果必须使用请确保你完全理解其影响。 style scoped /* 避免这样做 */ * { margin: 0; }/* 如果必须请使用更具体的选择器 */ .my-component * { margin: 0; } /style 利用CSS变量使用CSS变量可以在保持样式封装的同时提供一定的灵活性。 !-- ParentComponent.vue -- style :root {--main-color: blue; } /style!-- ChildComponent.vue -- style scoped .child {color: var(--main-color); } /style
http://www.w-s-a.com/news/960236/

相关文章:

  • 成都微信网站开发优化大师优化项目有哪些
  • 哪个网站做自考题目免费郑州网站建设公司qq
  • 地方性的网站有前途顺的网络做网站好不好
  • 学校申请建设网站的原因不要网站域名
  • 推荐响应式网站建设子域名查询工具
  • 如何建设学校的微网站广告推广是什么
  • 设计类专业哪个就业前景好网站建设seoppt
  • 济南建站公司网站网站友链查询源码
  • 校园失物招领网站建设涪陵网站建设公司
  • 怎么做盗号网站手机网站建设需要租用什么科目
  • 成品网站是什么意思沈阳seo推广
  • 购物网站后台流程图昆明官网seo技术
  • 创建自己网站全网零售管理系统
  • 江苏省建设厅网站建筑电工证wordpress收费插件大全
  • 北京中国建设银行招聘信息网站宁德蕉城住房和城乡建设部网站
  • 泉州做网站优化哪家好wordpress站点预览
  • 创建门户网站一页网站首页图如何做
  • 服装手机商城网站建设sns社交网站有哪些
  • 无锡工程建设招标网站怎么自己建设公司网站
  • 哪个网站可以学做咸菜安卓软件开发需要学什么软件
  • 自有网站建设的团队遂宁市建设局网站
  • 网站建设哪个好一些网站内容导出
  • 什么网站的页面做的比较好看网上做平面设计的网站
  • 网站建设单选网站建设学校培训学校
  • 可以做app的网站logo设计在线生成免费标小智
  • 网站变更备案做酒类网站
  • 网站必须要备案吗东莞市非凡网站建设
  • 太原建网站公司网站设计的流程是怎样的
  • 网站开发交易平台北京网站建设的价格低
  • 捷克注册公司网站搜索引擎广告推广