在 primeNg 单选按钮上设置样式
Setting styles on primeNg radiobutton
我正在尝试使用 primeNg 样式 classes 在选定的单选按钮及其标签周围设置边框。
我的 HTML 代码如下:
<div class="p-d-flex p-flex-column">
<p-radioButton
styleClass="radio-style"
class="p-col"
[(ngModel)]="form"
[value]="true"
label="true"
></p-radioButton>
<p-radioButton
styleClass="radio-style"
class="p-col"
[(ngModel)]="form"
[value]="false"
label="false"
></p-radioButton>
</div>
我的 SCSS 就像:
:host ::ng-deep .radio-style.p-radiobutton {
border: thin solid green;
}
然而,最终结果只是这样:
.
我希望绿色围绕整个事物,而不仅仅是框本身,并且只围绕选定的那个。 (对于第二期,我尝试使用 p-label-active
,但我不认为我做对了,因为它不起作用)
如何实现标签周围的边框,以及如何只在选定的单选按钮上添加边框?
编辑:
澄清一下,我正在寻找的期望影响是
编辑 2:
我找到了解决方法。如果存在,仍在寻找更好的答案。
解决方法:使用自定义 class 和 ngClass,如 stackblitz 更新中所示。
HTML:
<div class="p-d-flex p-flex-column">
<p-radioButton [ngClass]="{'selected':form===true}" styleClass="radio-style" class="p-col" [(ngModel)]="form"
[value]="true" label="true"></p-radioButton>
<p-radioButton [ngClass]="{'selected':form===false}" styleClass="radio-style" class="p-col" [(ngModel)]="form"
[value]="false" label="false">
</p-radioButton>
</div>
CSS:
.selected {
border: thin solid green;
}
你关闭了,但你需要定位。p-radiobutton-box class
:host ::ng-deep .radio-style .p-radiobutton-box {
border: 2px solid green ;
}
只是为了让样式可以重用我会把样式移到全局样式文件中
style.scss
.radio-style {
.p-radiobutton-box {
border: 2px solid green !important;
}
}
update the selected style
```css
p-radiobutton {
.radio-style {
.p-radiobutton-box {
border: 2px solid green;
}
.p-radiobutton-box.p-highlight {
border-color: red;
background: orange;
}
}
}
解决方案最终变得简单得多 - class 需要更进一步。
所以,HTML:
<div class="p-d-flex p-flex-column">
<p-radioButton
styleClass="radio-style"
class="p-col" [ngClass]="{'selected':form}"
[(ngModel)]="form"
[value]="true"
label="true"
></p-radioButton>
<p-radioButton
styleClass="radio-style"
class="p-col" [ngClass]="{'selected':!form}"
[(ngModel)]="form"
[value]="false"
label="false"
></p-radioButton>
</div>
然后 scss:
.selected {
border: 2px solid green ;
}
我正在尝试使用 primeNg 样式 classes 在选定的单选按钮及其标签周围设置边框。 我的 HTML 代码如下:
<div class="p-d-flex p-flex-column">
<p-radioButton
styleClass="radio-style"
class="p-col"
[(ngModel)]="form"
[value]="true"
label="true"
></p-radioButton>
<p-radioButton
styleClass="radio-style"
class="p-col"
[(ngModel)]="form"
[value]="false"
label="false"
></p-radioButton>
</div>
我的 SCSS 就像:
:host ::ng-deep .radio-style.p-radiobutton {
border: thin solid green;
}
然而,最终结果只是这样:
我希望绿色围绕整个事物,而不仅仅是框本身,并且只围绕选定的那个。 (对于第二期,我尝试使用 p-label-active
,但我不认为我做对了,因为它不起作用)
如何实现标签周围的边框,以及如何只在选定的单选按钮上添加边框?
编辑:
澄清一下,我正在寻找的期望影响是
编辑 2: 我找到了解决方法。如果存在,仍在寻找更好的答案。 解决方法:使用自定义 class 和 ngClass,如 stackblitz 更新中所示。
HTML:
<div class="p-d-flex p-flex-column">
<p-radioButton [ngClass]="{'selected':form===true}" styleClass="radio-style" class="p-col" [(ngModel)]="form"
[value]="true" label="true"></p-radioButton>
<p-radioButton [ngClass]="{'selected':form===false}" styleClass="radio-style" class="p-col" [(ngModel)]="form"
[value]="false" label="false">
</p-radioButton>
</div>
CSS:
.selected {
border: thin solid green;
}
你关闭了,但你需要定位。p-radiobutton-box class
:host ::ng-deep .radio-style .p-radiobutton-box {
border: 2px solid green ;
}
只是为了让样式可以重用我会把样式移到全局样式文件中
style.scss
.radio-style {
.p-radiobutton-box {
border: 2px solid green !important;
}
}
update the selected style
```css
p-radiobutton {
.radio-style {
.p-radiobutton-box {
border: 2px solid green;
}
.p-radiobutton-box.p-highlight {
border-color: red;
background: orange;
}
}
}
解决方案最终变得简单得多 - class 需要更进一步。
所以,HTML:
<div class="p-d-flex p-flex-column">
<p-radioButton
styleClass="radio-style"
class="p-col" [ngClass]="{'selected':form}"
[(ngModel)]="form"
[value]="true"
label="true"
></p-radioButton>
<p-radioButton
styleClass="radio-style"
class="p-col" [ngClass]="{'selected':!form}"
[(ngModel)]="form"
[value]="false"
label="false"
></p-radioButton>
</div>
然后 scss:
.selected {
border: 2px solid green ;
}