私は他の人がここでブートストラップ3を使用してブートストラップ4は、ブートストラップ4とコンポーネントの使用ViewEncapsulation.Nativeと部品作りたい:ブートストラップ3Angular 2のViewEncapsulation.Nativeを使用して、異なるWebコンポーネントに対して異なる「rem」を設定することはできますか?
import { Component, ViewEncapsulation } from '@angular/core';
import { NgForm } from '@angular/common';
import { Hero } from './hero';
@Component({
selector: 'hero-form',
templateUrl: 'app/hero-form.component.html',
styleUrls: ['app/bootstrap.css'], //Bootstrap 4 CSS file
encapsulation: ViewEncapsulation.Native
})
export class HeroFormComponent {}
そしてindex.html
ではロードされます。
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
ブートストラップ3が含まれていると、すべてが非常に小さくなります。あなたはそれが私のPlunker: Angular 2 ViewEncapsulation.Native with Bootstrap 3 and Bootstrap 4で見える方法を見ることができます。ブートストラップ3がコメントされるとき、すべてがより良く見えます。 html
タグに16px
に設定され、ルートEMとして、
.btn {
display: inline-block;
font-weight: normal;
line-height: 1.25;
text-align: center;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: 0.5rem 1rem;
font-size: 1rem;
border-radius: 0.25rem;
}
Bootstrap 4、rem
付::私はブートストラップ4は、スタイルのボタンにrem
を使用しているため、その問題が発生したと仮定し
html {
font-size: 16px;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
}
しかしBootstrap 3.3.6セット、それをします10px
:
html {
font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
ブートストラップ4スタイルsはShadow DOMに含まれていますが、HTMLには適用されません(それは良いことです)。しかしそのため、私のコンポーネントのスタイルは16px
の代わりにをrem
として使用します。
@Component({
selector: 'hero-form',
templateUrl: 'app/hero-form.component.html',
styleUrls: ['app/bootstrap.css'],
styles: ['hero-form, #parent-element {font-size: 16px;}'],
encapsulation: ViewEncapsulation.Native
})
export class HeroFormComponent {}
しかし、それは動作しませんでした。コンポーネント自体のスタイルと、ビューの最初の要素のスタイルを設定しようとしました。私はそれがデフォルトでこのように動作するはずだと思います - rem
がすべてのシャドーDOMで同じであれば、1つのプロジェクトで複数のCSSフレームワークを持つことになります(ブートストラップ3からブートストラップ4への移行など、とても厳しい。 rem
を使用しないようにブートストラップファイルを変更することなく、別のWebコンポーネントに異なるrem
を設定することはできますか?すべての助けのために事前にありがとうございます。
いずれかがあるのをplunkrなぜあなたは 'ViewEncapsulation.Native'を使いたいのでしょうか?これを動作させるには、Chrome以外のブラウザ用にポリフィルをロードする必要があります。 BoostrapはネイティブのShadow DOMを有効にしても正しく動作しません。ブートストラップをシャドーDOMで使用する方法について説明していますか? –
@GünterZöchbauer 'ViewEncapsulation.Emulated'では、私は同じ結果を得ました。' ViewEncapsulation.Native'を使用する特別な理由はありませんが、これは実動コードではないtryです。もし ' ViewEncapsulation.Native'、それは素晴らしいだろう:) –