Xamarin.Forms - рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЖрдЗрдХрди рдлреЛрдВрдЯ рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧ


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП png, svg рдпрд╛ ttf рдлреЛрдВрдЯ, Xamarin.Forman рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЖрдЗрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдХреНрд╕рд░, рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЙрдиреНрдЯ рдорд╛рдирдХ рдЖрдЗрдХрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Google рд╕рд╛рдордЧреНрд░реА рдЖрдЗрдХрдиред рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 200K рд╣реИ рдФрд░ рдкреНрд░рдпреЛрдЬреНрдп рдЖрдорддреМрд░ рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЖрдЗрдХрди рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░ рдЕрдЪреНрдЫреЗ рджрд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рд╣реЛрдВрдЧреЗред

рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ рд╣реИрдВред рдореИрдВрдиреЗ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрдирд┐рдЬрд╝ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ (nuget - www.nuget.org/packages/Xam.Plug.P.Iconize ; git - github.com/jsmarcus/Iconize )ред рдпрд╣ рдЖрдкрдХреЛ рджрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдлреЛрдВрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдирдП рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдЗрдХрдирдмрдЯрди, рдЖрдИрдХреИрдореЗрдЬ, рдЖрдИрдХреЙрдирдмреЗрд▓, рдЖрджрд┐ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рд╣реИрдВ: рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░, рд╡реНрдпрд╡рд╣рд╛рд░, рдмрдЧ рдЖрджрд┐ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрд╛рдЗрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ + рдлрд╝реЙрдиреНрдЯред

Ttf рдлрд╝реЙрдиреНрдЯ рд╕реЗ рдЖрдЗрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ xaml рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (iOS):

<Label Text="&#xe5d2;" FontFamily="MaterialIcons-Regular"/> 

C # рдореЗрдВ:

 var label = new Label { Text ="\ue5d2", FontFamily = "MaterialIcons-Regular" }; 

рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдВрдЧрд╛ред

1. XAML рдФрд░ C # ("& # xe5d2;" / "\ ue5d2") рдореЗрдВ рдЖрдЗрдХрди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдк

2. рдЖрдЗрдХрди рдХреЛрдб рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рд╣реА рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ "arrow_back" рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ iconize рдореЗрдВ рд╣реИ

3. рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рдЪрд▓реЗрдЧрд╛, рддреЛ рдЖрдкрдХреЛ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдирд╛рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ - Android рдореЗрдВ "MaterialIcons-Regular.ttf # MaterialIcons-Regular" рдФрд░ iOS рдореЗрдВ "MaterialIcons-Regular"ред

рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкрд░ TextChanged рдШрдЯрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

4. рд▓реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ TextChanged рдЗрд╡реЗрдВрдЯ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рд▓реЗрдмрд▓ рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдФрд░ xaml рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдирд┐рд░реНрдгрдп


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝реЙрдиреНрдЯ Google рд╕рд╛рдордЧреНрд░реА рдЖрдЗрдХрди рд▓реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕реЗ Android рдФрд░ iOS рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдпрд╣рд╛рдБ рдлрд╝реЙрдиреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдкреНрд░рддреАрдХ рдпрд╣рд╛рдВ рдЦреЛрдЬрддреЗ рд╣реИрдВ

рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ - MaterialIcons-Regular.ttfред

рдПрдВрдбреНрд░реЙрдпрдб:
Assets рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ MaterialIcons-Regular.ttf рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП "рдмрд┐рд▓реНрдб рдПрдХреНрд╢рди" AndroidAsset рдЪреБрдиреЗрдВред

iOS:
рд╕рдВрд╕рд╛рдзрди \ рдлрд╝реЙрдиреНрдЯреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ MaterialIcons-Regular.ttf рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП "рдмрд┐рд▓реНрдб рдПрдХреНрд╢рди" рдмрдВрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдлрд┐рд░ info.plist рдореЗрдВ рдлрд╝реЙрдиреНрдЯ рд▓рд┐рдЦреЗрдВ:

 <key>UIAppFonts</key> <array> <string>Fonts/MaterialIcons-Regular.ttf</string> </array> 

