Posso aplicar um estilo CSS a um nome de elemento?


176

Atualmente, estou trabalhando em um projeto no qual não tenho controle sobre o HTML ao qual estou aplicando estilos CSS. E o HTML não está muito bem rotulado, no sentido de que não há declarações suficientes de identificação e classe para diferenciar os elementos.

Portanto, estou procurando maneiras de aplicar estilos a objetos que não possuem um atributo de id ou classe.

Às vezes, os itens de formulário têm um atributo "nome" ou "valor":

<input type="submit" value="Go" name="goButton">

Existe uma maneira de aplicar um estilo baseado em name = "goButton"? E o "valor"?

É o tipo de coisa difícil de descobrir, porque uma pesquisa no Google encontrará todos os tipos de casos em que termos gerais como "nome" e "valor" aparecerão nas páginas da web.

Suspeito que a resposta é não ... mas talvez alguém tenha um truque inteligente?

Qualquer conselho seria muito apreciado.

Respostas:



52

Exemplo de entrada de texto

input[type=text] {
  width: 150px;
}

input[name=myname] {
  width: 100px;
}
<input type="text">
<br>
<input type="text" name="myname">


21

Você pode usar seletores de atributos, mas eles não funcionarão no IE6, como disse Meder, existem soluções em javascript para isso. Verificar Selectivizr

Mais detalhado nos seletores de atributos: http://www.css3.info/preview/attribute-selectors/

/* turns all input fields that have a name that starts with "go" red */
input[name^="go"] { color: red }

13

Para futuros googlers, o FYI, o método na resposta por @meder, pode ser usado com qualquer elemento que possua um atributo name, então digamos que exista um <iframe>com o nome, xyzentão você pode usar a regra como a seguir.

iframe[name=xyz] {    
    display: none;
}   

O nameatributo pode ser usado nos seguintes elementos:

  • <button>
  • <fieldset>
  • <form>
  • <iframe>
  • <input>
  • <keygen>
  • <map>
  • <meta>
  • <object>
  • <output>
  • <param>
  • <select>
  • <textarea>

1
isso realmente não adiciona nada à pergunta. O nameatributo pode ser colocado em qualquer coisa se você realmente queria
Isaac

4

Se entendi sua pergunta agora,

Sim, você pode definir o estilo do elemento individual se seu ID ou nome estiver disponível,

por exemplo

se id disponível, você pode obter controle sobre o elemento,

<input type="submit" value="Go" name="goButton">

var v_obj = document.getElementsById('goButton');

v_obj.setAttribute('style','color:red;background:none');

caso contrário, se o nome estiver disponível, você poderá obter controle sobre o elemento, como

<input type="submit" value="Go" name="goButton">

var v_obj = document.getElementsByName('goButton');

v_obj.setAttribute('style','color:red;background:none');

4

Usar [name=elementName]{}sem tag antes também funcionará. Isso afetará todos os elementos com esse nome.

Por exemplo:

[name=test] {
  width: 100px;
}
<input type=text name=test>
<div name=test></div>


0

Esse é o trabalho perfeito para o seletor de consultas ...

var Set1=document.querySelectorAll('input[type=button]');  // by type

var Set2=document.querySelectorAll('input[name=goButton]'); // by name

var Set3=document.querySelectorAll('input[value=Go]'); // by value

Em seguida, você pode percorrer essas coleções para operar nos elementos encontrados.


0

se você não estiver usando o nome na entrada, mas outro elemento, poderá direcionar outro elemento com esse atributo.

    [title~=flower] {
      border: 5px solid yellow;
    }
    <img src="klematis.jpg" title="klematis flower" width="150" height="113">
    <img src="img_flwr.gif" title="flower" width="224" height="162">
    <img src="img_flwr.gif" title="flowers" width="224" height="162">

espero que ajude. Obrigado


-2

você explorou a possibilidade de usar o jQuery? Ele possui um modelo de seletor de alcance (semelhante na sintaxe ao CSS) e, mesmo que seus elementos não tenham IDs, você poderá selecioná-los usando o relacionamento pai -> filho -> neto. Depois de selecioná-los, há uma chamada de método muito simples (esqueci o nome exato) que permite aplicar o estilo CSS ao (s) elemento (s).

Deve ser simples de usar e, como bônus, você provavelmente será muito compatível com várias plataformas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.