CSS использует только данные в дереве DOM, что имеет мало общего с тем, как средство визуализации решает, что делать с элементами с отсутствующими атрибутами.
Так что либо пусть CSS отражает HTML
input:not([type]), input[type="text"]
{
background:red;
}
или сделайте HTML явным.
<input name='t1' type='text'/> /* Is Not Red */
Если бы этого не произошло, вы бы никогда не смогли различить
element { ...properties... }
и
element[attr] { ...properties... }
потому что все атрибуты всегда будут определены для всех элементов. (Например, table
всегда имеет атрибут border
, с 0
по умолчанию.)