Category Archives: Programming

Programming is the process of designing, coding, debugging and maintaining the source code of programs

Positioning of elements

Positioning of elements

Positioning 'classic' elements is based on the model of blocks, which are placed to fill the page space from left to right and top to bottom

However, this model does not adapt well on mobile devices, where we will encounter problems with the size, orientation in the browser and even in the reordering of the elements to fit the type of device

To solve these problems appeared model of flexible positioning, which simplifies these tasks considerably

However, this model is too detailed to organize the overall structure of the website

For that reason, the model grid, which divides the space into a virtual grid and creates an array divided into cells within that grid, assigning the elements to a particular cell that will occupy so many additional cells depending on the size and orientation of the device

These two models are supported in addition to the so-called responsive design, which allows our website to adapt to the device on which it will be viewed: smartphones, tablets or desktop PCs

Model block

The boxes of the elements are placed by default following the 'normal flow', that is, pushing the boxes left and up

You can use the property position to modify the 'normal flow‘:

  • position: static it is the mode of positioning by default
    The box will occupy the position of the 'normal flow
  • position: relative using the properties top, right, bottom and left move your position
    These dimensions indicate the spacing that is left to each side in accordance with the original position of the box
    The rest of the boxes are not affected by this displacement, so they respect their reserved space
  • position: absolute it removes the box from the normal flow and placed the new box in a fixed position with respect to its containing box
    Supports the properties top, right, bottom and left
    You can overlap other elements because it is not respecting your space reserved
  • position: fixed similar to absolute positioning, but you specify the position relative to the window
    This implies that the box maintains its position and does not move when using the scroll bar
  • position: float the box is shifted to one side using the properties left or right, moving it to one end of the containing box or to the first floating box it finds in that direction
    May overlap with other elements that are not floating boxes
  • clear will only apply if there are floating boxes, for force the item to be displayed under the floating box of a certain type with the properties left or right; or anyone with both

Let's use this sample html to be able to check the use of the block model, for this we will use as a basis, the following sample style sheet:

A large font size was intentionally used to force scrolling. Now perform the following exercise so you can check for yourself how the block model works:

  1. Change the positioning of the block a a relative and asignale spacing top of 1em and a spacing left of 2em

    The blue block will overlap the red block, but the reserved space that should have occupied the blue block is preserved
  2. Change the positioning of the block c a relative and asignale spacing top of 1em and a spacing left of 2em

    The pink block will change its position relative to its container (the red block)
  3. Change the positioning of the block a a absolute and asignale spacing top of 1em and a spacing left of 2em

    The blue block will overlap the red block, but since no space has been reserved for the blue block, the red will be placed in the upper left corner
    And if we scroll, the blocks will no longer be visible
  4. Change the positioning of the block a a fixed and asignale spacing top of 1em and a spacing left of 2em

    The blue block will overlap the red block, but since no space has been reserved for the blue block, the red will be placed in the upper left corner
    And if we scroll, we will see that the blue block has been fixed in its position with respect to the window
  5. Change the positioning of the block a a float: right

    The blue block will overlap the other elements, have been placed on the right edge of the screen and no space has been reserved for that block
  6. Change the positioning of the block c a float: right

    The pink block will stick to the right side of your container, the red block
  7. Change the positioning of the block b a float: right

    The red block will stick to the right side of the previous floating element, the blue block
  8. Change the positioning of the block a a float: left and added to p the property clear: right

    The paragraph will be placed under the red block, but will overlap the blue block
  9. Change the positioning of p a clear: both

    The paragraph will be placed below the blue block

Flexible model

The flexible positioning allows you to accommodate the elements of the page according to changes in the dimensions and orentación of the page

It allows us to make a responsive design for our web pages you envisage properly in any device

This standard is relatively recent and is not yet supported by all browsers, but in the future it will be

As advantages you get a more readable and simple code, where you can change the order of the elements regardless of the order in the HTML code

The flexible model is appropriate for placing small components of a web page

To make a general arrangement of the elements of the page, the grid model is being imposed

The main idea is that a flexible container expands or compresses to fill the free space or to fit the available area

So we'll have a flex container and a series of flex item

To define a container, we will use the property display: lex (or display: kit-web.flex if we want Safari support)

All the elements will be elements flex

This model does not use concepts such as horizontal or vertical sorting, but defines a main axis and a secondary axis (cross axis)

This easily adjusts the design to the device's orientation changes

For each axis we can place the components at their start (main-start or cross-start) y final (main-end or cross-end)

Let's use this sample html to be able to check the use of the flexible model, for this we will use as a basis, the following sample style sheet:

Direction of the elements

The property flex-direction specifies the direction of the main axis, that is, how elements are placed inside the container

Supports the following values:

  • row
  • row-revese
  • column
  • column-reverse

To check its behavior, add the following CSS to the previous example:

Fit in the main shaft

The property wrap sets whether items need to be adjusted for display in a single row (or column)

Supports the following values:

  • nowrap adjust the elements to a line
  • wrap adjusts the items but without changing its size
  • wrap-reverse adjusts the elements but without resizing them, but in the reverse order of rows

To check its behavior, add the following HTML to the previous example:



And the following CSS:

Alignment of the content

With the property justify-content we can align the elements with respect to the main axis of the container

Allows us to decide what to do with the remaining space

Supports the following values:

  • flex-start board items at the beginning of the axis
  • flex-end board items at the end of the shaft
  • center centers the elements
  • space-between divides the space between the elements, leaving the ends attached to the edge
  • space-around all of the remaining space is distributed around each element

To check its behavior, add the following HTML to the previous example:



And the following CSS:

Fit on the secondary axis

To align the elements with respect to the secondary axis, we have the property align-items

Supports the following values:

  • strech to occupy all the width
  • flex-start aligns elements to the beginning of the axis
  • flex-end aligns items to the end of the shaft
  • center centers the elements

To check its behavior, add the following HTML to the previous example:

And the following CSS:

Properties of the elements

Up to now we have seen properties to configure the main container

Now let's list some very interesting properties to manipulate the elements:

  • order indicates the order in which they appear the element within the container
    In this way it will not be necessary to modify the HTML to reorder the elements, since we will do it by code
  • flex-grow sets the growth factor item
    That is, how it grows in relation to the other elements, as long as the container has free space
  • flex-shrink sets the factor of shrinkage item
    That is, how it decreases in relation to the other elements, as long as the container has free space
  • flex-basis indicates the default size (width) before the free space of the container is distributed
    Normally its default value is left: flex-basis: auto

