ホームページ  >  記事  >  ウェブフロントエンド  >  複数のスタイル選択とスタイルのリアルタイム切り替えを実現する方法_体験交流

複数のスタイル選択とスタイルのリアルタイム切り替えを実現する方法_体験交流

不言
不言オリジナル
2018-05-16 14:42:082832ブラウズ

web サイトを作成するとき、web サイトには複数のスタイルがあることを望みます。ユーザーは自分の好みに応じてさまざまなスタイルを選択できます。そのようなスタイルは、レイアウトの変更、色の違い、または特別にカスタマイズされたスタイルです。異なるユーザーグループ。
複数のスタイルの選択とスタイルのリアルタイム切り替えを実現するにはどうすればよいでしょうか?
実はieではこの機能をサポートしておらず、ブラウザに任せることになりますが、firefoxではこの機能をサポートしています。
2 つの css セットがあり、2 つの異なるファイル a.css と b.css に囲まれているとします。次に、

と の間に次の 2 行の xhtml コードを追加します。
<link rel="stylesheet" type="text/css" title="主题a" href="a.css?7.1.34" /> 
<link rel="alternate stylesheet" type="text/css" title="主题b" href="b.css?7.1.34" />

次に、firefox でこのページを開き、メニュー バーで view-> ページ スタイルを選択します。 「テーマa」と「テーマb」をリアルタイムに表示し、選択することができます。
もう 1 つの方法は、asp、php、jsp などの動的プログラムを使用することです。この利点は、直接的、効率的、優れた互換性、およびユーザーの選択を記憶できることです。ユーザーの選択内容は cookie に記録するか、データベースに直接書き込むことができ、ユーザーが再度アクセスすると、前回のアクセスで選択したスタイルが直接呼び出されます。ここでは特定の制作については詳しく説明しませんが、当社の web サイト www.52css.com に注目してください。この分野のコンテンツは随時公開されます。
今、どのような方法を使用する必要がありますか?主流のブラウザieではブラウザに選択させる方法がサポートされていないため、プログラムスクリプトで実装するにはどうすればよいでしょうか? web ページが静的な場合、データベースは存在しません。
それを実現するには、javascript を使用することしか選択できません。次のコードを見てみましょう:

function setactivestylesheet(title) { 
var i, a, main; 
for(i=0; (a = document.getelementsbytagname("link")[i]); i++) { 
if(a.getattribute("rel").indexof("style") != -1 && a.getattribute("title")) { 
a.disabled = true; 
if(a.getattribute("title") == title) a.disabled = false; 
} 
} 
} 
function getactivestylesheet() { 
var i, a; 
for(i=0; (a = document.getelementsbytagname("link")[i]); i++) { 
if(a.getattribute("rel").indexof("style") != -1 && a.getattribute("title") && !a.disabled) return a.getattribute("title"); 
} 
return null; 
} 
function getpreferredstylesheet() { 
var i, a; 
for(i=0; (a = document.getelementsbytagname("link")[i]); i++) { 
if(a.getattribute("rel").indexof("style") != -1 
&& a.getattribute("rel").indexof("alt") == -1 
&& a.getattribute("title") 
) return a.getattribute("title"); 
} 
return null; 
} 
function createcookie(name,value,days) { 
if (days) { 
var date = new date(); 
date.settime(date.gettime()+(days*24*60*60*1000)); 
var expires = "; expires="+date.togmtstring(); 
} 
else expires = ""; 
documents.cookie = name+"="+value+expires+"; path=/"; 
} 
function readcookie(name) { 
var nameeq = name + "="; 
var ca = documents.cookie.split(';'); 
for(var i=0;i < ca.length;i++) { 
var c = ca[i]; 
while (c.charat(0)==' ') c = c.substring(1,c.length); 
if (c.indexof(nameeq) == 0) return c.substring(nameeq.length,c.length); 
} 
return null; 
} 
window.onload = function(e) { 
var cookie = readcookie("style"); 
var title = cookie ? cookie : getpreferredstylesheet(); 
setactivestylesheet(title); 
} 
window.onunload = function(e) { 
var title = getactivestylesheet(); 
createcookie("style", title, 365); 
} 
var cookie = readcookie("style"); 
var title = cookie ? cookie : getpreferredstylesheet(); 
setactivestylesheet(title);

