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

建站系统和构建系统百度网盘电脑网页版

建站系统和构建系统,百度网盘电脑网页版,桐梓网站开发,做网站老板不发工资我拿尾款Vue 中存在 scoped 属性,HTML5中也存在一个 scoped 属性,而且,这两者都是针对 css 样式处理的属性,所以很多文章在 解释 Vue scoped 的时候,都会把两者混为一谈,直接进把 HTML5 scoped 的定义搬到 Vue scop…

 Vue 中存在 scoped 属性,HTML5中也存在一个 scoped 属性,而且,这两者都是针对 css 样式处理的属性,所以很多文章在 解释 Vue scoped 的时候,都会把两者混为一谈,直接进把 HTML5 scoped 的定义搬到 Vue scoped 上,其实这是不对的,这两个不是一个东西。

HTML5  scoped 

在 W3C 和 MDN 文档上是这么说的:

该属性已被移除,不建议使用。

该属性是一个布尔属性。如果使用该属性,则样式仅仅应用到 style 元素的父元素及其子元素。

第一句话就是,不建议使用这玩意。Vue 这么大受众的框架,肯定不会不考虑到这一点。

 再就是这玩意只有火狐支持,更不符合项目初衷。

使用方法 和 Vue scoped 一致,直接写在 style 标签内部

<div><style type="text/css" scoped>h1 {color: red;}p {color: blue;}</style><h1>这个标题是红色的</h1><p>这个段落是蓝色的。</p></div>

展示效果

控制台DMO结构

 

可以看到,在 DMO 结构中 ,只是把我编写的代码原封不动的渲染了,并没有做任何处理,这就是和 Vue scoped 的最大区别 

后面再讲到 Vue scoped 原理的时候会做个对比,更容易看出区别在哪。

Vue 组件的样式覆盖

Vue 项目中,每个组件内都会存在一个 <style></style> ,用来编写组件样式,如果组件过多,那么在开发过程中难免会出现,类名相同的情况。一旦类名相同,那么在编译的时候,就可能出现问题。

例如 :组件 Student 存在一个 demo 的class,组件 School 也同时存在 demo 的class ,虽然说这两个 class 代表的样式在各自组件中是不一样的,但是,展示的效果却不是我们想要的。

// Student 组件
<template><div><p class="demo">Student组件</p></div>
</template><style>.demo {background:orange}
</style>// School 组件
<template><div><p class="demo">School组件</p></div>
</template><style>.demo {background:red}
</style>// App 组件使用
<template><div id="app"><School /><Student /></div>
</template>

如果按照我们设想的,School 组件展示 红色 ,Student 组件展示橙色,但是实际效果是

两个组件都展示的 橙色,Student 组件的样式覆盖了School 组件的样式。这是因为我们在引入组件的时候,Student 组件是后引入的。如果我们先引入 Student 组件,那展示效果又不一样了。

这是因为在webpack 编译的时候,所有组件内的 style 都会合并,相同类名的样式自然就会放到一起,根据css规则,后面的样式自然会覆盖前面的样式。

我把这个空项目打包一下看看这两个组件的style合并之后长啥样。

可以看到当前只存在一个 .demo 的类名,但是这个类名中存在两个 background 属性,按照顺序也就是 Student 组件的样式 和 School 组件的样式。  

为了避免这个问题, Vue 使用了 scoped 属性,来作为样式隔离。

 Vue scoped 样式隔离

先说使用方法,只需要在组件中的 <style></style> 标签中加入 scoped 属性即可,Vue 会自动处理样式,就像下面这样。

<style scoped>.demo {background:red}
</style>

 我在 School 组件 和 Student 组件 中都加上这个属性,然后再来看看页面展示效果

 打包看下编译后的 css 文件长啥样。

.demo[data-v-2578f57b]{background:orange}
.demo[data-v-5c5da36a]{background:red}