There is a short form for the properties flex-grow, flex-shrink and flex-basis, simply specifying the value they will take: flex: 1 1 auto

To check its behavior, add the following HTML to the previous example:

And the following CSS:

Model grid

Although the box model flexible allows you to create sites adaptive thanks to the media queries, the model that is being imposed is the grid

In this model, the screen is divided into a grid is virtual, and the designer can choose how many cells of that grid will occupy each element depending on the device

This design has been popularized thanks to Bootstrap created by the developers of Twitter

In Bootstrap the available space is divided into 12 columns of equal size

For each item indicate how many columns will occupy depending on the size of the device

For example, for a sidebar we can indicate that it occupies 2 columns on a desktop, 6 columns (half the total width) for tablets and 12 columns (the entire width) on mobile devices

To achieve this, a set of classes will be used, in this example they would be: .col-md-2, .col-sm-6 and .col-xs-12

Sizes are defined in Bootstrap how to:

  • xs (extra small)
    Screens with width lower than 768px format
    The vast majority of smart phones
  • sm (small)
    Screens with a width less than 992px
    If the xs class has been defined and the size less than 768px, then that class will be applied
  • md (medium)
    Screens between 992px and 1200px
    This range represents the majority of desktop browsers
  • lg (large)
    Screens very big with a width over 1200px
    They are usually large high-definition screens

As you can see in the example, the content is organized into rows (row class) and within these rows we will create the columns with the desired sizes

Media Queries

A media query allows you to use the rules of style sheets depending on the characteristics of the medium (width, height and color)

They were added from CSS3, allow the presentation of the content to adapt to a specific scrape of output devices without having to change the contents and are the basis of adaptive design

They can be used in two ways: by importing a style sheet or by applying them within the same style sheet

Importing style sheets

We can use the media queries to choose different CSS depending on the medium or the characteristics of the same

Currently there are only two supported means:

  • screen a browser
  • print a printer

As can be seen in the example, defining the media type is as simple as adding the attribute media within the element link

It is also possible to indicate conditions about the media type, in the example we have told you to load when the media has a width less than 800px, so that you can use it with tablets

Rules @media

The rules @media allow us to indicate on what media type should apply certain CSS rules

Its generic sintasix is:

The only mediatype supported are screen and print, as we've seen before

As can be seen in the example, media feature allow us to indicate characteristics of the device, and you can add conditions by using logical operators and, not and only

We can using the media feature specify the size of the device, its temptation or resolution, number of colors, etc

Some of the highlights are:

  • aspect-ratio width/height of the device
  • min-aspect-ratio minimum width/height of the device
  • max-aspect-ratio maximum width/height of the device
  • color-index number of colors the device can display
  • width exact width
  • min-width minimum width
  • max-width maximum width
  • height high exact available
  • min-height minimum height available
  • max-height high maximum available
  • orientation orientation, supports values:
    • landscape
    • portrait

Adaptive layout with Media Queries

Let's see two examples with media queries to understand how to make our own adaptive designs, one with the flexible model and another with the model grid

Adaptive layout with the flexible model

In the following example, we create an adaptive layout with the flexible model is very easy

Because we can take advantage of the possibility to reorder the items on that offers us this option

Let's start from a 3-column layout with the navigation bar, the main content and a sidebar

When the size of the browser is less than 640px will go to a single column

The HTML we'll use in the example is as follows:

The CSS code in the flexible.css file that we'll use in the example is as follows:

Adaptive design with the model grid

In the following example, we create an adaptive layout with the model grid is very easy

One of the main limitations is that no longer that we can reorder the elements

We are going to use a grid of type Bootstrap

To do this we will use the classes cols-xs-12 to indicate that in small size the element will occupy 12 columns, col-sm-8 will occupy 8 columns for a small size and col-sm-2 will occupy 2 columns for a slightly larger size

For the change of size small to large has been assigned 768px format

The HTML we'll use in the example is as follows:

The CSS code in the grill.css file that we'll use in the example is as follows:

Lists of CSS declarations

Lists of CSS declarations

Properties are defined as lists of CSS declarations, they are very heterogeneous and cannot be applied to all HTML tags

We can find examples in w3schools or in MDN Web Docs Mozilla

Below we will address some of the main lists of statements

Units of measure

Many properties accept as the value of a unit of measure

En general, es recomendable utilizar medidas relativas en vez de absolutas

For example, for a web page we could indicate that we want 20 pixels high, however, if our users change devices, such as a mobile or a tablet, that size would be too large or the content would appear disproportionate.

To avoid that or similar problems, CSS declarations support the following units:

  • Percentage: sets the size in percent with respect to the inherited value
  • em: sets the size according to the current font (or the legacy font, if no font size is defined)
  • px: sets the size in pixels (a pixel represents a specific point on the screen that shows our page), being an absolute measure, as it can cause problems, we should limit its use to specific cases

We may use CSS declarations to indicate the visual appearance of the web page on different devices, such as a printer. For those cases we can use other types of measures:

  • cm, mm, in: the size is set to one of the international units (cm for centimeters, mm for millimeters, and in for inches)
  • pt: the size is set in points (one point equals \frac{1}{72} inch)

The use of relative measures (percentages or em) allow our page to be displayed correctly on any device. This practice is called design adaptive or responsive, that is, our design will adapt to the device on which it is viewed (a browser, a mobile, a tablet, etc.)

Colors

Another of the fundamental elements for a web page is the treatment of the colors

There is a list of 140 basic colors that we can find predefined, we can also define them manually using the RGB notation (Red, Green, Blue) to indicate the amount of red, green and blue that make up that color

To define the color we will use a value between 0 and 255 (in its value hexadecimal), starting the encoding with the '#' symbol followed by a 6 digit hexadecimal number

We can define color in the following ways:

  • color: value where value is one of the predefined colors
  • colour: code dónde código es un valor que empieza por el símbolo ‘#’ seguido de un número hexadecimal de 6 cifras
  • color: RGB(entero, entero, entero): dónde RGB es una función que admite 3 valores entre 0 y 255 que corresponden a la cantidad de rojo, verde y azul que componen ese color
  • color: RGB(entero%, entero%, entero%): igual que la anterior, pero el valor entero es un porcentaje
  • color: transparent: the color transparent is also a valid color in CSS3