рдЕрдм рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдмрд╛рдПрдВ рддреАрд░ рдХрд╛ рдЪрд┐рд╣реНрди рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдЖрдЗрдХрди рдЦреЛрдЬ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ: https://material.io/resources/icons/ , рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ "рддреАрд░" рджрд░реНрдЬ рдХрд░реЗрдВ , рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдмрд╛рдПрдВ рддреАрд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЕрдм рдЖрдЗрдХрди рдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП "рдЪрдпрдирд┐рдд рдЖрдЗрдХрди" рдкреИрдирд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ... рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИ:

 Usage: <!--For modern browsers--> <i class="material-icons"> arrow_back </i> <!-- For IE9 or below. --> <i class="material-icons"> arrow_back </i> 

рд╣рд╛рдВ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдХреЛрдб рдореЗрдВ рдирд╛рдореЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдЖрдЗрдХрди рдХреНрдпрд╛ рд╣реИред рдЖрдЗрдХрди рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ - "arrow_back" рдЗрд╕ рддрд░рд╣:

 <Label Text="arrow_back"> 

рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рд╣рдо рддрдерд╛рдХрдерд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реВрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ "Xamarin.Forms рдШрдЯрдирд╛рдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ" ( https://docs.microsoft.com/ru-ru/xamarin/xamarin-forms/app-freeamentals/behaviors/ ) рдкрд░ рдХрд░реЗрдВрдЧреЗред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, GoogleMaterialFontBehavior рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:

 public class GoogleMaterialFontBehavior: BehaviorBase<CustomLabel> { } 

рд╣рдорд╛рд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЗрдмрд▓ рдкрд╛рда рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд▓реЗрдмрд▓ рдХреЛ рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рд╣реЛрдЧрд╛:

 using System; using Xamarin.Forms; namespace MyApp.UserControls { public class CustomLabel : Label { public event EventHandler<EventArgs> TextChanged; public static readonly new BindableProperty TextProperty = BindableProperty.Create( propertyName: nameof(Text), returnType: typeof(string), declaringType: typeof(CustomLabel), defaultValue: "", defaultBindingMode: BindingMode.OneWay, propertyChanged: TextChangedHandler); public new string Text { get => (string)GetValue(TextProperty); set { base.Text = value; SetValue(TextProperty, value); } } private static void TextChangedHandler(BindableObject bindable, object oldValue, object newValue) { var control = bindable as CustomLabel; control.TextChanged?.Invoke(control, new EventArgs()); } } } 

GoogleMaterialFontBehavior рд╡рд░реНрдЧ рдореЗрдВ, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • OnAttachedTo / OnDetachingFrom рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ
  • рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ: HandleTextChanged
  • рдлрд╝реЙрдиреНрдЯ рдирд╛рдо рдлрд╝реЙрдиреНрдЯ рдЬреЛрдбрд╝реЗрдВ
  • рдФрд░ рдЪрд░рд┐рддреНрд░ рдХреЛрдб iconCodeDict рдХреА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рднреА рдЬреЛрдбрд╝реЗрдВ

 namespace MyApp.Behaviors { public class GoogleMaterialFontBehavior: BehaviorBase<CustomLabel> { protected override void OnAttachedTo(CustomLabel bindable) { HandleTextChanged(bindable, null); bindable.TextChanged += HandleTextChanged; base.OnAttachedTo(bindable); } protected override void OnDetachingFrom(CustomLabel bindable) { bindable.TextChanged -= HandleTextChanged; base.OnDetachingFrom(bindable); } private void HandleTextChanged(object sender, EventArgs e) { var label = (CustomLabel)sender; if (label?.Text?.Length >= 2 && iconCodeDict.TryGetValue(label.Text, out var icon)) { label.FontFamily = fontFamily; label.Text = icon.ToString(); } } // private static readonly string fontFamily = Device.RuntimePlatform == Device.Android ? "MaterialIcons-Regular.ttf#MaterialIcons-Regular" : "MaterialIcons-Regular"; private static readonly Dictionary<string, char> iconCodeDict = new Dictionary<string, char> { {"3d_rotation", '\ue84d'}, {"ac_unit", '\ueb3b'}, {"access_alarm", '\ue190'}, тАж } } } 

рдФрд░ рдЕрдм iconCodeDict рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реАред рдЗрд╕рдореЗрдВ рдлрд╝реЙрдиреНрдЯ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдо-рдХреЛрдб рдЬреЛрдбрд╝реЗ рд╣реЛрдВрдЧреЗред Google рд╕рд╛рдордЧреНрд░реА рдЖрдЗрдХрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдбреЗрдЯрд╛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ: github.com/google/material-design-icons/blob/master/iconfont/codepoint

рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


XAML:

рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ 2 рдирд╛рдорд╕реНрдерд╛рди рдЬреЛрдбрд╝реЗрдВ:

 xmlns:uc="clr-namespace:MyApp.UserControls" xmlns:b="clr-namespace:MyApp.Behaviors" 

рдФрд░ рдЖрдЗрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ:

 <uc:CustomLabel Text="arrow_back" FontSize="30"> <Label.Behaviors> <b:GoogleMaterialFontBehavior /> </Label.Behaviors> </uc:CustomLabel> 

C #:

 var label = new CustomLabel(); label.Behaviors.Add (new GoogleMaterialFontBehavior()); label.Text = "arrow_back"; 

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА


рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлреЙрдиреНрдЯ рдЬреИрдо рдЖрдЗрдХрди рднреА рдкрд╕рдВрдж рд╣реИрдВред GoogleMaterialFontBehavior рдХреЗ рд╕рдорд╛рди, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ JamFontBehavior рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рд▓реЛрдЧ рд╣реЛрдВрдЧреЗ: fontFamily рдФрд░ iconCodeDictред

рдпрд╣рд╛рдБ рдлрд╝реЙрдиреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: https://github.com/michaelampr/jam/blob/master/fonts/jam-icons.ttf
рдпрд╣рд╛рдБ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХ: https://jam-icons.com/

рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЦреЛрдЬ рдЗрдВрдЬрдиред рдЖрдЗрдХрди рдвреВрдВрдвреЗрдВ, рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдирд╛рдоред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЧреВрдЧрд▓ рдЖрдЗрдХрди рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЖрдЗрдХрди рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝рдХрд░ред

рдХреЛрдб рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд svg рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рддреНрдд рдЬреИрд╕реЗ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓рд╛рдЗрди "рдбреЗрдЯрд╛-рдЯреИрдЧ" рдЪреБрдиреЗрдВ, Alt + F3 рджрдмрд╛рдПрдВ, рдмрд╣реБ-рдХрд░реНрд╕рд░ рдЪрд╛рд▓реВ рд╣реИред рдЕрдЧрд▓реА рд╢рд┐рдлреНрдЯ + рд╣реЛрдо, ctrl + c, ctrl + a, ctrl + vред рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╣ рдПрдХреНрд╕реЗрд▓ рдХреА рдорджрдж рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдХрд┐рд╕рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рдПрдВ рддреАрд░ svg рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 <glyph unicode="&#xe92b;" glyph-name="arrow-left" data-tags="arrow-left" d="M358.997 398.635l168.533-168.533c7.15-7.611 11.543-17.885 11.543-29.185 0-23.564-19.103-42.667-42.667-42.667-11.311 0-21.594 4.401-29.229 11.585l0.022-0.020-241.365 241.323c-7.749 7.706-12.545 18.376-12.545 30.165s4.796 22.459 12.544 30.163l241.367 241.367c7.769 8.036 18.647 13.026 30.69 13.026 23.564 0 42.667-19.103 42.667-42.667 0-12.043-4.989-22.92-13.014-30.678l-168.545-168.545h409.003c23.564 0 42.667-19.103 42.667-42.667s-19.103-42.667-42.667-42.667v0h-409.003z" /> 

рдкрд╛рда рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЧреНрд▓рд┐рдлрд╝-рдирд╛рдо рдФрд░ рдпреВрдирд┐рдХреЛрдб рдлрд╝реАрд▓реНрдб рдХреА рд╕рд╛рдордЧреНрд░реА рдорд┐рд▓рддреА рд╣реИ:

 {"arrow-left", '\ue92b'} 

рдФрд░ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЖрдЗрдХрдирдХреЛрдб рдЬреЛрдбрд╝реЗрдВ

Source: https://habr.com/ru/post/hi467423/


All Articles