Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa Última revisión Ambos lados, revisión siguiente | ||
clase:daw:diw:2eval:tema06 [2024/01/08 20:54] admin [Cálculos en CSS] |
clase:daw:diw:2eval:tema06 [2024/01/09 19:40] admin [Cálculos en CSS] |
||
---|---|---|---|
Línea 68: | Línea 68: | ||
| | ||
| | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * También se pueden usar decimales con '' | ||
+ | |||
+ | <sxh css> | ||
+ | .c-titulo { | ||
+ | font-size: 3.14vw; | ||
} | } | ||
</ | </ | ||
Línea 150: | Línea 158: | ||
.c-titulo { | .c-titulo { | ||
font-size: calc(10vw - 10px); | font-size: calc(10vw - 10px); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <sxh css> | ||
+ | .c-titulo { | ||
+ | font-size: calc( ( 1 / 3 ) * 100vw); | ||
} | } | ||
</ | </ | ||
Línea 158: | Línea 172: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
<note tip> | <note tip> | ||
+ | <note important> | ||
+ | Es obligatorio separar siempre las operaciones de suma y resta con espacios en blanco de sus operandos. | ||
+ | |||
+ | Por ejemplo, la siguiente expresión no es correcta: | ||
+ | |||
+ | '' | ||
+ | |||
+ | debiendose corregir y quedando así: | ||
+ | |||
+ | '' | ||
+ | |||
+ | Aunque los operadores '' | ||
+ | </ | ||
Línea 168: | Línea 197: | ||
==== Calculo de valores con clamp ==== | ==== Calculo de valores con clamp ==== | ||
- | La siguiente gráfica muestra como funciona '' | + | La siguiente gráfica muestra como funciona '' |
{{ : | {{ : | ||
- | Para calcular los tamaños de pantalla donde se producen los cambios (puntos rojos) | + | Para calcular los tamaños de pantalla donde se producen los cambios (puntos rojos) |
* $w_{lower}$: | * $w_{lower}$: | ||
* $w_{upper}$: | * $w_{upper}$: | ||
+ | * $min_{value}$: | ||
+ | * $max_{value}$: | ||
+ | \\ | ||
* $pendiente$: | * $pendiente$: | ||
- | * $min$: El valor mínimo de la propiedad CSS | ||
- | * $max$: El valor máximo de la propiedad CSS | ||
- | |||
$$ | $$ | ||
Línea 192: | Línea 221: | ||
$$ | $$ | ||
- | w_{lower} * \frac {pendiente}{100}=min | + | w_{lower} * \frac {pendiente}{100}=min_{value} |
\\ | \\ | ||
- | w_{lower} = \frac {min*100}{pendiente}= \frac {200*100}{60}=333px | + | w_{lower} = \frac {min_{value}*100}{pendiente}= \frac {200*100}{60}=333px |
$$ | $$ | ||
Línea 200: | Línea 229: | ||
\\ | \\ | ||
$$ | $$ | ||
- | w_{upper} * \frac {pendiente}{100}=min | + | w_{upper} * \frac {pendiente}{100}=max_{value} |
\\ | \\ | ||
- | w_{upper} = \frac {max*100}{pendiente}= \frac {400*100}{60}=667px | + | w_{upper} = \frac {max_{value}*100}{pendiente}= \frac {400*100}{60}=667px |
$$ | $$ | ||
+ | |||
+ | |||
+ | De forma genérica podemos establecer los valores de las 4 variables de la siguiente forma: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Siendo los valores de $pendiente$ y $coeficiente_{posición}$ los siguientes: | ||
+ | |||
+ | $$ | ||
+ | pendiente=\frac {max_{value} - min_{value}}{w_{upper} - w_{lower}}*100 | ||
+ | \\ | ||
+ | coeficiente_{posición}=min_{value} - \frac{pendiente}{100}*w_{lower} | ||
+ | $$ | ||
+ | |||
+ | Veamos el ejemplo en el que queremos que la propiedad '' | ||
+ | * $w_{lower}$: | ||
+ | * $w_{upper}$: | ||
+ | * $min_{value}$: | ||
+ | * $max_{value}$: | ||
+ | |||
+ | Entonces | ||
+ | |||
+ | $$ | ||
+ | pendiente=\frac {max_{value} - min_{value}}{w_{upper} - w_{lower}}=\frac {20-12}{600-230}*100=2, | ||
+ | \\ | ||
+ | coeficiente_{posición}=min_{value} - \frac{pendiente}{100}*w_{lower}=12-\frac{2, | ||
+ | $$ | ||
+ | |||
+ | Por lo tanto el css será: | ||
+ | |||
+ | <sxh css> | ||
+ | .c-titulo { | ||
+ | font-size: clamp(12px, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | * El código en python para crear los gráficos es el siguiente: | ||
+ | <sxh python> | ||
+ | import numpy as np | ||
+ | import matplotlib.pyplot as plt | ||
+ | from matplotlib.ticker import AutoLocator | ||
+ | |||
+ | min_value=200 | ||
+ | max_value=400 | ||
+ | pendiente=60 | ||
+ | coeficiente_posición=15 | ||
+ | |||
+ | def decore_axes(axes, | ||
+ | axes.set_title(title, | ||
+ | axes.set_xlabel(xlabel, | ||
+ | axes.set_ylabel(ylabel, | ||
+ | axes.set_xlim(xmin=0) | ||
+ | axes.grid(visible=True, | ||
+ | axes.set_axisbelow(True) | ||
+ | axes.yaxis.set_major_locator(AutoLocator()) | ||
+ | axes.set_facecolor('# | ||
+ | |||
+ | max_w_size=1200 | ||
+ | x=np.linspace(0, | ||
+ | y=[] | ||
+ | |||
+ | for xi in x: | ||
+ | yi=xi*(pendiente/ | ||
+ | if (yi< | ||
+ | yi=min_value | ||
+ | elif (yi> | ||
+ | yi=max_value | ||
+ | |||
+ | y.append(yi) | ||
+ | |||
+ | min_corte_x=((min_value-coeficiente_posición)*100)/ | ||
+ | max_corte_x=((max_value-coeficiente_posición)*100)/ | ||
+ | figure=plt.figure(figsize=(8, | ||
+ | axes = figure.add_subplot(1, | ||
+ | |||
+ | axes.plot(x, | ||
+ | axes.scatter(min_corte_x, | ||
+ | axes.scatter(max_corte_x, | ||
+ | |||
+ | decore_axes(axes, | ||
+ | |||
+ | _=axes.set_xticks( [0, | ||
+ | </ | ||
===== Imágenes ===== | ===== Imágenes ===== | ||
Hay muchas opciones al respecto de las imágenes responsivas. La técnica consiste principalmente en usar una imagen u otra en función de: | Hay muchas opciones al respecto de las imágenes responsivas. La técnica consiste principalmente en usar una imagen u otra en función de: |