javascript - lägg till mina egna ikoner till Ionic 2 actionSheet:s knappar
Jag kunde inte hitta ett sätt att lägga till min egna ikon i Ionic 2/3 ActionSheet.
presentActionSheet() {
let actionSheet = this.actionSheetCtrl.create({
title: 'Mode',
buttons: [
{
text: 'Add to Y' ,
role: 'destructive',
icon:"my_icon",
cssClass:"yoy",
handler: () => {
console.log('Destructive clicked');
}
},
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
}
}
],
});
actionSheet.present();
}
Hur kan jag lägga till mina egna anpassade ikoner på actionsheet-knapparna?
Svar #1
Den joniska dokumentationen verkar inte föreslå något inbyggt sätt att göra detta. Det finns dock ett sätt att uppnå det med en anpassad klass.
let actionSheet = this.actionSheetCtrl.create({
title: 'Mode',
buttons: [
{
text: 'Add to Y',
// vvvvv set a custom class that will be used to display the icon
cssClass: "class_used_to_set_icon",
handler: () => {
console.log('Add to Y clicked');
}
}
],
});
actionSheet.present();
Definiera sedan följande klass i din src/app/app.scss:
.class_used_to_set_icon {
// I'd suggest to have the icon in src/assets (eg ../assets/icon/favicon.ico)
background-image: url("path/to/your/icon") !important;
// to properly position the icon:
background-repeat: no-repeat !important;
background-position: 10px 10px !important;
// to indent the text to the right of the icon:
padding-left: 70px !important;
}
REDIGERA
Ett annat sätt är att använda anpassade ikoner från ett typsnitt som icomoon:
let actionSheet = this.actionSheetCtrl.create({
title: 'Mode',
buttons: [
{
text: 'Add to Y',
// vvvvv set the custom icon class and a custom class to then improve display
cssClass: "icon-drink actionSheet_withIcomoon",
handler: () => {
console.log('Add to Y clicked');
}
}
],
});
actionSheet.present();
Definiera sedan följande klass i din src/app/app.scss:
// display the icon at the right size
.actionSheet_withIcomoon { font-size: 2.4rem !important; }
// correct the font dimensions and positioning of the text
.actionSheet_withIcomoon .button-inner {
font-family: "Roboto", "Helvetica Neue", sans-serif;
font-weight: bold;
padding-left: 52px;
margin-top: -20px;
font-size: 1.6rem !important;
}
Svar #2
Visade sig att du kan komma runt detta genom att referera till FontAwesome - se https://codepen.io/ablewhite/pen/LyZNXZ för ett exempel.
I ditt exempel kan detta vara (när FontAwesome CSS har refererats):
let actionSheet = this.actionSheetCtrl.create({
title: 'Mode',
buttons: [
{
text: '<i class="icon fa fa-plus"></i> Add to Y' ,
role: 'destructive',
cssClass: 'yoy',
handler: () => {
console.log('Destructive clicked');
}
},
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
}
}
],
});
Om du behöver ikoner som inte finns i FontAwesome, använd samma teknik med ditt eget anpassade teckensnitt.