我正在设置一个基本的角度应用程序,并且试图在视图中添加一些CSS。这是我的组件之一的示例:
import { Component } from 'angular2/core';
import { ROUTER_PROVIDERS, ROUTER_DIRECTIVES, RouteConfig } from 'angular2/router';
import { LandingComponent } from './landing.component';
import { PortfolioComponent } from './portfolio.component';
@Component({
selector: 'portfolio-app',
templateUrl: '/app/views/template.html',
styleUrls: ['../app/styles/template.css'],
directives: [ROUTER_DIRECTIVES],
providers: [ROUTER_PROVIDERS]
})
@RouteConfig([
{ path: '/landing', name: 'Landing', component: LandingComponent, useAsDefault: true },
{ path: '/portfolio', name: 'Portfolio', component: PortfolioComponent }
])
export class AppComponent { }
现在,从服务器请求了.css文件,当我检查页面源代码时,可以看到它已添加到头部。但是发生了一些奇怪的事情:
<style>@media (min-width: 768px) {
.outer[_ngcontent-mav-3] {
display: table;
position: absolute;
height: 100%;
width: 100%;
}
.mainContainer[_ngcontent-mav-3] {
display: table-cell;
vertical-align: middle;
}
.appContainer[_ngcontent-mav-3] {
width: 95%;
border-radius: 50%;
}
.heightElement[_ngcontent-mav-3] {
height: 0;
padding-bottom: 100%;
}
}</style>
从此文件生成:
/* Small devices (tablets, 768px and up) */
@media (min-width: 768px) {
/* center the mainContainer */
.outer {
display: table;
position: absolute;
height: 100%;
width: 100%;
}
.mainContainer {
display: table-cell;
vertical-align: middle;
}
.appContainer {
width: 95%;
border-radius: 50%;
}
.heightElement {
height: 0;
padding-bottom: 100%;
}
}
有人可以解释_ngcontent-mav标记的来源,代表什么以及如何摆脱它吗?
我认为这就是为什么我的样式未应用到模板的原因。
如果您需要有关应用程序结构的更多信息,请签出我的gitRepo,或询问,然后将代码添加到问题中。
谢谢您的帮助。
更新2
::slotted
现在,所有新浏览器都支持该功能,并且可以与`ViewEncapsulation.ShadowDom一起使用
https://developer.mozilla.org/zh-
CN/docs/Web/CSS/::slotted
更新
/deep/
并>>>
已弃用。 ::ng-deep
取代它们。::-deep
在源代码和文档中也被标记为已弃用,但这意味着它最终也会被删除。
我认为这取决于W3C为阴影DOM设置主题的方式(例如https://tabatkins.github.io/specs/css-shadow-
parts/
)
基本上,这是一种变通方法,直到所有浏览器都本机支持并且ViewEncapsulation.Emulated
可以将其完全删除。
::ng-deep
在SASS中也受支持(或将取决于SASS实现)
原版的
视图封装有助于防止样式渗入或渗出组件。默认封装是ViewEncapsulation.Emulated
将类之类_ngcontent- mav-x
添加到组件标签中,并且样式也将重写为仅适用于匹配的类。
这在某种程度上模拟了影子DOM的默认行为。
您可以禁用此封装添加encapsulation: ViewEncapsulation.None
到@Component()
装饰器。
另一种方式是最近(重新)引入影子穿孔CSS组合程序>>>
,/deep/
和::shadow
。引入这些组合器是为了对阴影DOM进行样式设置,但在那里不推荐使用。Angular最近介绍了它们,直到实现其他机制(如CSS变量)为止。又见https://github.com/angular/angular/pull/7563(https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta10-2016-03-17)
>>>
并且/deep/
等效,并且使用此组合器使样式忽略添加的帮助器类(_ngcontent-mav-x
)
* >>> my-component, /* same as */
* /deep/ my-component {
background-color: blue;
}
应用于所有my-component
标签,无论它们在其他组件中嵌套的深度如何。
some-component::shadow * {
background-color: green;
}
适用于模板中的所有元素some-component
,但不适用于其他后代。
它们也可以合并
* /deep/ my-component::shadow div {
background-color: blue;
}
这适用于所有模板的my-component
模板中的所有div元素,无论my-component
嵌套在其他组件中的深度如何。
/deep/
,>>>
和::shadow
只能与
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.Emulated
encapsulation: ViewEncapsulation.Native
当浏览器本身支持它们时(Chrome会支持,但会在控制台中显示警告,表明它们已弃用),或者对于一个简单的示例,也请参阅此问题中的Plunker
https://stackoverflow.com/a/36226061/217408
另请参阅ng-conf
2016上的此演示文稿
添加样式的方案 在 dva 中,所有的页面都是基于组件的。因此,我们希望样式依附于组件,不同组件的样式相互之间不会造成污染。 在 dva 中,我们推荐使用 CSS Modules 的解决方案。配合 webpack 的 css-loader 进行打包,会为所有的 class name 和 animation name 加 local scope,避免潜在冲突。 样式引入示例 参考 example 中
我想将css文件链接到我的应用程序。在我的fxml文件中,我使用以下命令: ...当我在scenebuilder中打开fxml文件时,我可以看到一个样式化的预览。但是,当我尝试运行应用程序时,出现了一个错误: java.net.MalformedURL异常:无协议:.../stylesheet1.css 所以我用这种方法测试它: 现在它是反过来的-应用程序启动并应用css,但我没有看到场景构建器中
我最近开始在WebStorm中进行一个Angular项目,并希望更改编辑器样式,以便使用Ctrl+ALT+L在格式化代码上添加更多空格。 请帮助我为Angular/TypeScript开发编辑器创建此样式。提前道谢。
现在其它的一切都可以正常工作,是时候给应用添加样式了。只需在之前创建的 static 文件夹中创建一个名为 style.css 的样式表: body { font-family: sans-serif; background: #eee; } a, h1, h2 { color: #377BA8; } h1, h2 { font-family:
shadow DOM 可以包含 <style> 和 <link rel="stylesheet" href="…"> 标签。在后一种情况下,样式表是 HTTP 缓存的,因此不会为使用同一模板的多个组件重新下载样式表。 一般来说,局部样式只在 shadow 树内起作用,文档样式在 shadow 树外起作用。但也有少数例外。 :host :host 选择器允许选择 shadow 宿主(包含 shado
问题内容: 我试图在我的React类中使用某种样式。我已经做完了再做: 我想改用一个变量,例如: 我的代码如下: 但是没有应用样式。我该如何实现? 问题答案: 您不能在类的中间定义常量,这是无效的语法。根据定义1,类主体只能包含方法定义,静态方法定义和空语句()2。在方法内部定义: 1根据ECMAScript 2015语言规范第14.5节-类定义 2 Babel当前支持类属性(带有plugins)