Posso applicare uno stile CSS al nome di un elemento?


177

Attualmente sto lavorando a un progetto in cui non ho alcun controllo sull'HTML a cui sto applicando gli stili CSS. E l'HTML non è molto ben etichettato, nel senso che non ci sono abbastanza dichiarazioni id e class per distinguere tra elementi.

Quindi, sto cercando dei modi in cui posso applicare gli stili agli oggetti che non hanno un attributo id o class.

A volte, gli elementi del modulo hanno un attributo "nome" o "valore":

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

C'è un modo per applicare uno stile basato su name = "goButton"? Che dire di "valore"?

È il genere di cose che è difficile da scoprire perché una ricerca su Google troverà tutti i tipi di casi in cui termini generici come "nome" e "valore" appariranno nelle pagine web.

Sospetto che la risposta sia no ... ma forse qualcuno ha un trucco intelligente?

Qualsiasi consiglio sarebbe molto apprezzato.

Risposte:



52

Esempio di inserimento di testo

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

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


21

Puoi usare i selettori di attributo ma non funzioneranno in IE6 come diceva meder, ci sono soluzioni alternative javascript per quello. Controlla Selectivizr

Più dettagliatamente sui selettori di attributi: 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

Per i futuri googler, FYI, il metodo nella risposta di @meder, può essere utilizzato con qualsiasi elemento che ha un attributo name, quindi diciamo che c'è un <iframe>con il nome, xyzquindi puoi usare la regola come belows.

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

L' nameattributo può essere utilizzato sui seguenti elementi:

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

1
questo non aggiunge nulla alla domanda. nameSe lo desideri davvero, l' attributo può essere messo su qualsiasi cosa
Isaac,

4

Se capisco la tua domanda in quel momento,

Sì, puoi impostare lo stile del singolo elemento se il suo ID o nome è disponibile,

per esempio

se id disponibile, puoi ottenere il controllo dell'elemento come,

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

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

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

altrimenti se il nome è disponibile, puoi ottenere il controllo dell'elemento come,

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

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

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

4

Anche l'utilizzo [name=elementName]{}senza tag prima funzionerà. Interesserà tutti gli elementi con questo nome.

Per esempio:

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


0

Questo è il lavoro perfetto per il selettore di query ...

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

È quindi possibile scorrere in sequenza queste raccolte per operare sugli elementi trovati.


0

se nel caso in cui non si utilizzi il nome nell'input ma un altro elemento, è possibile scegliere come target un altro elemento con l'attributo there.

    [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">

spero che sia di aiuto. Grazie


0

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

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


1
Prova ad aggiungere una descrizione di ciò che fa questo codice. Può migliorare notevolmente la qualità della tua risposta.
Christopher Moore

-2

hai esplorato la possibilità di utilizzare jQuery? Ha un modello di selezione molto esteso (simile nella sintassi al CSS) e anche se i tuoi elementi non hanno ID, dovresti essere in grado di selezionarli usando la relazione parent -> child -> grandchild. Una volta che li hai selezionati, c'è una semplice chiamata di metodo (ho dimenticato il nome esatto) che ti consente di applicare lo stile CSS agli elementi.

Dovrebbe essere semplice da usare e come bonus, molto probabilmente sarai molto compatibile con più piattaforme.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.