Text properties

Las principales propiedades que se pueden utilizar en los elementos de texto son:

  • color

    indica el color de la fuente. Su valor es un color, ya lo hemos descrito en el previous paragraph

  • font-size

    representa el tamaño de la fuente, como ya se ha descrito en el previous paragraph it is recommended to use relative values

  • font-style

    admite un estilo de letra para el texto, podemos elegir entre uno de los siguientes estilos:

    • normal es el estilo por defecto del navegador, si no se especifica, se tomará este valor
    • italic it is the default style of the browser for the letter in italics
    • oblique es el estilo por defecto del navegador para la letra oblique, es similar a la cursiva, si la fuente no permite el tipo oblique tomará el estilo como italic
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
  • font-weight

    supports a bold font style for the text, we can choose between one of the following bold types:

    • normal is the default bold of the browser, if not specified, this value will be taken
    • bold defines the bold with bold
    • bolder defines the bold font with the characters more thick
    • lighter defines the bold with the characters thinner
    • integer define la negrita con un valor múltiplo de 100, con el valor 400 por defecto y el 700 para bold
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
  • text-decoration-line

    establece el tipo de decoración del texto para el subrayado, podemos elegir entre uno de los siguientes tipos de decoración:

    • none valor por defecto del navegador, si no se especifica, se tomará este valor
    • underline the underline will be below the text
    • overline the underline will be on the text
    • line-through the underscore will be through text
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
  • text-decoration-color

    establece el color para la decoración del texto, podemos elegir entre uno de los siguientes tipos de decoración:

    • color where color is one of the values seen in the previous paragraph
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
  • text-decoration-style

    establece el tipo de decoración del texto, podemos elegir entre uno de los siguientes tipos de decoración:

    • solid valor por defecto del navegador, si no se especifica, se tomará este valor. Mostrará la línea en una única línea
    • double show the line with a double line
    • dotted show the line as a dotted line
    • dashed show the line as a dashed line
    • wavy show the line as a wavy line
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
  • text-transform

    establece el texto en letras minúsculas o mayúsculas, podemos elegir entre uno de los siguientes tipos de transformación:

    • none valor por defecto del navegador, si no se especifica, se tomará este valor. No se tomarán letras mayúsculas
    • capitalize transforms the first letter of each word to uppercase
    • uppercase transform all letters to uppercase
    • lowercase transform all letters to lowercase
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
  • letter-spacing

    aumenta o disminuye el espacio entre caracteres en un texto, podemos elegir entre uno de los siguientes:

    • normal valor por defecto del navegador, si no se especifica, se tomará este valor. No hay espacios extra
    • length dónde lenghth es la cantidad de espacios extra entre caracteres (también están permitidos valores negativos)
    • initial is used to set a CSS property to its default value
    • inherit is used to inherit a property value from its parent element
    • word-spacing

      aumenta o disminuye el espacio entre las palabras en un texto, podemos elegir entre uno de los siguientes:

      • normal valor por defecto del navegador, si no se especifica, se tomará este valor
      • length dónde length es la cantidad de espacios extra entre palabras (también están permitidos valores negativos)
      • initial is used to set a CSS property to its default value
      • inherit is used to inherit a property value from its parent element
    • line-height

      especifica la altura de una línea, podemos elegir entre uno de los siguientes:

      • normal valor por defecto del navegador, si no se especifica, se tomará este valor
      • number where number is a value that will be multiplied by the current font size to set the height of the line
      • length dónde length es la altura para esa línea (también están permitidos valores negativos)
      • % is the height for that line, in percentage of the size of the current font
      • initial is used to set a CSS property to its default value
      • inherit is used to inherit a property value from its parent element
    • text-align

      especifica la alineación horizontal del texto en un elemento, podemos elegir entre uno de los siguientes:

      • left the text is aligned to the left
      • right the text is aligned to the right
      • center the text is aligned centered
      • justify el texto las líneas son estiradas para que cada línea tenga el mismo ancho (como en los periódicos y las revistas)
      • initial is used to set a CSS property to its default value
      • inherit is used to inherit a property value from its parent element
    • text-indent

      especifica la sangría de la primera línea en un bloque de texto, podemos elegir entre uno de los siguientes:

      • length dónde length es la sangría de la primera línea en un bloque de texto (también están permitidos valores negativos, en ese caso se usará una sangría a la izquierda)
      • % is the indentation of the first line in a block of text in percentage of the size of the parent element
      • initial is used to set a CSS property to its default value
      • inherit is used to inherit a property value from its parent element

    Es muy importante definir una fuente que sea coherente con el estilo de nuestra web. Para ello se dispone de la propiedad font-family, en la cual especificaremos la fuente (verdana, arial, time new roman, etc) que será usada para ese texto

    Sin embargo nos encontraremos con un problema si esa fuente en concreto no está definida en el navegador, por eso es recomendable especificar varias fuentes en caso de que no existiera alguna de ellas

    Another limitation is that we can only use sources that meet standards allowed by the browsers

    To solve problems related to the sources there are servers text sources they offer the possibility to load the font that we need of that server

    In the above example we have used one of the reference sources from Google called Roboto, and we have added to our header

    Background properties

    To set the background of an element we will use the property background-color

    Can also be used as a background image using the property background-image, que se repetirá vertical y horizontalmente para cubrir todo el elemento

    We may limit the way in which it repeats that image with the properties background-repeat: repeat-y and background-repeat: repeat-x

    In the example above we have used the property background-repeat: no-repeat para desactivar la repetición de la imagen, estableciendo además una posición fija, en la esquina inferior derecha, con la propiedad background-position: right bottom

    Para mantenerla fija y que haga scroll en la página, se ha utilizado la propiedad background-attachment: fixed

    Dimensions and edges

    To indicate the dimensions of an element, we use the properties width and height

    We have to take into account if their margins are internal or external

    To do this we first define the margin from the edge to the other elements with the property margin

    In the second place, we define the inner margin to the edge of the item with the property padding

    We can assign an outer margin to the four sides of the property margin or we can tell an outer margin, in particular, for each side using margin-top, margin-bottom, margin-left or margin-right

    De forma análoga, se puede realizar para los márgenes internos utilizando padding-top, padding-bottom, padding-left or padding-right

    Una vez difinidos los márgenes externos e internos, podremos configurar la apariencia que tomará el borde

    First we will establish the style with the property border-style, la cual admite los valores dotted, dashed, solid or double

    También es posible usar valores para crear bordes biselados, pero las guías de estilo modernas desaconsejan su uso por estar “pasados de moda”

    In the second place, we are able to customize the width of the stroke with the property border-width and your color with border-color

    Properties for lists

    Podemos utilizar las siguientes propiedades para manejar elementos lista:

    • list-style-type: representa el tipo de marcador que se utilizará en la lista
      Existen estos valores predefinidos:

      • circle
      • square
      • decimal
      • lower-roman
      • upper-roman
      • none
    • list-style-position: indica si el marcador se incluirá dentro del texto (propiedad inside) o fuera (propiedad outside), siendo esta última la más habitual
    • list-style-image: permite añadir una imagen como marcador
      We may use the values none or url(‘url de la imagen’)

    Other properties

    Además de las propiedades anteriores vamos a destacar un par más que nos serán de especial utilidad a la hora de dar formato a nuestros elementos:

    • visibility: indica si el elemento está visible o no
      Puede tomar uno de los siguientes valores:
      • visible: el elemento está visible
      • hidden: el elemento está no visible
      • collapse: solo podremos usarlo con los elementos de tablas para no visualizar una fila o una columna concreta
    • display: cambia el tipo de caja del elemento, puede tener los valores:
      • block
      • inline
      • none

