Git Product home page Git Product logo

igorcbraz / calculadora Goto Github PK

View Code? Open in Web Editor NEW
26.0 1.0 10.0 5.88 MB

📐 Calculadora responsiva usando boostrap com a opção de alteração dos temas usando prefer-color-scheme. 📏

Home Page: https://calculatorcbraz.netlify.app/

License: MIT License

HTML 24.18% JavaScript 41.83% CSS 33.99%
calculator calculator-javascript calculadora calculadora-javascript responsive prefer-color-scheme calculator-application calculator-js

calculadora's Introduction

📚 Calculadora 📊

Calculadora Responsiva e com opções para troca de temas ⚡

GitHub Stars Netlify Status MIT License

Prefer Color SchemeResultado FinalSugestões


Desafio feito por Frontend Mentor

🌗 Prefer Color Scheme

Além dos 3 diferentes temas da calculadora, foi usado o recurso de mídia prefer-color-scheme.

Esse recurso possibilita o entendimento de qual a preferência do usuário em relação aos temas, assim podendo receber dois valores:

  • Light (Claro)
  • Dark (Escuro)

A maneira de aplicar esse recurso de acordo com a developer.mozilla é da seguinte maneira:

@media (prefers-color-scheme: dark) {
  // Configurações CSS para o tema dark
}

@media (prefers-color-scheme: light) {
  // Configurações CSS para o tema light
}

Mas com esse método o carregamento do código irá ficar mais lento pois seria necessário repetir todas as propriedades desejadas com suas novas colorações.

Então qual a solução ? 🤔

Iremos apenas mudar os valores das variáveis do CSS com JS.

const darkThemeMq  = window.matchMedia("(prefers-color-scheme: dark)");
const lightThemeMq = window.matchMedia("(prefers-color-scheme: light)");

Primeiro identificamos qual a preferência de tema do usuário e guardamos o resultado em uma constante.

Agora só precisamos verificar qual o valor das constantes e modificar os valores das variáveis do CSS

if (darkThemeMq.matches) {
  document.getElementById('btnTheme').value = "3";
  theme.dark();
} else if(lightThemeMq.matches){
  document.getElementById('btnTheme').value = "2";
  theme.light();    
} else {
  document.getElementById('btnTheme').value = "1";
  theme.default();    
}

theme.dark(),theme.light()... Armazenam os comandos para modificar os valores das variáveis no CSS. Sendo eles:

const root = document.querySelector(':root');

const theme = {
  default() {
    root.style.setProperty('--background'          , '#3a4764');
    // E as demais variáveis
  },
  light() {
    root.style.setProperty('--background'          , '#e6e6e6');
    // E as demais variáveis
  },
  dark() {
    root.style.setProperty('--background'          , '#17062a');
    // E as demais variáveis
  }
}

Como é Possível fazer o Teste/Debug ? 🤔

Podemos usar a ferramenta de desenvoledor do google chrome e alterar os valores Dark ou Light

Resultado Final 🥳

Você também ṕode gostar 🤩

  • Gitfest - Gere uma lineup de festival com base nos seus principais repositórios do Github
  • Enkoji - Site feito para o Enkoji, um templo zen-budista japonês fundado em 1920 no Japão

GitHub @Igorcbraz  ·  Linkedin @Igorcbraz


calculadora's People

Contributors

igorcbraz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

calculadora's Issues

Don't have compatibility to keyboard

The calculator does not has the compatibility using the keyboard.

Example: Pressing some number do not reflect them on the screen

This functionality can help to improve fast calcs and accessibility

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.