2015-01-21 51 views
0

我想用這樣的代碼來改變我的網頁的背景顏色和文字顏色。 這對於更改標題bg顏色,顏色和菜單下拉背景顏色和顏色很有用。但不是菜單的顏色或菜單的頂部欄。只是影響下拉框,所以整潔的代碼。我需要cookies才能使其工作嗎?

但如果我要「記住」的選擇。我的整個網頁,就像有一個用戶可以選擇改變顏色cheme,但不改變樣式表,因爲我有不同的寬度和heigths等

樣式表

我必須使用cookies來做我想要的嗎?

紫色的js

function greenColor(){  document.getElementById("content").style.backgroundColor = "purple"; 
      document.getElementById("copyW").style.backgroundColor = "purple"; 
      document.getElementById("text").style.backgroundColor = "white"; 

          var parentElement =  document.getElementById("text"); 
      var lis = parentElement.getElementsByTagName("p"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: black"); 

      } 

     var parentElement = document.getElementById("cssmenu"); 
      var lis = parentElement.getElementsByTagName("ul"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","background-color: purple"); 

      } 

          var parentElement = 
document.getElementById("webpage"); 
      var lis = parentElement.getElementsByTagName("a"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: black"); 

    } 
    } 

紅色的js

function redColor(){ 
      document.getElementById("content").style.backgroundColor = "red"; 
      document.getElementById("copyW").style.backgroundColor = "red"; 
      document.getElementById("text").style.backgroundColor = "white"; 

          var parentElement =  document.getElementById("text"); 
      var lis = parentElement.getElementsByTagName("p"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: black"); 

      } 

      var parentElement = document.getElementById("cssmenu"); 
      var lis = parentElement.getElementsByTagName("ul"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","background-color: red"); 

      } 


         var parentElement = document.getElementById("webpage"); 
      var lis = parentElement.getElementsByTagName("a"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: black"); 

      } 
      } 

高對比度的js

function contrastColor(){ 
      document.getElementById("content").style.backgroundColor = "black"; 
      document.getElementById("copyW").style.backgroundColor = "grey"; 
      document.getElementById("text").style.backgroundColor = "black"; 
       var parentElement = document.getElementById("text"); 
      var lis = parentElement.getElementsByTagName("p"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: white"); 

      } 



      var parentElement = document.getElementById("cssmenu"); 
      var lis = parentElement.getElementsByTagName("ul"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","background-color: black"); 

      } 
       var parentElement = document.getElementById("webpage"); 
      var lis = parentElement.getElementsByTagName("a"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: white"); 

      } 

      } 
      function normalColor(){ 
      document.getElementById("content").style.backgroundColor = "green"; 
      document.getElementById("copyW").style.backgroundColor = "green"; 
      document.getElementById("text").style.backgroundColor = "white"; 
       var parentElement = document.getElementById("text"); 
      var lis = parentElement.getElementsByTagName("p"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: black"); 

      } 



      var parentElement = document.getElementById("cssmenu"); 
      var lis = parentElement.getElementsByTagName("ul"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","background-color: green"); 

      } 
       var parentElement = document.getElementById("webpage"); 
      var lis = parentElement.getElementsByTagName("a"); 
      for (var i = 0; i < lis.length; i++) { 

      lis[i].setAttribute("style","color: black"); 

      } 

      } 

那麼這是CSS

#buttons{ 
z-index:1;  
display:inline; 
border: none; 
height:1em; 
top:7.5em; 
position:absolute; 
right:0em; 
} 
#normal { 
background:#008000; 
background-size:cover; 
cursor:pointer; 
} 
#purple{ 
    background:purple; 
    background-size:cover; 
    cursor:pointer; 
    } 
#red { 
    background:#FF0000; 
    background-size:cover; 
    cursor:pointer; 
    } 
#contrast{ 
    background:black; 
    color:white; 
    cursor:pointer; 
    background-size:cover; 
    } 

我的html只是一個標題,一個改變背景顏色的頁腳,然後是一個高對比度的版本,它也改變了文本顏色,因此我設置了「後備」,或者選擇將其更改爲黑色文本顏色。 JavaScript自然。

那麼,是否可以改變我的整個網頁,然後如果我必須使用cookie來做到這一點,我該如何設置cookiething有一個選擇保存色彩,或不用戶選擇顏色?

預先感謝您的任何幫助:) 是否有可能改變css3動畫樣式,在javascript中,就像我在做背景色一樣?

回答

0

使用本地存儲來存儲用戶選擇的顏色。作爲一個例子,這裏是a working jsFiddle

jQuery的