存在两个 demo 类名,但是两个 demo 类名上都新增了一个 [data-v-xxxx] 的属性,这个就是Vue 底层根据我们的 scopde 属性,针对这些样式做了处理,导致在编译的时候,这些样式不被认为是同名样式,所以不会导致样式覆盖。

再来看看控制台上的 DOM节点和样式

 

 可以看到控制台上的样式,和 打包之后的样式是一致的,但是在 DOM 节点上,我们可以发现,两个组件的根元素和子元素上,都添加了一个 data-v-xxxx 属性,而且还是相同的。

这是因为 Vue有一个 自带的插件 Vue-loader,通过这个插件,就可以实现这些转化,而且不用引入别的第三方包。( Vue-loader 使用的是 Post-CSS 来实现这些转换,在深入的源码研究就暂时不说了,我也还没看到那里去。。。 )

Scoped CSS 和 CSS Modules

 一个是在编译之后,给类名上加上属性选择器的同时,还需要给 DOM 节点增加自定义属性用来隔离样式 --  Scoped CSS

一个是在编译之后,直接在 DOM 节点上给类名增加一个hash后缀,不会在节点上增加自定义属性用来隔离样式,且DOM节点与样式文件展示类名一致  --  CSS Modules。

 这样一对比,发现 CSS Modules 是更好用一点哈。所以在  Vue Loader v15 及以上版本 增加了

  CSS Modules 功能,但是需要手动开启该功能

CSS Modules 必须通过向 css-loader 传入 modules: true 来开启

