Jump to content
  • 0

Переключение между стилями CSS одной кнопкой


Daikengo
 Share

Question

Камрады, встала вот такая задачка передо мной, прошу совета или ссылки на примерное решение:

На странице сайта ТЗ предусматривается некая кнопка, по нажатию на которую должна смениться таблица стилей без перезагрузки страницы (это НЕ многократно здесь обсужденная ранее "версия для печати" - в моем случае меняется все форматирование страницы). Соответственно есть две таблицы стилей - style1 и style2. Проблема в том, что одна и та же кнопка должна при каждом следующем нажатии переключать эти две таблицы туда-сюда.

Я погуглил на эту тему - есть куча решений для случая с выбором стиля из списка (да я и сам так могу сделать), есть решения для включения/выключения CSS вообще, а вот как сделать одну кнопку-переключатель - так и не разобрался. Найденные в блогах несколько упоминаний о реализации такой фичи ведут на ныне мертвые сайты и несуществующие страницы...

Алярм, помогите плиз кто-нибудь! Спасибо заранее!

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0
//Динамическая загрузка ява скриптов и цсс

function loadjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}

// в коде страниц используется так:
// loadjscssfile("myscript.js", "js")
// loadjscssfile("javascript.php", "js")
// loadjscssfile("mystyle.css", "css")



//Динамическая выгрузка ява скриптов и цсс

function removejscssfile(filename, filetype){
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
var allsuspects=document.getElementsByTagName(targetelement)
for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild()
}
}

// в коде страниц используется так:
// removejscssfile("somescript.js", "js")
// removejscssfile("somestyle.css", "css")

Link to comment
Share on other sites

  • 0

Спасибо за совет, я нашел более элегантное решение. Взял за основу обычный переключатель стилей из списка и заставил по переключению на альтернативный стиль прятаться слой с кнопкой, которая его вызывает. Вместо нее на то же место позиционируется кнопка с обратным действием. И наоборот :P Все равно CSS переключается - почему бы там не прописать лишний visibility:hidden? ))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy