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

网站开发需求分析报告网络营销自学网站

网站开发需求分析报告,网络营销自学网站,网站如何做微信支付链接,wordpress多用户信息发布1. 前言 本次我们主要结合一些案例研究一下vue的插槽中样式污染问题。在这篇文章中&#xff0c;我们主要关注以下两点: 父组件的样式是否会影响子组件的样式&#xff1f;子组件的样式是否会影响父组件定义的插槽部分的样式&#xff1f; 2. 准备代码 2.1 父组件代码 <te…

1. 前言

本次我们主要结合一些案例研究一下vue的插槽中样式污染问题。在这篇文章中,我们主要关注以下两点:

  • 父组件的样式是否会影响子组件的样式?
  • 子组件的样式是否会影响父组件定义的插槽部分的样式?

2. 准备代码

2.1 父组件代码

<template><div class="wrap"><div>parent-root</div><A><div slot-parent><div class="container">parent_content</div></div></A></div>
</template>
<script lang=ts setup>
import A from './A.vue';
</script>
<style lang=scss scoped>
.wrap{width: 400px;height: 400px;background-color: lightgreen;color: red;
}
.container{background-color: lightcoral;
}
</style>

2.2 子组件代码

<template><div class="wrap" child><div>child-header</div><slot></slot><div class="container">child-footer</div></div>
</template>
<script lang=ts setup>
</script>
<style lang=scss scoped>
.container{width: 100px;height: 100px;background-color: lightblue;
}
.wrap{border: 1px solid black;
}
</style>

2.3 最终编译的代码

在这里插入图片描述
通过上面的代码,我们得出几个结论:

  • 子组件的顶级标签会继承父组件的文件指纹。
  • 子组件的插槽(父级定义的插槽代码)的顶级标签不会继承子组件的文件指纹。

3. 问题分析

3.1 父组件是否污染子组件问题

通过上面的分析,我们知道父组件的文件指纹会继承到子组件的顶级标签上,也就是说父组件的样式有可能会影响子组件的样式。
比如,我们在父组件中定义了wrap的样式:

.wrap{width: 400px;height: 400px;background-color: lightgreen;color: red;
}

那么他生成的代码如下:
在这里插入图片描述
在这里插入图片描述
此时,我们发现在父组件定义的wrap样式在子组件的顶级标签仍然起作用。此时,就会污染子组件。

目前我还没有比较好的解决方案,只能在实际开发中对于类名的命名尽量避免相同。

3.2 子组件是否会污染插槽中的样式

通过上面的分析,我们知道插槽中的html片段并不会携带子组件的文件指纹。由于在子组件定义的样式都会携带子组件的文件指纹,所以子组件定义的样式并不会影响插槽中html片段的样式。
当然,这个假定也都是在不使用v-deep的前提下生效。如果掺杂v-deep呢?

3.3 v-deep下子组件插槽样式的污染情况

父组件代码

<template><div class="wrap"><div>parent-root</div><A><div slot-parent><div class="container">parent_content</div></div></A></div>
</template>
<script lang=ts setup>
import A from './A.vue';
</script>
<style lang=scss scoped>
.wrap{width: 400px;height: 400px;background-color: lightgreen;color: red;
}
.container{background-color: lightcoral;
}
</style>

子组件代码

<template><div class="wrap" child><div>child-header</div><slot></slot><div class="container">child-footer</div></div>
</template>
<script lang=ts setup>
</script>
<style lang=scss scoped>
.container{width: 100px;height: 100px;background-color: lightblue;
}
.wrap{border: 1px solid black;::v-deep .container{border: 5px dashed lightsalmon;}
}
</style>

在这里插入图片描述
通过上面分析的代码,我们发现parent_content所在的标签和child-footer所在的标签都生效了,也就是说子组件的样式污染了父组件的标签。
这一点在开发中要注意,要慎重使用v-deep,不然会产生难以预料的结果。这里有可能有人会想,在最后加一个v-deep就行了呗。
而实际事与愿违,因为对于多个v-deep,vue只能识别出第一个,后面的会按照样式名为v-deep进行渲染。

.wrap{border: 1px solid black;::v-deep .container::v-deep{border: 5px dashed lightsalmon;}
}

在这里插入图片描述

http://www.dt0577.cn/news/29153.html

相关文章:

  • 办公空间设计网站西安网站推广助理
  • 烟台制作网站有哪些代推广平台
  • 手机怎么做程序广州抖音seo公司
  • 做物流的网站都有什么今日足球比赛预测推荐分析
  • 个人网店店铺名字兰州seo网站建设
  • 有人做网站花了10几万百度销售平台
  • 上不了国外网站 怎么做贸易网络舆情
  • 书香气的域名做网站网站如何快速收录
  • 如何做家具网站seo网络推广知识
  • 深圳好的高端企业网站建设公司成人职业技能培训学校
  • dede如何做手机网站收录排名好的发帖网站
  • wordpress小说网站模板百度百家号
  • 阿里云建网站2345网址导航中国最好
  • 保定网站开发公司seo短视频网页入口引流
  • 网站的搜索引擎方案创意设计
  • 株洲网站建设网络运营怎么学
  • 建设网站远达seo网站外包公司
  • 中国做二手房最大的网站百度问答官网
  • 知乎有趣的网站培训课程设计
  • 没备案的网站怎么做淘客seo关键词排名工具
  • 哈尔滨做网站价格谷歌在线搜索
  • 公司网站二维码怎么做的网络推广工作内容怎么写
  • 电子商务网站总体规划的内容网页设计与制作作业成品
  • 用wordpress复制一个网站模板宁波谷歌seo推广
  • 宽屏蓝色企业网站源码大型seo公司
  • 怎样做网络推广好商品seo优化是什么意思
  • 做网站需要啥济南网站优化排名
  • 免费电视剧网站大全在线观看互联网营销推广怎么做
  • 浙江网站建设电话外贸网站平台都有哪些
  • ui图标素材网站东莞最新消息今天