Keep CSS from refreshing on page reload

后端 未结 2 1218
梦毁少年i
梦毁少年i 2021-01-23 11:30

I have a html page with two CSS files - one for a light theme and one for a dark theme. When I click the respective button, the theme changes to either light.css or dark.css.

相关标签:
2条回答
  • 2021-01-23 12:12

    If you don't want to use back-end methods to substitute the style.css file, you can try using local storage like this:

    If you don't want to use back-end methods to substitute the style.css file, you can try using local storage like this:

    $(function(){
    
      setSiteTheme(getSiteTheme());
      
      function setSiteTheme(themeName) {
        //Uncomment this in your app: window.localStorage.setItem('themeName', themeName);
        $('link[data-theme]').attr('href', themeName);
      }
      
      function getSiteTheme() {
        //Uncomment this in your app: return window.localStorage.getItem('themeName') || 'light.css';
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <link rel="stylesheet" href="/css/styles.css?version=5a6992221f52c" data-theme>

    After that add DATA-THEME attribute to the link tag of the head. And don't forget to uncomment necessary lines.

    0 讨论(0)
  • 2021-01-23 12:19

    You can use a cookie, localStorage or sessionStorage where you keep the default theme and the choosen one. So when your page loads you have to read that info from cookie/localStorage/sessionStorage and to apply the chosen theme.

    e.g when page is loading

    let theme = localStorage.getElement('theme');
    if(!theme){
    theme = 'light';
    localStorage.setElement('theme', 'light');
    }
    // and you use theme variable to load the light theme
    

    e.g when the user changes the theme

    localStorage.setElement('theme', 'dark');
    theme = 'dark';
    
    0 讨论(0)
提交回复
热议问题