// add a handeler to a color picker element 
$('#myColor').change(function() { 

    // get the color from the changed picker 
    var colorCode = $(this).val(); 

    // set the color to our header 
    $("#myHeader").css("background-color", colorCode); 

    // save the color to the browser's `localstorage` 
    localStorage.setItem("colorCode", colorCode) ; 
}); 


// when page loads, check if user has a colorcode stored in local storage 
if (localStorage.getItem("colorCode") !== null) { 

    // if so, set the color to our header and the picker 
    var colorCode = localStorage.getItem("colorCode"); 
    $('#myColor').val(colorCode); 
    $("#myHeader").css("background-color", colorCode); 
} 

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="myHeader"></div> 
<br> 
<br> 
<br> 
Pick a color: <input type="color" id="myColor" value="#cccccc" /> 

CSS

#myHeader{ 
    height:100px; 
    width:100%; 
    background-color:#cccccc; 
} 
0

您不必使用cookies。如果您不需要服務器參與用戶的顏色設置,我會推薦使用localStorage

0

是的,你可以用cookie來做到這一點。但這可能是更好的localStorage。到localStorage的一對夫婦的好處是:

  1. 的localStorage沒有到期,而不是餅乾
  2. localStorage的有5MB的存儲容量。這比cookies大得多〜4kb
  3. localStorage在客戶端提供,它刪除額外的http請求。
+0

這是有用的,謝謝:) acreating我的網頁,我有startet思考,我有很多的html頁面。我被稱爲php,現在使用ajax來改變我的「文本div」,或我的網頁上的主要內容.. 這讓我有「只」9個HTML頁面,所有這些都在我的「mainmenu 「,並且每一個單獨的html頁面...... Php有人告訴我,很好地把它全部放到更少的頁面中,但是我會如何去實現這一目標? – sunto 2015-01-21 13:58:30

+0

我在想,如果我添加一個菜單項,我將不得不在每一個html頁面中改變這個。主菜單是一件好事,也用ajax加載?或者,如果Ajax失敗或者類似的東西,這會讓我的頁面變得如此糟糕嗎? :) – sunto 2015-01-21 14:00:23

0

本地存儲似乎是要走的路,謝謝。 當你構建網頁時,我試圖使它移動友好。 我的第一個想法是隱藏(顯示:無),鏈接,在頁面的底部,因爲我有我的網頁版本的懸停菜單。 這個我然後隱藏,當在移動,和vica相反。

這是不好的做法?

var parentElement = document.getElementById("cssmenu"); 
var lis = parentElement.getElementsByTagName("ul"); 
for (var i = 0; i < lis.length; i++) { 
lis[i].setAttribute("style","background-color: black"); 

現在我已經學會了,我可以輕鬆地使用JavaScript,隱藏和顯示菜單,這是一個更好的解決方案,因爲大多數人確實有啓動Javascript如今,對不對? 但是我接觸到移動設備,並不是每個人都有js,這是正確的假設,還是js在他們的系統中實現? 我在想,我可以改變上面的代碼,隱藏並顯示我的'ul',但自然不會隱藏第一個ul,它自己的菜單。 這樣,我想保留我的桌面上的懸停功能,但有一個onclick在我的手機,似乎好多隻隱藏在桌面版本的onclick按鈕...

現在,似乎任何懸停我在我的桌面樣式表中設置的動作也會影響我的移動樣式表..我明白這是因爲它將所有內容都渲染到一個樣式表中,並且自然而然地,它會找到懸停並在我的android中使用它.. 是否有任何很好的方法來解決這個問題,我自然會考慮去掉懸停效果,並且有一個可以點擊的菜單,看起來移動設備可以在舊時間懸停在css上,而且我也看過:焦點和:主動,但是不被認爲是主動的.. 是積極的方式去這裏,在這種情況下,我必須在我的菜單項omewhere?

var parentElement = document.getElementById("cssmenu"); 
var lis = parentElement.getElementsByTagName("ul"); 
for (var i = 0; i < lis.length; i++) { 
lis[i].setAttribute("style","display: inline"); 

這樣的事情可能是我所期待的,我會嘗試一點點吧,看看它是如何去,但一些指針什麼是最好的做法,也爲未來的,將不勝感激: )

+0

我注意到你已經發布了「答案」給你自己的大部分問題。這不是很典型,但更大的問題是大部分答案更像是對其他人問題的後續迴應。這是很好,你是徹底的,但我認爲你應該注意不要看作爲討論論壇的stackoverflow。這些答案不符合SO的Q + A格式。 – 2015-01-28 05:39:50

相關問題