Preprocessors CSS

Preprocessors CSS

El uso de procesadores CSS surge por un problema muy común en las hojas de estilo, muchos valores se repiten constantemente

Como podemos ver en el ejemplo anterior, el color #C0392B se repite constantemente en el código porque es nuestro color principal en este diseño

¿Pero, y si necesitamos cambiarlo? Esa situación nos obligaria a cambiar todas sus apariciones en la hoja de estilo

In the example above, it has solved the problem with the variable colorPrincipal, sin embargo, esta solución no es permitida por el CSS estándar

Therefore arises the need for the use of processors CSS, que son aplicaciones que permiten dotar al CSS de las ventajas de un lenguaje de programación, como el uso de variables, funciones, condiciones e incluso cálculos matemáticos, los cuales serán traducidos posteriomente a un CSS válido

No existe un estándar claro para este tipo de procesadores, pero tenemos las siguientes alternativas:

  • Sass funciona con Ruby, el cual viene preinstalado en Mac; si eres usuario de Windows necesitaras instalar previamente Ruby
    Funciona mediante línea de comandos en un terminal, ya que no tiene entorno gráfico
    Si quieres usarlo en modo visual, existen varias herramientas de pago que podrian interesarte
  • LESS está escrito en javascript, por lo que su instalación es tan sencilla como su importación directamente a nuestro documento HTML
    There are free tools that help to compile your files written in LESS, a CSS valid
    Aunque puede configurarse LESS para que haga el proceso de compilación ‘the flight‘, aunque no es recomendable porque consume tiempo de carga cada vez que recompila
  • Stylus necesitaremos instalar previamente Node.js, el cuál tiene su propio conjunto de repositorios que permite tener siempre la última versión estable del programa
    Funciona mediante línea de comandos en un terminal, ya que no tiene entorno gráfico
    Si quieres usarlo en modo visual, existen varias herramientas de pago que podrian interesarte

La sintaxis de estas herramientas es similar aunque hay pequeñas diferencias entre ellas, ya que como se ha dicho, no hay un estándar para preprocesadores CSS

LESS

Installation

With this tool we will create files .less where you keep our CSS rules improved

We'll include LESS in our HTML using the import Javascript and it will translate the file .less in a .valid css that will be loaded in the HTML page

Este tipo de instalación usada sólo en desarrollo es considerada ‘the flight‘ y llamada compilación, por motivos de eficiencia, en la página de producción, se añadirá el .css válido y ya traducido

Para poder realizar esta traducción ‘the flight‘ añadiremos las siguientes líneas en el head de nuestro HTML:

En el ejemplo nuestro fichero LESS se llama mystyle.less y le hemos indicado al navegador que es una hoja de estilos LESS con la referencia ‘stylesheet/less’

Despues hemos cargado la libreria Javascrip de LESS llamada less.js, que será la encargada de traducir el archivo mystyle.less al CSS válido y lo cargará en el HTML

Variables

Antes hemos visto un ejemplo para definir una variable para el color, en LESS se definen las variables con el símbolo @

Mixins

Mixins allow a CSS rule to inherit all the declarations of other

En el ejemplo anterior hemos hecho que los elementos p, ul y ol incluyan todas las declaraciones de .block y así nos ahorramos el tener que volver a escribirlas en cada aparición

Mixins also allow the use of parameters to configure them

En el ejemplo anterior hemos definido el mixin error donde el ancho de borde es configurable con la variable @wideBorder

Si no hay parámetros, su valor por defecto será 2px, como se ha indicado en su definición

.error-generic llama al mixin para heredar todas las declaraciones y, como no tiene parámetros toma su valor por defecto

.error-login llama al mixin pero esta vez, como tiene un parámetro toma el valor del mismo

Legacy code

A veces surge el problema de tener varios elementos con el mismo padre, con lo que nos vemos obligados a repetir en cada aparición referencias al padre

En el ejemplo anterior tenemos el problema comentado, section es el padre en la mayoría de los elementos de la hoja de estilo, a su vez nav es padre de varios de ellos, al igual que a

En el ejemplo anterior lo hemos solucionado escribiendo anidaciones de los hijos dentro de los elementos padre, así nos ahorramos repetir las referencias

Además permite usar el símbolo & para referirse al elemento padre inmediato dentro del elemento hijo

Functions for the color

The functions for the color to change the color at compile time

Son bastante útiles para crear degradados, oscurecer botones al pasar el ratón, etc

Operations

LESS allows mathematical operations

Como se puede ver en el ejemplo, no tiene muchas restricciones, ya que permite hacer cosas sin sentido como mezclar distintas unidades

Media queries

One of the problems of the media queries is that we can have different definitions of the same class in disintos points of the CSS file

Podemos anidar los media queries dentro de la misma clase, solucionando el problema del ejemplo anterior

Javascript

Javascript

JavaScript, just like Java or VRML, emerged to extend the capabilities of the language HTML and get dynamic web pages

JavaScript is not a programming language itself

It is a scriptor or document-oriented language, such as macro languages that have many word processors. You will never be able to make a program written in JavaScript, you can only improve your website by inserting javascript code in it

Utility of JavaScript

JavaScript serves primarily to improve client/server interface management. A JavaScript script embedded in an HTML document allows you to recognize and treat user-generated events locally, that is, on the client. These events can be the journey of the HTML document itself or the management of a form

For example: when the HTML page is a form that allows access to a phone book, you can insert a script that verifies the validity of the user-provided parameters. This test is done locally and does not need network access

On the other hand, you can also use JavaScript to make several options at once; for example, viewing a video within an HTML document or running a Java applet...

Differences with Java

The main difference between JavaScript and Java is that the latter is a complete programming language. Although they share the same syntax

JavaScript is a language that integrates directly into HTML pages. It has as its main features the following:

  • It is interpreted (not compiled) by the client, that is, the source program is executed directly, unlike in the compiled languages, neither object or executable code is generated for each computer on which you want to run that program
  • It's object-based. It is not, like Java, an object oriented programming language (OOP). JavaScript does not employ classes or inheritance or other typical OOP techniques
  • Your code is integrated into the HTML pages, included in the pages themselves
  • You don't need to declare the types of variables to be used, JavaScript performs an automatic type conversion
  • Object snaps are checked at run time. This is a consequence of JavaScript not being a compiled language
  • It is not possible to work directly with files, or automatically write to the hard drive. That's why JavaScript is said to be a safe language for internet users

Use of JavaScript in an HTML document

Inserting an HTML document is done using the SCRIPT mark using the syntax:

The attributes of this mark are:

  • type=“text/javascript”
    Specifies the language of the script. This attribute is required in the absence of the SRC attribute
  • src=url
    The SRC attribute specifies the URL of the script to insert into the document. This attribute is optional, because the script can be inserted directly into an HTML document

It can be specified to insert a script of a particular language into a document and whose source code is in a file specified in a particular url. It can be useful if we want several of our web pages to share the same scripts without having to insert them into each one, repeating the code

Here are some points to keep in mind regarding the introduction of JavaScript in an HTML document:

  • The script inserted via the brand SCRIPT it is evaluated by the client after the display of the page HTML. The defined functions do not execute immediately, depending on the events associated with the page
  • The insertion of the script by using the brand SCRIPT can be placed anywhere in the document HTML but it is recommended to place it in the header, that is, in the area defined by the HEAD. In this way, the script is defined from the beginning of the document, ensuring that the document is visible throughout the document
  • If defined, in addition to the script using the SRC, scripts in the document itself, the client will first evaluate the inserted using the SRC and then included in the document
  • The URL corresponding to a JavaScript have generally the extension .js
  • It is preferable to delimit the scripts inserted into a document-by-document comments HTML to ensure that the contents of the script will not appear on clients that do not recognize the brand SCRIPT. For example:
  • The JavaScript language is not case sensitive, except in literal character strings

Finally, comment on another way to introduce scripts in HTML documents, and is to include these scripts as event handlers for some brands, such as image marks, anchors, links, buttons, etc. Let's look at an example:

Go to the index

As you can see, within this mark, as an attribute of this, an event handler is put and after the equal sign and in quotation marks The JavaScript code is included. However, it is also possible to call a function from the HEAD document. This second option is recommended as it is a cleaner and clearer way to write pages. The same result would be achieved as in the previous example:

Versions of JavaScript

The language was invented by Brendan Eich in Netscape Communications. It first appeared in Netscape Navigator 2.0. Which included JavaScript under the name Mocha, when this version of Navigator appeared it was called LiveScript. It was finally renamed JavaScript in a joint ad between Sun Microsystems and Netscape on December 4, 1995

Traditionally, it had been used in HTML web pages, to perform tasks and operations within the framework of the client-only application, without access to server functions. JavaScript was running in the user's browser at the same time as the statements were being downloaded along with the HTML code. What Netscape wanted is for JavaScript to be a scripting language, easy to use and for anyone to use. After 2 years JavaScript became one of the most used tools by web developers, using almost 90% of web developments, even more than Java and Activex

Netscape introduced a server side script implementation with Netscape Enterprise Server, released in December 1994 (shortly after the release of JavaScript for web browsers)

In 1996 Microsoft began to show great interest in competing with JavaScript so it launched the language called Jscript, which was the implementation of ECMAScript, very similar to Netscape's JavaScript, but with some differences in the object model of the browser that would make both versions incompatible. But version 4.0 of Internet Explorer without any problem supported JavaScript version 1.1. However, Jscript was unable to compete directly with Javascript

In mid 1997, Netscape promoted JavaScript and released version 1.2. This new version included new components that gave great potential to the language, but unfortunately this version only worked on the latest version of the Navigator. The authors proposed that it be adopted as the standard of “the European Computer Manufacturer’s Association” (ECMA, with the ECMAScript implementation), which despite its name was not European but international, based in Geneva. Shortly after it was also proposed as an ISO standard

Version 1.3 was a small revision of 1.2, which was included in version 4.07 of the Netscape Navigator

To avoid these incompatibilities, the World Wide Web Consortium designed the Document Object Model (DOM) standard, which incorporates Konqueror, versions 6 of Internet Explorer and Netscape Navigator, Opera version 7, and Mozilla from its first version

Since mid 2000s, there has been a proliferation of JavaScript implementations for the server side. Node.js is one of the notable examples of JavaScript on the server side, being used in important projects

The arrival of Ajax returned JavaScript to fame and attracted the attention of many programmers. As a result, there was a proliferation of a set of frameworks and libraries of general scope, improving programming practices with JavaScript, and increasing the use of JavaScript outside web browsers, with the proliferation of server-side JavaScript environments. In January 2009, the CommonJS project was inaugurated with the objective of specifying a library to use common tasks mainly for development outside the web browser

In June 2015, the ECMAScript 6 standard (latest version to date) was closed and published with irregular support between browsers and that provides JavaScript with advanced features that were missed and that are commonly used in other languages such as, for example, modules for code organization, true classes for object-oriented programming, date expressions, iterators, generators or promises for asynchronous programming

Comments in JavaScript

The comments in the code allow the author's comments to be inserted to describe the different parts of the program. The JavaScript interpreter ignores them and therefore has a particular syntax

Comments on a single line are distinguished, preceded by the double slash // and comments on several lines delimited by the symbols / * and * /. For example:

Identifiers and reserved words

To know what is the syntax of the identifiers which are reserved words is something that is necessary before you start to write a program in a particular programming language

The identifiers of a language are the string of characters that we assign to the names of variables, constants, functions, objects, etc ..., which we define in that language, these are necessary to be able to invoke said elements in places after their definition

Identifiers must follow the following rules:

  • The identifier must start with a letter or the character '_'
  • The following characters, in addition to letters or the '_' character, can be figures

Note that case is not important, because JavaScript does not differentiate from case names in identifiers. Let's look at some examples of variable names:

First, say that reserved words are special words that are used to increase readability and separate syntactic entities. These words cannot be used as identifiers

Next we will see a table in which all the existing reserved words in JavaScript are shown, these words have or will have a special meaning within the language:


Reserved words
Abstract
Boolean
Break
Byte
Case
Cath
Char
Class
Const
Continue
Default
Do
Double
Else
Extends
False
Final
Finally
Float
For
Function
Goto
If
Implements
Import
In
Instaceof
Int
Interface
Long
Native
New
Null
Package
Private
Protected
Public
Return
Short
Static
Super
Switch
Synchronized
This
Throw
Throws
Transient
True
Try
Var
Void
While
With

Operators in Javascript

Operators in Javascript

JavaScript has a wide variety of operators

These operators can be distinguished into two groups: binaries, which act on two operands and unaries, which only require one operand

Thus, its general syntax is:

operand1 operator_Binary operand2

operand1 operator_unary

operator_unary operand1

Arithmetic operators

JavaScript provides the basic operations with the only operator additive that returns the rest of the division between the left and the right operator. More complex operators are lacking, although the Math object defined in JavaScript has these tasks

Arithmetic operators
+ Addition
Subtraction
* Multiplication
/ Division
% Rest

Note The operator + applied to strings concatenates both strings in one

Operators of increase (++) and decrease (- -)

These operators are unary and perform the self increment and self growth to the variable that applies to them. In addition to modifying the variable, they return the value of it

The operator increment or decrement can go before p behind the variable having a different meaning

If the operator is ++, it is placed after the variable is called post-increment, by first taking the value and then increasing the variable by one unit

If the ++ operator is placed before the variable, it is called pre-increment and makes that first to increase in a unit variable and then take the value

If the operator is - - it is placed after the variable, it is called post-decrement, making it take the value first and then the variable is decremented by one unit

If the operator - - is placed before the variable, it is called pre-decrement and makes that first decremente in a unit variable and then take the value

Relational operators

They are typically used in conditional expressions. Relational operators return Boolean values. The operands can be both numerical and strings

Relational operators
> Greater than
< Less than
> = Greater than or equal to
< = Less than or equal to
! = Other than that
= = Like

Logical operators

Logical operands are related to relational ones since normally the operands they use are the result of relational expressions. The resulting values are Boolean

Logical operators
& & AND
| | OR
! NOT

Bitwise operators

The way of working of these operators is to convert to the binary operands and then operate with them bitwise

Bitwise operators
& AND
| OR
^ XOR
<< Propagation to the left
Shift the value to the left by entering zeros, if it goes out of range, values are lost
>> Spread to the right
Moves the value to the right entering by the left, the sign bit and eliminating the values that are out by the right
>>> Zero fill, right propagation
Similar to &lt;&lt; but to the right. Do not enter sign bit

Note Propagation operators take two operands: the first is the variable to propagate and the second is the number of positions to propagate

Assignment operators

The assignment is also an operator that returns the modified variable. The assignment operator in JavaScript is =. The assignment operators shown below are nothing more than abbreviations that make expressions more comfortable and simple, although sometimes they are more illegible

Assignment operators
Operator Expression Equivalence
= A=B=C; A=C;
B=C;
+ = A + = 4; A = A + 4;
– = A – = 3 * B; A = A – (3 * B);
* = A * = 2; A = A * 2;
/ = A / = 35 + B; A = A / (35 + B);
>> = A >> = 1; A = A >> 1;
<< = A << = B; A = A << B;
>>> = A >>> = B + 1; A = A >>> (B + 1);
& = A & = (C + = 3); C = C +3;
A = A & C;
^ = A ^ = 2; A = A ^ 2;
| = A | = C; A = A | C;

Other operators

Selection operator

This operator is used to execute one operation or another depending on the condition. The format is as follows:

Condition ? Exp1 : Exp2

If the condition is met, the expression Exp1 is returned and if the Exp2 is not. We can put only one value. Example:

New operator

This operator is to be used to create an instance of a previously defined type of object. The syntax to follow is as follows:

variableObject = new ObjectType(parameter 1, parameter 2, …)

These parameters are passed to the constructor of that object in question

Typeof operator

This operator applied to a variable returns the type of object to which the data contained by that variable belongs. Its syntax is:

typeof(variable)

Preference

The preference of the operators will determine the order in which they are executed in a given expression. Using parentheses we will control that the operations are carried out as we want. In JavaScript, the preference of operators from highest to lowest is as follows:

Preference
Negation / (in / de) crease ! ++
Mul / Div / Rest * / %
Addition / Subtraction +
Spread << >> >>>
Relational < < = > > =
Equality = = !=
Bitwise AND &
Bitwise XOR ^
Bitwise OR |
AND logic &&
A logical OR | |
Other operators ?: New Typeof
Assignment = + = – = * = / = >> = << = >>> = & = ^ = | =

Javascript data types

Javascript data types

Types in Javascript are a representation of data because it does not require variables to declare their type, because all types are automatically converted

Type boolean

The Boolean type simply distinguishes between two states, a success or enabled state, true value, true, and a failure or deactivated state, false value, false

Numeric types

The numeric types can be divided into real and integer

Type integer numeric

  • Decimal

    integer base 10

    Both positive and negative

  • Hexadecimal

    integer base 16

    Placed before the base number 16 0x or 0X

  • Octal

    integer base 8

    We place a zero before the number in octal

Numeric type real

The actual is made up of a whole part and the other fractional separated by a point of the previous

The fractional part can be composed by an indicator of exponent E or E followed by an integer that indicates the value of the exponent

Type string

A string is a string of characters delimited by quotation marks

The quotation marks will be single or double according to a particular rule