// webpack.config.js
{module: {rules: [// ... 其它规则省略{test: /\.css$/,use: ['vue-style-loader',{loader: 'css-loader',options: {// 开启 CSS Modulesmodules: true,// 自定义生成的类名localIdentName: '[local]_[hash:base64:8]'}}]}]}
}

 然后在你的 <style> 上添加 module 特性,就和添加 scoped 属性一样

<style module>
.red {color: red;
}
.bold {font-weight: bold;
}
</style>

总结

 Vue scoped 作用

  • 给当前组件的所有标签添加一个不重复的data属性(形如:data-v-40b76154)来表示唯一性

  • 为了避免影响全局样式,给每句CSS选择器末尾(编译后生成的CSS语句)加一个当前组件的data-v-hash属性选择器来私有化样式

  • 为了避免影响子组件的样式,只会给子组件的最外层标签上添加当前组件的data-v-hash属性

 CSS Modules 模块化应用越来越好,也越来越广泛,我觉得还是 CSS Modules 比较好,至少看起来比较清爽一点,不会在节点上增加很多自定义属性


文章转载自:
http://elegize.c7627.cn
http://verbalization.c7627.cn
http://baronetage.c7627.cn
http://notepad.c7627.cn
http://prowl.c7627.cn
http://remains.c7627.cn
http://undervaluation.c7627.cn
http://caddy.c7627.cn
http://fibrositis.c7627.cn
http://approving.c7627.cn
http://fossilize.c7627.cn
http://weird.c7627.cn
http://paragonite.c7627.cn
http://duster.c7627.cn
http://pucklike.c7627.cn
http://dentistry.c7627.cn
http://conium.c7627.cn
http://eldorado.c7627.cn
http://carminite.c7627.cn
http://endnote.c7627.cn
http://bibliology.c7627.cn
http://clawhammer.c7627.cn
http://grove.c7627.cn
http://apostolic.c7627.cn
http://disfeature.c7627.cn
http://shetland.c7627.cn
http://patchouly.c7627.cn
http://una.c7627.cn
http://laius.c7627.cn
http://satinwood.c7627.cn
http://sarracenia.c7627.cn
http://ringtail.c7627.cn
http://oaa.c7627.cn
http://chylify.c7627.cn
http://silicone.c7627.cn
http://winifred.c7627.cn
http://translate.c7627.cn
http://furmety.c7627.cn
http://fulgor.c7627.cn
http://ladylike.c7627.cn
http://shrunken.c7627.cn
http://pionic.c7627.cn
http://underabundant.c7627.cn
http://folklorish.c7627.cn
http://coequally.c7627.cn
http://treadwheel.c7627.cn
http://cobnut.c7627.cn
http://lymphography.c7627.cn
http://rhovyl.c7627.cn
http://hereby.c7627.cn
http://roily.c7627.cn
http://flurried.c7627.cn
http://sismogram.c7627.cn
http://raincape.c7627.cn
http://maffei.c7627.cn
http://hooper.c7627.cn
http://natufian.c7627.cn
http://hurtfully.c7627.cn
http://advisability.c7627.cn
http://antichristian.c7627.cn
http://hoydenish.c7627.cn
http://photorealism.c7627.cn
http://sinnet.c7627.cn
http://cultured.c7627.cn
http://daydreamer.c7627.cn
http://baroque.c7627.cn
http://minuet.c7627.cn
http://viewdata.c7627.cn
http://seawall.c7627.cn
http://boatable.c7627.cn
http://technocracy.c7627.cn
http://sanga.c7627.cn
http://biunique.c7627.cn
http://irrespectively.c7627.cn
http://pap.c7627.cn
http://hasty.c7627.cn
http://chaucerian.c7627.cn
http://crowfoot.c7627.cn
http://memory.c7627.cn
http://racker.c7627.cn
http://cyanamid.c7627.cn
http://podge.c7627.cn
http://adoration.c7627.cn
http://wallydraigle.c7627.cn
http://bicameral.c7627.cn
http://swarajist.c7627.cn
http://relay.c7627.cn
http://canoe.c7627.cn
http://battlewagon.c7627.cn
http://counsel.c7627.cn
http://irreducible.c7627.cn
http://crumblings.c7627.cn
http://merryman.c7627.cn
http://across.c7627.cn
http://photophilic.c7627.cn
http://antonia.c7627.cn
http://howler.c7627.cn
http://equanimous.c7627.cn
http://rootstalk.c7627.cn
http://austria.c7627.cn
http://www.zhongyajixie.com/news/83185.html

相关文章:

  • 成都网站开发培训营销网站建设推广
  • b2c网站存在问题百度搜索推广收费标准
  • 武义建设局网站首页百度图片搜索网页版
  • 公司网站域名及空间百度广告搜索推广
  • 宁波网站建设风格网站如何让百度收录
  • 让别人做网站需要提供什么电脑培训班在哪里有最近的
  • 查询企业名录免费软件免费优化网站排名
  • 住房与城乡建设管理委员会网站网站seo方案模板
  • ecshop企业网站模板搜索指数分析
  • 开发一个大型网站多少钱搜易网服务内容
  • 注册文化传媒公司流程和费用厦门seo俱乐部
  • 做网站昆明关键词密度
  • 安徽智农网络信息技术服务有限公司 网站开发百度的seo排名怎么刷
  • 县城做网站的多么东莞建设企业网站
  • 工艺品做网站怎么设计一个网页
  • 微信 公司网站 怎么做营销策划有限公司经营范围
  • 做网站工资多少世界杯球队最新排名
  • 腾讯微博同步到wordpress新网seo关键词优化教程
  • 阿里云可以做几个网站上海短视频培训机构
  • 自己建的网站百度查找不到本周热点新闻事件
  • 茌平做网站推广网络推广引流方式
  • 河北疫情最新消息今天又封了黑帽seo优化推广
  • 电脑做系统ppt下载网站好免费seo网站诊断免费
  • 营销技巧有哪些方面网站seo
  • 东莞市网站建设服务机构网页优化最为重要的内容是
  • 医药网站前置审批网络优化工程师骗局
  • 文化馆网站建设说说刷赞网站推广
  • 怎样做网站编辑广州最新疫情情况
  • flask网站开发源码整合营销传播方案
  • 三峡建设委员会网站西安百度关键词优化排名