上記のコードは、複数スタイルの選択とリアルタイムのスタイル切り替えを実装する javascript スクリプトです。上記のコードを js ファイルとして保存し、必要なページに表示します。直接引用:

<script type="text/javascript" src="cssturn.js?7.1.34"></script>

もちろん、上記のコードをページ内に直接記述することもできます。
3 つのスタイルがあり、1 つは他の 2 つのスタイルのデフォルトになります。これら 3 つの css ファイルをページ ファイルに導入します:

<link rel="stylesheet" type="text/css" href="css.css?7.1.34" /> 
<link rel="stylesheet" type="text/css" href="aaa.css?7.1.34" title="aaa" /> 
<link rel="stylesheet" type="text/css" href="bbb.css?7.1.34" title="bbb" />

さて、ページ内のスタイルを切り替えるためのリンクを追加できます:

<a href="#" onclick="setactivestylesheet('',1); return false;">默认样式-白色</a> 
<a href="#" onclick="setactivestylesheet('aaa',1); return false;">样式一-蓝色</a> 
<a href="#" onclick="setactivestylesheet('bbb',1); return false;">样式二-橙色</a>

さてこれで完了です。上記の結果をテストして、その効果を見てみましょう。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "<a rel="nofollow" href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>"> 
<html xmlns="<a rel="nofollow" href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>阿Q家园</title> 
<link rel="stylesheet"  type="text/CSS" href="<a rel="nofollow" href="http://www.52css.com/attachments/month_0701/r2007128164252.css?7.1.34" target="_blank">http://www.52css.com/attachments/month_0701/r2007128164252.css</a>"  /> 
<link rel="stylesheet" type="text/CSS" href="<a rel="nofollow" href="http://www.52css.com/attachments/month_0701/c2007128164223.css?7.1.34" target="_blank">http://www.52css.com/attachments/month_0701/c2007128164223.css</a>" title="aaa" /> 
<link rel="stylesheet" type="text/CSS" href="<a rel="nofollow" href="http://www.52css.com/attachments/month_0701/h2007128164239.css?7.1.34" target="_blank">http://www.52css.com/attachments/month_0701/h2007128164239.css</a>" title="bbb" /> 
<script type="text/javascript"> 
function setActiveStyleSheet(title) { 
  var i, a, main; 
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { 
      a.disabled = true; 
      if(a.getAttribute("title") == title) a.disabled = false; 
    } 
  } 
} 

function getActiveStyleSheet() { 
  var i, a; 
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); 
  } 
  return null; 
} 

function getPreferredStyleSheet() { 
  var i, a; 
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { 
    if(a.getAttribute("rel").indexOf("style") != -1 
       && a.getAttribute("rel").indexOf("alt") == -1 
       && a.getAttribute("title") 
       ) return a.getAttribute("title"); 
  } 
  return null; 
} 

function createCookie(name,value,days) { 
  if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
  } 
  else expires = ""; 
  documents.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
  var nameEQ = name + "="; 
  var ca = documents.cookie.split(';'); 
  for(var i=0;i < ca.length;i++) { 
    var c = ca[i]; 
    while (c.charAt(0)==' ') c = c.substring(1,c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
  } 
  return null; 
} 

window.onload = function(e) { 
  var cookie = readCookie("style"); 
  var title = cookie ? cookie : getPreferredStyleSheet(); 
  setActiveStyleSheet(title); 
} 

window.onunload = function(e) { 
  var title = getActiveStyleSheet(); 
  createCookie("style", title, 365); 
} 

var cookie = readCookie("style"); 
var title = cookie ? cookie : getPreferredStyleSheet(); 
setActiveStyleSheet(title); 
</script> 
</head> 
<body> 
<a href="#" onclick="setActiveStyleSheet('',1); return false;">默认样式-白色</a> 
<a href="#" onclick="setActiveStyleSheet('aaa',1); return false;">样式一-蓝色</a> 
<a href="#" onclick="setActiveStyleSheet('bbb',1); return false;">样式二-橙色</a> 
<p></p> 
</body> 
</html>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。