h5新特性:<style scoped>
2017-06-08 16:57
489 查看
h5的新特性:范围样式,又叫 style scoped,开发者可以通过为根元素设定一个添加了scoped属性的style标签,来限制样式只作用于style标签的子元素上。这会限制样式只影响style标签的父元素和它所有的后代元素。
举个例子:
标准样式的简单页面:
效果:
用途
它有什么好处?
一种常见的用途是内容合并:当你作为一个网站的作者想嵌入来自第三方的内容(译者注:想想博客),包括它所有的样式风格,但是不想让这些样式“污染”页面其他无关的部分。其一个巨大的优势是可以将其他网站例如Yelp、Twitter、Ebay等的内容合并到一个单独页面,而无需使用或者动态的编辑外部内容来隔离它们。
如果你使用内容管理系统(CMS),它会发送许多标记片段来整合成为一个最终显示的页面。所以范围样式是一个伟大的功能,可以确保每一个片段与任何其他页面上的样式相隔离。这对wiki来说也一样的有用。
当你想在页面上展示一些漂亮的演示代码,很容易限制样式只作用于演示内容。你可以在演示随意的添加样式,而不用担心对页面上其他内容的影响。
它的另一个用途是简单的封装:例如,如果你的网页有一个侧边菜单,把指向菜单的样式封装到其中的
它可能最引人注目的用途之一是用在Web组件模型上。Web组件将是一个构建像滑块、菜单、日期选择器和选项卡部件等的伟大方式。通过提供范围内的样式,设计人员可以构建一个组件并且将其打包成为一个独立的单位,其他人可以使用这个组件并组合为一个富Web应用程序。 我们计划在Web组件和shadowDOM(已经可以在chrome://flags里开启实验性的“Shadow DOM”标志来启用)里大量使用范围样式。除了例如内联样式这样不好的方式,现在没有真正的好办法来确保样式限制在Web组件里,所以范围样式是一个完美的解决方案。
为什么包括父元素?
最自然的方式需要包括父元素,以便于
这种模仿可以实现“范围样式”的效果,但是因为更复杂的选择器会有一些运行时的性能损失。这种做法的好处是,它采用一个优雅的降级方法让我们可以等到
状态
鉴于范围样式的实现是最新的,它目前被隐藏在Chrome的运行时标志里。要激活它,你需要下载版本号为19或者更高的Chrome(现在的Chrome Canary),然后在chrome://flags里找到“开启”选项(靠近最后),单击“启用”,然后重新启动浏览器。
目前没有已知bug,但是@keyframes和@-webkit-region区域范围的版本还正在实现中。此外,@font-face被忽略掉了,因为现在有一个很好的机会来调整这个规范。
我们鼓励每个对这个特性感兴趣的人都来尝试一下,让我们知道你的反馈:好、不好以及(可能)不足。
博文参考:http://blog.csdn.net/hfahe/article/details/7381141
举个例子:
标准样式的简单页面:
<html> <body> <div>a div! <span>a span!</span></div> <div> <style> div { color: red; } span { color: green; } </style> a div! <span>a span!</span></div> <div>a div! <span>a span!</span></div> </body> </html>
效果:
<html> <body> <div>a div! <span>a span!</span></div> <div> <style scoped> div { color: red; } span { color: green; } </style> a div! <span>a span!</span></div> <div>a div! <span>a span!</span></div> </body> </html>
用途
它有什么好处?
一种常见的用途是内容合并:当你作为一个网站的作者想嵌入来自第三方的内容(译者注:想想博客),包括它所有的样式风格,但是不想让这些样式“污染”页面其他无关的部分。其一个巨大的优势是可以将其他网站例如Yelp、Twitter、Ebay等的内容合并到一个单独页面,而无需使用或者动态的编辑外部内容来隔离它们。
如果你使用内容管理系统(CMS),它会发送许多标记片段来整合成为一个最终显示的页面。所以范围样式是一个伟大的功能,可以确保每一个片段与任何其他页面上的样式相隔离。这对wiki来说也一样的有用。
当你想在页面上展示一些漂亮的演示代码,很容易限制样式只作用于演示内容。你可以在演示随意的添加样式,而不用担心对页面上其他内容的影响。
它的另一个用途是简单的封装:例如,如果你的网页有一个侧边菜单,把指向菜单的样式封装到其中的
<style scoped>段落会很有意义。这些样式规则对页面其他区域的渲染将不会有任何影响,这可以使得它可以很好地和主要内容进行分离!
它可能最引人注目的用途之一是用在Web组件模型上。Web组件将是一个构建像滑块、菜单、日期选择器和选项卡部件等的伟大方式。通过提供范围内的样式,设计人员可以构建一个组件并且将其打包成为一个独立的单位,其他人可以使用这个组件并组合为一个富Web应用程序。 我们计划在Web组件和shadowDOM(已经可以在chrome://flags里开启实验性的“Shadow DOM”标志来启用)里大量使用范围样式。除了例如内联样式这样不好的方式,现在没有真正的好办法来确保样式限制在Web组件里,所以范围样式是一个完美的解决方案。
为什么包括父元素?
最自然的方式需要包括父元素,以便于
<div id=”menu”> <style scoped> #menu .main { … } #menu .sub { … } …
这种模仿可以实现“范围样式”的效果,但是因为更复杂的选择器会有一些运行时的性能损失。这种做法的好处是,它采用一个优雅的降级方法让我们可以等到
<style scoped>被广泛支持和ID选择器可以简单地被丢弃时。
状态
鉴于范围样式的实现是最新的,它目前被隐藏在Chrome的运行时标志里。要激活它,你需要下载版本号为19或者更高的Chrome(现在的Chrome Canary),然后在chrome://flags里找到“开启”选项(靠近最后),单击“启用”,然后重新启动浏览器。
目前没有已知bug,但是@keyframes和@-webkit-region区域范围的版本还正在实现中。此外,@font-face被忽略掉了,因为现在有一个很好的机会来调整这个规范。
我们鼓励每个对这个特性感兴趣的人都来尝试一下,让我们知道你的反馈:好、不好以及(可能)不足。
博文参考:http://blog.csdn.net/hfahe/article/details/7381141
相关文章推荐
- h5新特性:<style scoped>
- HTML5新特性:范围样式<style scoped>
- HTML5新特性:范围样式<style scoped>
- HTML5新特性:范围样式<style scoped>
- ERROR: In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
- 如何实现具有层次结构的 TreeView <四> (WPF/TreeView/Style/Template)
- menu菜单水平放置时每一项后多出一个<td style="width: 3px;">
- css+js 实现在后台加载时前端出现等待的圆形图标,或者批量导入时出现等待图标提高用户体验,废话少说直接上代码 <style type="text/css"> body {
- <serviceHostingEnvironment>——之架构和特性
- <link>标签中的rel="sheetstyle"含义
- 报错(Illegal use of <when>-style tag without <choose> as its direct parent)
- angularJS<五、$scope中的$apply和$digest>
- EOJ Monthly 2017.12 易位构词(贪心+STL特性容器 +头文件<bits/stdc++.h> )未解决
- IOS6新特性集合视图<UICollectionView>CircleLayout实践
- Illegal use of <when>-style tag without <choose> as its direct parent
- 复制对象(二)<NSCopying>协议和属性的copy特性
- <java——知识扩充(一) JDK1.5的新特性>
- 精进不休 .NET 4.0 (2) - asp.net 4.0 新特性之url路由, 自定义CacheProvider, 新增的表达式<%: expression %>, QueryExtender控件, 其它新特性
- 上传文件 返回值带 <pre style="word-wrap:break-word;white-space:prewrap;"></pre>
- No service of type Factory<LoggingManagerInternal> available in ProjectScopeService