簡體   English   中英

如何動態更新我的CSS,即我想讓用戶選擇字體大小,bckground顏色

[英]How can I dynamically update my CSS i.e. I want to give user an option of selecting font size, bckground color

我的是一個Java spring項目,我希望用戶可以選擇在運行時更改字體大小,背景顏色和窗口大小,即登錄系統后。 該項目包含多個css頁面,並在.js頁面中調用。

我有一個關於護目鏡的解決方案,但它提出了一些其他問題:

解答A:我們可以使用document.createElement函數來創建一個新的樣式元素。 當我們想讓網站訪問者使用某些按鈕控件動態更改網站樣式時,這非常有用。

例:

var sheet = document.createElement('style')
sheet.innerHTML = "div {border: 2px solid black; background-color: blue;}";
document.body.appendChild(sheet);

在上面的語句中,它創建了一個時間的css樣式表,稍后我們可以在相同的代碼中刪除樣式表。 根據用戶偏好在不同樣式表之間切換,我們可以設置多個樣式表,並僅啟用當前站點訪問者想要查看的樣式表。

我在這里得到的問題是:

  1. 一旦使用的注銷,創建的樣式表會發生什么,它會保留在緩存中嗎?
  2. 如果它保留在緩存中,每個用戶會有多個樣式表,具體取決於他更改界面設置的次數還是每個用戶只有一個?
  3. 如果用戶處於隱身模式,這會如何表現?

或者如果有人可以建議我任何其他可行的解決方案 我是一名實習生,這是我分配的第一項任務。 TIA

有多種方法可以做到這一點。 有太多問題沒有答案。

我假設您正在使用彈簧后端,而您的頁面不是單頁應用程序。

  1. 如果用戶注銷,您的樣式表是否會保存在緩存中?

    這取決於你如何退出。 如果在注銷時重定向到其他頁面,則您創建的頁面將不再可用,並且除非您使用服務工作者將更改保存在緩存中,或者整個設置完成,否則不會緩存您在頁面上所做的更改是一個單頁面的應用程序。

  2. 如果它保留在緩存中,每個用戶會有多個樣式表,具體取決於他更改界面設置的次數還是每個用戶只有一個?

    同樣,這取決於您如何創建樣式表。 您可以刪除現有的樣式表,然后插入新的樣式表。 通過這種方式,每個用戶始終只有一個樣式表。

  3. 如果用戶處於隱身模式,這會如何表現?
    如果您不使用服務工作者進行緩存,那么這不會產生任何影響。

你能做的是

  1. 將用戶首選項保存為json值,然后使用該json值創建樣式表
  2. 用戶注銷后清除現有樣式表。
  3. 如果同一用戶再次登錄,請檢查存在的json值,如果存在,則再次生成樣式表,或者從服務器獲取首選項,然后生成樣式表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM