Botoes de acessibilidade

Mais
10 anos 5 meses atrás #457 por elvisvinicius
elvisvinicius replied the topic: Re: Botoes de acessibilidade
Manja de javascript certo?

Eu tenho feito esse tipo de coisa com o JQuery. Deve funcionar da mesma forma com o MooTools.

Pega o elemento DOM, remove a classe CSS atual e atribui uma nova, como contraste.


( ^^)

Please Entrar ou Registrar to join the conversation.

  • Guilherme Lucas
  • Avatar de Guilherme Lucas
  • Offline
  • JCB! Iniciante
  • JCB! Iniciante
Mais
10 anos 5 meses atrás #461 por Guilherme Lucas
Guilherme Lucas replied the topic: Re: Botoes de acessibilidade
Explica direito por favor. Nao entendi. Moo Tools?
aff
eu manjo java sim..Mas isso sao modulos? tendi nao
desculpe a ignorancia. <!-- s:? --><img src="{SMILIES_PATH}/icon_e_confused.gif" alt=":?" title="Confuso" /><!-- s:? -->

Please Entrar ou Registrar to join the conversation.

Mais
10 anos 5 meses atrás #470 por elvisvinicius
elvisvinicius replied the topic: Re: Botoes de acessibilidade

Guilherme Lucas escreveu: Explica direito por favor. Nao entendi. Moo Tools?
aff
eu manjo java sim..Mas isso sao modulos? tendi nao
desculpe a ignorancia. <!-- s:? --><img src="{SMILIES_PATH}/icon_e_confused.gif" alt=":?" title="Confuso" /><!-- s:? -->



Ok, vout entar resumir.

MooTools é o framework javascript que o Joomla usa para os efeitos especiais.
JQuery é outro framework, mais famoso que o MooTools e muito simples de usar.

O framework escolhido deve estar linkado à página. JQuery você precisa baixar.
MooTools, basta adicionar na tag <head> do index.php do seu template o seguinte código, que o Joomla o chama o script.
<?php JHTML::_( 'behavior.mootools' ); ?>

O exemplo simples que vou postar é com o JQuery (com MooTools deve ser parecido), e o código deve estar também na tag <head> do index.php.

JAVASCRIPT:
<script type="text/javascript" language="javascript">
(function($){
    $(function(){
        $('#modulo_login_claro').click(function(){
            $("#modulo_login").removeClass("cssEscuro");
            $("#modulo_login").addClass("cssClaro");
        });
        $('#modulo_login_escuro').click(function(){
            $("#modulo_login").removeClass("cssClaro");
            $("#modulo_login").addClass("cssEscuro");
        });
    });
})(jQuery);
</script>

HTML DO TEMPLATE
<a id="modulo_login_claro">CLARO</a> | <a id="modulo_login_escuro">ESCURO</a>

<div id="modulo_login">
    <!-- codigo do módulo -->
</div>

É simples: o código javascript fica esperando o clique nos links, que no exemplo se chamam, CLARO e ESCURO e seus IDs são respectivamente MODULO_LOGIN_CLARO e MODULO_LOGIN_ESCURO.

Ao clicar, o javascript muda o visual do módulo de ID MODULO LOGIN.

Portanto, ao clicar em escuro, o javascript vai acrescentar class="cssEscuro" ficando assim:

<div id="modulo_login" class="cssEscuro">

Basta que as classes tenham o código CSS adequado e pronto. <!-- s:ugeek: --><img src="{SMILIES_PATH}/icon_e_ugeek.gif" alt=":ugeek:" title="Uber Geek" /><!-- s:ugeek: -->

Repare que primeiro ele remove a classe CSS atual e depois adiciona a nova.
Dessa forma, você pode mudar todo o esquema de cor de qualquer elemento ou da página inteira sem recarregá-la.

O JQuery seleciona os elementos pela seguinte lógica:
$("#id") => ID do elemento
$(".classeCSS") => Classe CSS do elemento
$("input") => Aqui estou pegando um campo de formulário do tipo texto (são como os seletores CSS)
...e outros.


Sei que a primeira vista pode parecer meio complicado, mas é simples.
Complica se você quiser manter essa "seleção" pelo resto da navegação do usuário, mas aí creio que "gravar" em cookies a escolha do usuário e resgatá-la a cada página deva resolver.

Se não encontrar uma extensão pronta, talvez seja melhor implementar uma própria mesmo.
Esse exemplo pode ser um começo.

( ^^)

Please Entrar ou Registrar to join the conversation.

  • Guilherme Lucas
  • Avatar de Guilherme Lucas
  • Offline
  • JCB! Iniciante
  • JCB! Iniciante
Mais
10 anos 5 meses atrás #475 por Guilherme Lucas
Guilherme Lucas replied the topic: Re: Botoes de acessibilidade
Bom cara eu jah estou fazendo isso mais ou menos como vc disee olha so.

function setActiveStyleSheet(title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")); 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++) {
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++) {
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 = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca;
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);


Sacou que q a classe faz?
Ela pega o css q eu quiser e ativa no site.. grava os cookies e etc.
TAh blz.. e quanto ao modulo de menu.. eu nao posso mudar para outro modulo tendeu
sera q se eu fizer isso q vc falou vai dar certo?
Vou testar.

Please Entrar ou Registrar to join the conversation.