Crie um widget usando propriedades CSS personalizadas: incorpore um link personalizado ao site da NHL

O autor do curso de Netologia em HTML Web Design , Stas Melnikov, mostrou um exemplo de um layout de widget que pode ser incorporado em um site de terceiros.

Na última vez em que falamos sobre o que são propriedades do usuário , e agora, usando o site da NHL como exemplo, mostraremos como usá-las para incorporar um link personalizado.

Às vezes, você precisa desenvolver um widget que será implementado em vários projetos. Devido à natureza da especificidade do CSS, isso geralmente se transforma em dor de cabeça.

Eu vim com uma solução para esse problema quando descobri as propriedades personalizadas. Deixe-me mostrar como ele funciona: vou criar um widget awesomeLink e tentar incorporá-lo no NHL.com.

O widget terá três propriedades personalizadas que podem ser usadas para definir valores para as propriedades internas de color , font-size e display . Para a propriedade display , defino o valor padrão como inline-block .

 .awesomeLink { --uiAwesomeLinkColor: var(--awesomeLinkColor); --uiAwesomeLinkFontSize: var(--awesomeLinkFontSize); --uiAwesomeLinkDisplay: var(--awesomeLinkDisplay, inline-block); display: var(--uiAwesomeLinkDisplay); font-size: var(--uiAwesomeLinkFontSize); color: var(--uiAwesomeLinkColor); } 

Para conectar meu arquivo CSS, abra o devTools e adicione a tag link .



Altere o elemento Stats no menu do site NHL.com


Vamos mudar o link Estatísticas no menu do site. Adicione uma classe awesomeLink para o elemento Stats na navegação.



Se você observar o CSS do elemento, poderá ver que, devido à especificidade da display , font-size e as propriedades de color são riscadas.



Uma imagem familiar, certo? Para garantir que as propriedades internas do widget sempre tenham precedência sobre os estilos de direitos autorais, adicione !important .

Muitos temem palavras, e por uma razão. De fato, se você precisar alterar os valores, precisará colocar !important novamente, e isso já leva a uma luta interminável com ele.

Resolveremos esse problema usando propriedades personalizadas: é através delas que você pode controlar os valores das propriedades internas. Vamos ver como isso funciona.

 .awesomeLink { --uiAwesomeLinkColor: var(--awesomeLinkColor); --uiAwesomeLinkFontSize: var(--awesomeLinkFontSize); --uiAwesomeLinkDisplay: var(--awesomeLinkDisplay, inline-block); display: var(--uiAwesomeLinkDisplay) !important; font-size: var(--uiAwesomeLinkFontSize) !important; color: var(--uiAwesomeLinkColor) !important; } 

Agora você pode definir valores para as propriedades de color , font-size e display incorporadas:

 :root { --awesomeLinkColor: #c21bc2; --awesomeLinkFontSize: 20px; --awesomeLinkDisplay: flex; } 



O elemento Stats mudou de cor e tamanho

Vemos que as configurações funcionam, mas verifique seus valores na guia Computado.



Tudo funcionou como deveria.

Experiência de controle: altere o elemento Shedule


Para o experimento, tente adicionar outra classe awesomeLink para o elemento Schedule. As configurações são definidas em seu elemento pai li com a classe megamenu-navbar-overflow__menu-item .

 .megamenu-navbar-overflow__menu-item:nth-child(6) { --awesomeLinkColor: tomato; --awesomeLinkFontSize: 25px; --awesomeLinkDisplay: block; } 



Visualmente, o elemento é exibido assim:



Shedule cor e tamanho diferentes

Eu sei que os leitores terão dúvidas sobre o uso da declaração !important . Eu também tinha dúvidas, mas até agora não encontrei nenhum problema. Se você encontrar problemas devido a !important , vamos discutir nos comentários.

Dos editores


Cursos de netologia sobre o tema:

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


All Articles