En HTML y CSS, ¿por qué usamos ‘. ‘para apuntar a clases y’ # ‘para apuntar a ID’s?

Miré la especificación y no vi ninguna mención de ella, pero he notado una tendencia a lo largo de los años de que los nuevos idiomas heredan o toman prestada de la sintaxis de los idiomas anteriores o existentes.

Entonces CSS usa la siguiente sintaxis:

ElementName {
valor de propiedad;
}

Esto parece muy familiar para JavaScript (el lenguaje de secuencias de comandos nativo utilizado en un navegador):

objeto var = {propiedad: valor};

Acceder a la propiedad de un objeto implica la siguiente sintaxis:

var personObject = {nombre: “John”, edad: 25};
var personName = personObject.name;

log (personName); // salidas “John”

// asigna nueva información a la persona Objeto
personObject.weight = 150;
personObject.color = {ojos: marrón};

Nota: Aquí var significa variable.

El carácter que separa el objeto y su propiedad es el punto.

En CSS podemos especificar que se aplique un estilo a un elemento HTML (un Objeto) mediante la notación de puntos:

Aquí hay un texto

Aquí p representa el párrafo.

Al diseñar el párrafo, usaríamos el siguiente CSS:

PAGS {
Familia tipográfica: Arial;
}

Si tiene varios párrafos, puede especificar el párrafo que desee dando al párrafo una clasificación o una clase.

Supongamos que está escribiendo una historia con otra persona y desea diferenciar sus comentarios de sus comentarios:

¿Terminó el informe

Está en tu escritorio

P.Jill {
color azul;
}

P.Betty {
color verde;
}

Esto especifica que todos los elementos de párrafo con una clase de “Jill” deben usar el color azul y todos los elementos de párrafo con una clase de “Betty” usan el color verde.

Pero si tenemos otros elementos en nuestra página, como Spans o Headers, podríamos escribir como:

Span.Jill, P.Jill, Header.Jill, A.Jill {
color azul;
}

O podríamos eliminar el elemento de la declaración de estilo todos juntos escribiéndolo como:

* .Jill {
color azul;
}

O más comúnmente:

.Jill {
color azul;
}

El carácter de asteriscos, * , indica comodín, lo que significa que incluye todos los elementos. El selector, el nombre del valor antes del primer paréntesis de apertura, { dice seleccionar todos los elementos con el nombre de clase de Jill .

En la especificación CSS puede omitir el carácter de asteriscos y tener la misma selección. En otras palabras, *.Jill es lo mismo que .Jill .

Entonces, todo eso para decir que el punto puede haber sido utilizado porque está tratando de parecer familiar a la notación de puntos en los idiomas existentes y parecerse a una propiedad de una hoja de estilo. Qué significa eso?

Detrás de escena, en la UA, generalmente hay un tipo de objeto CSSStyleDeclaration que existe para diferentes tipos de elementos que se crean cuando se ve una página web. Entonces tiene uno para Párrafos, Encabezados, un objeto global, etc.

Entonces, en la Programación Orientada a Objetos (OOP) tiene sentido pensar en ello como tal:

// construyendo el código de la página arriba
// Sección CSS – Crea las hojas de estilo
var parameterStyles = new StyleDeclaration (“P”);
párrafoStyles.styleSheets.jill = {color: azul};
párrafoStyles.styleSheets.betty = {color: verde};

var headerStyles = new StyleDeclaration (“H”);
headerStyles.styleSheets [“*”] = {font-family: Arial};

var globalStyles = new StyleDeclaration (“*”);
globalStyles.stylesheets [“. boldText”] = {font-weight: bold};
// código de la página de construcción a continuación

Por lo tanto, las hojas de estilo pueden ser una simplificación de lo anterior:

P.Jill {
color azul;
}
P.Betty {
color verde;
}
.texto en negrita {
peso de fuente: negrita;
}
H {
Familia tipográfica: Arial;
}

O para pensarlo de otra manera, el CSS anterior se analiza y se convierte en los objetos en el código que se encuentra arriba.

Y cuando el agente de usuario (el navegador) está construyendo su página y dibujándola en la pantalla y encuentra un párrafo, comprueba si hay estilos que se han declarado y ve las reglas de estilo que ha declarado en su hoja de estilo y que se definen como declaraciones de clase. Luego verifica si el párrafo ha definido algún atributo de clase y verifica si coinciden. Si coinciden, se aplica el estilo y el texto se escribe en un nuevo color. Si no se encuentra coincidencia, los estilos se ignoran. (Nota: el orden de estos eventos se ha descrito linealmente pero a menudo no lo son).

La etiqueta hash utilizada para los selectores de id podría haber sido heredada de anclas con nombre.

En HTML, puede nombrar una ubicación de texto o elemento especificando un ancla alrededor:

Sección 1 – Introducción a HTML

Entonces podrá desplazarse a ese elemento utilizando otro ancla con una referencia al ancla con nombre existente.

Vaya a la Sección 1

Por qué usaron una etiqueta hash o un signo de libra no tengo ni idea. Pero puede deberse a la similitud hash en el aspecto de una matriz vacía. Multiplicar un valor por su matriz de identidad da como resultado el valor original. Es lo mismo que multiplicar un número por 1.

O podría ser que fue heredado de idiomas anteriores.

Por lo tanto, la notación de puntos puede existir porque intenta parecer propiedades de una clase de objetos y la etiqueta hash puede existir ya que intenta parecer una matriz de identidad o toma de las propiedades únicas que ya existen para los nombres de anclaje.

Si realmente desea conocer a Tim Berners Lee, Brendan Eich o el grupo de trabajo CSS, podría tener una respuesta más concreta.

El elemento de anclaje en HTML

Hojas de estilo en cascada, nivel 1 Clase como selector

Hojas de estilo en cascada, ID de nivel 1 como selector

Hashtag – Wikipedia

Hipervínculo – Wikipedia

Identificador de fragmento – Wikipedia

Identificador uniforme de recursos (URI): sintaxis genérica – fragmento

El “por qué” es muy simple: el Consorcio W3 decidió usar esas convenciones. No tienen importancia más allá de su selección arbitraria.

Para obtener explicaciones confusas, pero entretenidas, fuera de lugar de todo lo demás, lea las otras respuestas.

¿A quién le importa qué personajes se usan?

Alguien con suficiente persuasión en la comunidad decidió usarlos.

Selectutorial: Selectores de clase

Tutorial selectivo: selectores de ID

¿Deberías usar ID o clase?

No estoy seguro de que la sofisticación o la ingenuidad jueguen en absoluto. Las clases y las ID se comportan de manera diferente (la ID es más específica, puede tener varias clases en un solo elemento, etc.), y CSS y JavaScript deben poder seleccionarlas. No estoy seguro de cómo los creadores de la especificación decidieron usar puntos y hash para hacerlo, pero usarlos no es ingenuo, es cómo se supone que debes hacerlo.

No estoy seguro de la importancia de esta pregunta, pero puedo adivinar.

Las ID son muy específicas y solo pueden existir en un solo elemento, el mismo que # se usa para definir algo único en una tabla, por ejemplo.

Usamos # para decir “número x en la fila, por ejemplo”.

# 1 significa número 1. # 2 significa número 2. no puede haber dos # 1, ¿entiendes?

En cuanto a las clases, no puedo pensar en una razón decisiva para ser honesto, pero creo que se seleccionó al azar (ya que no puedo pensar en una razón específica por la cual los períodos significan clase).

Espero que esto ayude