- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过学习 Udemy 类(class)来学习 Angular,我的风格是这样的:
server dl {
display: flex;
}
和 server
组件,它不工作。该样式不适用于 html。因为生成的样式看起来像这样:
server[_ngcontent-c1] dl[_ngcontent-c1] {
display: flex;
}
DOM 看起来像这样:
<server _ngcontent-c0="" _nghost-c1="">
<dl _ngcontent-c1="">
<dt _ngcontent-c1="">Plantform</dt>
<dd _ngcontent-c1="">Linux x86_64</dd>
</dl>
</server>
_ngcontent-c0
而不是 _ngcontent-c1
,为什么会这样?为什么样式与 DOM 不匹配?
我正在使用由 CLI 和 Less 生成的 Angular 应用程序(但我使用 server
作为选择器手动创建了组件,如果名称是 app-server
).
为什么添加这个属性选择器?如果我在不同的地方使用这个组件呢?我想匹配组件内的所有元素,这就是为什么我添加了 server
作为选择器以始终匹配该组件内的所有元素。
如何使用添加到 html 的组件名称作为我整个样式的根?或者这在 Angular 中不是很好的做法,而是以其他方式处理,如果有人可以解释一下?
最佳答案
组件的每个元素都使用您注意到的那些属性通过 Angular (根据 css spec for scoping )自动限定范围/填充。所以基本上,当你为该组件编写 css 时,你不必编写 component-name element
但你可以只写:
dl {
display: flex
}
Angular 将通过使用生成的属性确保此样式仅应用于 server
内的 dl
,它本质上是用于 css 范围的 polyfill。如果您所有的目标浏览器本身都支持 css 范围,您甚至可以设置 ViewEnacpsulation.Native
在某些情况下,您决定设置根元素的样式时,您必须使用特殊选择器 :host
The :host selector is the only way to target the host element. You can't reach the host element from inside the component with other selectors because it's not part of the component's own template. The host element is in a parent component's template.
所以不要写 server {background: red}
你要写 :host {background: red}
这也符合用于范围界定的 css 规范。
阅读更多关于 CSS coping 和 component based CSS 以了解更多关于此策略的信息。
作为入门阅读 base documentation in Angular
另外,请注意,您可以像以前那样将您的 css 添加到任何全局样式表:
server dl {
display: flex
}
选择哪种方式在很大程度上取决于您计划如何管理和扩展 css。
关于css - 在 Less 样式表中使用 Angular 组件名称与生成的 DOM 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54168696/
我在尝试使用 WebStorm LESS File Watcher 时遇到此错误 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/
我有一个带有以下结构的 .less 样式表: @width:600; .some-style { width:@{width}px; } 这给出了以下错误: Expected '}' on l
说我有以下结构 /node_modules /src /components /component1 /style /style.less
我想使用灰度函数,但 LESS 一直抛出此错误,我没有看到灰度的 mixin 或如何使用它。有什么帮助吗? Error 148 Expected color in function 'graysc
我的文件较少,如下面的目录结构 vendor/includes/file1.less vendor/includes/file1.less vendor/includes/file1
如果我在 LESS 中定义以下嵌套样式: .nav-bar { .navbar-brand { background: #000; } } .nav-bar {
我正在尝试设置一个使用 lein-less 插件编译 .less 文件的 clojurescript 项目。我应该说我是 clojurescript 的新手。问题是它似乎没有运行。它在我运行“lein
有人会这样使用“less”: var less = require('less'); less.render('.class { width: (1 + 1) }', function (e, css
我正在尝试在一个新元素中测试 less.js。我 100% 确定 javascript 文件加载正常,但我的 css 文件夹中的 less 文件一直出现此错误。我打算在启动之前使用 less.app
我有以下更少: .container { .column, .columns { .one& { width: 40px; }
这是一个代码(test.less): body { padding: 50px; } body { padding: 20px; } 为什么在编译成 CSS 后我有这个: body {
我有一个变量 @index我想输出一个选择器,以便当 @index是 3 , 选择器是 [data-sth="3"] . 更长的例子: @index: 3; /* selector here */ {
假设我有一个使用 Less 定义的样式: ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } 稍后,我想重新使用 un
假设我有以下 Less 设置: .box { border: 1px solid #333; &.error { background-color: Red; } } 如果我想
我有一个 common.less文件,它为不同的皮肤实现了基本的 CSS: @textColor: black; @iconSize: 16px; .container: { color: @
我创建了使用 LESS 功能切换主题的代码。不幸的是,LESS 文件不会在浏览器中编译。如何在浏览器中编译 LESS 文件? 最佳答案 这是一张documentation : Client-side
我想使用 less 来定位类中的特定元素。 在这种情况下,我想定位类 button 的元素,但在此范围内我想定位一个 anchor 标签 a . 目前我有: .button { /* lots
我正在努力做某事。我的项目是这样的: /app /assets /components /stylesheets /less
我目前正在一个项目中使用 Twitter Bootstrap,包括 LESS 文件并使用我们编写的一些附加 LESS 代码进行编译。 最新版本意味着我们需要覆盖一些 Bootstrap LESS 变量
我有这个更少的代码,这工作得很好。我只是想在 less cli 编译它时节省一些空间。 .secondary-content { background: #ffcc80; color:
我是一名优秀的程序员,十分优秀!