The default is to use double quotation marks ("), but if any statement to be included in those quotation marks, if that statement contains a string or in turn another statement that must also be delimited by those quotation marks, these quotation marks will then be single quotation marks (')

On the other hand, we must take into account the writing of special characters in what we call escape sequences

The escape sequence always begins with the character \ and then another character is written that represents the special code or the number in octal or hexadecimal of its ASCII code

Escape sequences represent a single character in the strings in which they appear

Code Description
a Sound
b White
f Line break
n New line
r Carriage return
v Vertical tab
\ Blackslash "\"
Single quotation mark
" Double quotation mark
Ooo Ascii in octal
Xhh Ascii in hexadecimal
t Horizontal tab

Arrays

We can create arrays that we will give a name and that we will access with an index that will start from element number 1 (not from 0 as in Java or in C / C++)

In the arrays as with variables, there are no default types

To create an array it is necessary to define a function like the one below:

Comment on the function that the reserved word this refers to the current variable, that is, the variable that will contain the array

On the other hand, to observe that arrays have a length property that shows us the length of that array

Finally show the use of this function:

Objects

Objects consist of a set of values, properties, and a set of methods applied to those values

It is these methods that allow us to modify the state of that object, that is, the value of its properties

In JavaScript there are predefined objects

In addition, the programmer can also create his own objects

To make use of the properties of an object, simply use the following notation:

my_object.property

This will be seen more clearly in the following example, in which we have a University object in which we have the properties: Name, Last Name, Age and Faculty

Assuming we have a Uni1 variable that contains a University object at any given time:

But not only can we access the properties of an object by using the notation above, because, there is a relationship between objects and arrays, since we can access an object as if this were an array and its elements were the properties of object in the order in which they were defined

This type of vectors are referred to as associative arrays

A method it is a function assigned to an object

The following syntax is used to assign a function as a method of an object:

We can observe that the name of the method is the way in which we want to name the function within the object

A method can be called in a context using the syntax:

Object.methodName(parameters);

The reserved word this allows us to reference the current object

For example, suppose that the validate function allows you to validate the properties of an object through an associated minimum and maximum; we will have:

You may call then the function validate to change the values of a form by using the reserved word this and the attribute OnChange to detect the changes of values

This is done through the HTML flag and the event:

In general, the word this refers to the current object

The client and the server have a set of predefined objects that can be completed using new objects. The creation of an object is done in two stages:

  1. The object is defined by a function
  2. Create an object using the reserved word new

To define an object, a function will be created to specify its name, its functions and its associated methods

For example, if you want to create a university object whose properties would be name, surname, age and DNI, the following generic function will be defined:

The object instance will be created as follows:

The properties of an object can be described by other objects

We make the university object have a property of the Note_Mean object therefore:

Therefore, to access the final note:

student.expedient.final

When an object is defined, it is possible to enrich its description through new properties

student.dni = 44567234;

Now the property id belongs to the instance of the object contained in the student

This modification will not affect the other objects of the university type, since to add a property to an object type it must appear in its definition

The definition of methods associated with an object can be specified in the object definition

For example, for the university object we define a function that shows the name, surname, DNI and faculty of a student

This function becomes a method associated to the type by performing in its definition the following:

Its use will be:

student.Data();

The following example shows the function of the type of university that we have created

To do this we create the following form:

The Show_Univers (form) function is defined as follows:


Average mark of the academic stage



Note Have not checked if the data that is inserted in the form are "correct", that is, if the notes are between 0 and 10, if the first and last names are composed only of letters or the age is numerical

Null value

In JavaScript variables can be assigned a value that indicates the empty value, this value is null

The conversion of data types

First of all, remember that JavaScript doesn't need type declaration

The contents of the variable will be converted automatically in the course of the programme according to its use

The type conversion scheme is based on the following principle: the associated type corresponds to that of the left operand

This is because the evaluation is done from left to right

For example, suppose you define the following variables:

If we evaluate the following expressions

The first expression will convert the a_number variable to a character string because the operand on the left an_string is a string of characters

This expression concatenates the two character strings and the result of x is:"742"

Conversely, the second expression converts the string an_string to a numeric value because the left operand a_number, is as its own name indicates, a number

This second expression sums the two numbers and the result of y is: 49

Type conversion cannot be done in all possible cases: certain character strings cannot be converted to number

Such conversions fail with an error

For example:

Table that summarizes type conversion in JavaScript:

Type Function Object Number Boolean String
Function Function Error Error Descompila
Object Error Error True ToString
Null object FunObj ok 0 False “null”
Number Error Number True ToString
Number = 0 Error Null False “0”
Boolean = true Error Boolean 1 “true”
Boolean = false Error Boolean 0 “false”
String Single quotation mark String Numstr ok True
String null Error String Error False

Control structures in Javascript

Control structures in Javascript

For control structures, JavaScript has the typical control sentences of high level languages

Variable statement

Variables in JavaScript are not assigned a predefined type

In JavaScript the type of the variables depends on the value that contain the same in each time

Therefore it performs an automatic conversion of types

JavaScript recognizes the following types of values:

Since there are no types of a priori variables, we do not have to specify the type of variable when declaring it

The declaration of variables is done by prepending the reserved word var to the name of the variable

It is possible to assign the value when we declare

The if sentence

The if sentence has the form:

The parentheses associated that define the condition are not optional

If the condition is true, instruction 1 will be executed; otherwise it is executed if there is instructution 2

The use of the sentence else is optional, so brackets have been used in the definition

If omitted, the instruction block will only be considered when the condition is true

A block of instructions is a set of instructions bounded by curly brackets

Keys after sentencing if are not required

If omitted and the condition was true, the following instruction will be executed

Otherwise, the subsequent instruction will be executed, independent of the condition state

Thus, the omission of keys after the sentence if it will allow us to write everything on a single line finished in ;

The else if sentence

We can also use sentences if anities by sentencing else if

Sentences else if work just like a sentence if

But they will only be executed in case the condition of the sentence if was false

The switch sentence

Makes is select a group of sentence among several possible

It is an alternative to the use of sentences else if anities

Its syntax is:

The expression between parentheses of the switch must be whole

Your result will be compared with the different values of the case

If it matches one of them, the following sentence will be moved to the case with that value and consecutive instructions will continue to be executed until a sentence is found break or reach the switch lock keys

In case the result of the expression does not match any value, execution will be passed to the next statement sentence on the label default, if there were, and it will continue as a case

The values in the case can be a constant expression

There can be two case with the same value

The while sentence

The while sentence has the form

The parentheses are not optional

If the condition is met, the sentence or instruction block is executed and the process is repeated until the condition is no longer met

The do sentence

The do sentence has the form

It's very similar to the sentence while, except that the condition goes after the instruction or block of instructions

So they are executed at least once even if the condition is false

The for sentence

As for such a sentence, in JavaScript we can distinguish two variants:

  • The loop for "classic"
  • The loops for / in

The loop for "classic"

This loop has a syntax very similar to that of C / C+

In this syntax:

Initialization creates the counter variable and gives it an initial value

Condition must be fulfilled for the loop to run

Depends on the variable index

Expression updates the value of the variable index

The equivalent of this while expression is:

The loops for / in

This loop has a syntax very similar to the for-each Java

Iterates a variable var over all the properties of an object obj that is passed to it

Thus, for each value of var is is executed, the judgments of the loop

Therefore, the loop will have as many iterations as the object's properties, and in each iteration the variable will have the value of the corresponding object's property with that iteration

Its syntax is:

The break sentence

The break sentence can be placed within a loop or anities loops

When you execute the break sentence exits the loop more internal

To all effects, the break sentence acts as a jump to the sentence following the loop in which it runs

The continue sentence

The continue sentence does not leave the loop but causes the next iteration to run

In the loop while the execution of the continue causes the program flow to jump to the condition

In the for loop the continue execution causes the increment expression to run, and then continue normally with the condition

That is, running the continue prevents the rest of the loop body from running

Functions in Javascript

Functions

To define functions we have the instruction function

After this reserved word is placed the name of the function followed by a list of arguments delimited by parentheses and separated by commas

The return statement

The statement return it is the one that allows you to return the result of a function

The example shows a function that returns the area of a square of side l

Properties of the functions

JavaScript associates two properties with each function:

  • arguments
    it allows the management of the optional parameters
  • caller
    identifies the function that made the call

The property arguments

Is an array that contains the parameters that are passed to the function

In the example we have defined the Sum function to calculate the sum of the numbers passed as arguments

Thus, Sum(4,5,7) returns 16 and Sum(56) returns 56

The caller property

Displays the name of the calling function, so this property will return a string of characters

Considerations to be taken into account

Before you start working with features, you need to consider the following points:

  • The JavaScript language does not allow the definitions of nested functions

  • The passing of parameters is done by value

    That is, if a function modifies the content of its arguments, this modification is local and does not affect either globally or the function made the call

Functions are predefined by the language

Eval function

Has as argument an expression and returns the value of the same

This function is useful to evaluate a string of characters that represents a numeric expression

The issue was effected through a form field is a string of characters that it is sometimes necessary to convert to a numeric value

The following example illustrates how allowing the user to enter a numeric expression you can visualize it as the value of the expression

If you haven't entered anything, you see undefined and if it's not a numerical expression, it doesn't make changes to the visualization


Functions escape and unescape

These two functions allow you to encode strings in URL format

This encoding is necessary in the automatic creation of hypertext links or in the definition of persistent properties as the Cookies

Function isNaN

Function that checks if the value passed for the parameter is numeric or not

The result of this function is a Boolean

That is, it evaluates an argument to see if it is NaN: (Not a Number)


Function parseFloat

Converts a string of characters to a floating-point number

If a non number character is found, the sign '+', '-' or exponent, returns the value found up to that point

Similarly, if the first character cannot be converted to number it will return zero


Function parseInt

Converts a string of characters to an integer number with a specified base

La base puede ser 8, 10 ó 16

If a non number character is found, the sign '+', '-' or exponent, returns the value found up to that point

Similarly, if the first character cannot be converted to number it will return zero

jQuery

jQuery

jQuery is a library of free software written in Javascript, with MIT License and GNU General Public v2, allows its use in open source projects and private

In line with the principle type less, do more

To achieve this, it allows you to write Javascript code in a simpler way, doing in a single call tasks that requeririan several lines of code

Simplifies many of the tereas common, such as the handling of the DOM, CSS properties and an AJAX call, in addition to allowing the creation of effects or animations

Installation

Download the library in its most stable version from their official website jQuery.com

We load the library in the head of our HTML code:

In the example, version is the current number of version, may vary at the time of your download

It is advisable that in production you use the version min, since it is optimized for faster loading in the browser

There are also repositories CDN third-party that can be viewed on the official website of downloads, us librarian of having to update the current version of the library

However, we run the risk of having security flaws if someone outside of the introduction of malicious code in those repositories, or remain inacesibles for any reason

To include them simply modificariamos the src with the url of the repository CDN to indicate to us

Load the code

We can typically include the code of jQuery inside a script block like we do with Javascript, or use an external file .js where we include our own code

To be able to execute our instructions will be useful that the DOM of our HTML has been completely loaded, but we can execute them before that happens

In the example we have opted to load the DOM tree when it has loaded the HTML completely, including our code inside of the curly braces

In this other example we have an equivalent version that allows us to write less code, choose the one you like the most, although the first is more clear

Basic syntax

The jQuery syntax is very similar to CSS because all of the calls are composed of a selector followed by a call

In the example we can see the $ symbol that allows us to access the elements of jQuery

The selector will allow to select specific elements within the DOM tree

The action will be a function that allows us to interact with the item selected by the selector

In the examples we have the operator this, which represents the current item selected

‘p’ a tag is HTML valid, which represents an element, here we will be able to use any of them to perform searches

When we see with more detail the selectors, we will deepen in how they should be those searches

‘.test’ uses the symbol . to refer to what follows after that is a class, in this case, the test class

‘#test’ use the # symbol to refer to that what follows is an id, in this case, the id test

Selector

Selector

A selector allows us to specify what elements we want to apply the action

There are the following types of selector:

  • Item
  • Class
  • Id

Item

It is possible to select an element directly according to their type of HTML tag

In this example we have selected all of the elements of type paragraph

In this example will be hidden all the elements of type paragraph when you press on the item type button

Class

It is used with the symbol . and allows us to select elements with a specific class

In this example we have selected the element of the test class

In this example will be hidden all the elements of the test class when you press on the item type button

Id

Used with the # symbol and allows us to select elements with an id specific

In this example we have selected the element with the id test

In this example will be hidden all the elements with the id test when you press the element type button

Practical example

More examples of selector