Definición de criterios de construcción de iconos para seguir escalando el sistema.
Para resaltar una acción principal y promover la interacción del usuario de manera rápida y fácil dentro de un entorno digital, los botones FAB (Floating Action Button / Botón de Acción Flotante) se utilizan considerando los siguientes características:
Versión de botón FAB oscuro con ícono para la versión clara de la interfaz. Lo importante es el contraste entre fondo de la página y el color del contenedor a utilizar. En este caso utilizamos el azul principal.
<button class="fab-icono">
<img class="icono-lineal" src="iconos/chat-fab-lineal.svg" alt=""
width="32"
height="32">
<img class="icono-lleno" src="iconos/chat-fab-lleno.svg" alt=""
width="32"
height="32">
</button>
button.fab-icono {
align-items: center;
background: #024588;
border-radius: 30px;
border: 3px solid transparent;
box-shadow: 0px 3px 16px rgba(16, 15, 15, 0.2);
cursor: pointer;
display: flex;
height: 60px;
justify-content: center;
mix-blend-mode: normal;
padding: 9px;
width: 60px;
}
button.fab-icono .icono-lineal:hover {
display: block;
}
button.fab-icono .icono-lleno {
display: none;
}
button.fab-icono:hover {
background-color: #1669BC;
}
button.fab-icono:active{
background-color: #1669BC;
border: 3px solid #024588;
}
button.fab-icono:active .icono-lineal {
display: none;
}
button.fab-icono:active .icono-lleno {
display: block;
}
Para casos donde el ícono no queda evidencia su comprensión inmediata, se puede complementar la acción del ícono con una palabra descriptiva.
<button class="fab-texto-icono">
Etiqueta
<img class="icono-lineal" src="iconos/chat-fab-lineal.svg" alt=""
width="32"
height="32">
<img class="icono-lleno" src="iconos/chat-fab-lleno.svg" alt=""
width="32"
height="32">
</button>
button.fab-texto-icono {
align-items: center;
background: #024588;
border-radius: 30px;
border: 3px solid transparent;
box-shadow: 0px 3px 16px rgba(16, 15, 15, 0.2);
color: #FFFFFF;
cursor: pointer;
display: flex;
font-family: 'Montserrat';
font-size: 16px;
font-style: normal;
font-weight: 500;
gap: 10px;
height: 60px;
justify-content: center;
line-height: 20px;
mix-blend-mode: normal;
padding: 9px 28px;
text-align: center;
}
button.fab-texto-icono .icono-lineal:hover {
display: block;
}
button.fab-texto-icono .icono-lleno {
display: none;
}
button.fab-texto-icono:hover {
background-color: #1669BC;
}
button.fab-texto-icono:active{
background-color: #1669BC;
border: 3px solid #024588;
}
button.fab-texto-icono:active .icono-lineal {
display: none;
}
button.fab-texto-icono:active .icono-lleno {
display: block;
}
Versión de botón FAB con ícono para la versión oscura de la interfaz o también para una situación con menor contraste necesario para el FAB.
<button class="fab-icono-secundario">
<img class="icono-lineal" src="iconos/bot-lineal.svg" alt=""
width="32"
height="32">
<img class="icono-lleno" src="iconos/bot-lineal.svg" alt=""
width="32"
height="32">
</button>
button.fab-icono-secundario {
align-items: center;
background: #FFFFFF;
border-radius: 30px;
border: 3px solid transparent;
box-shadow: 0px 3px 16px rgba(16, 15, 15, 0.2);
cursor: pointer;
display: flex;
height: 60px;
justify-content: center;
mix-blend-mode: normal;
padding: 9px;
width: 60px;
}
button.fab-icono-secundario .icono-lineal:hover
{
display: block;
}
button.fab-icono-secundario .icono-lleno {
display: none;
}
button.fab-icono-secundario:hover {
background-color: #EBF2F9;
}
button.fab-icono-secundario:active{
background: #EBF2F9;
border: 3px solid #024588;
}
button.fab-icono-secundario:active .icono-lineal
{
display: none;
}
button.fab-icono-secundario:active .icono-lleno
{
display: block;
}
Este menú desplegable permite contener acciones relevantes para el usuario de fácil acceso. Estas acciones desencadenaran funciones relevantes para el usuario que la página y/o la plataforma permita.
<div class="dropdown">
<label id="fab-secundario-label-1" class="fab-icono-secundario-menu"
for="fab-toggle" onclick="activarBoton1()">
<img class="icono-lineal" width="32" height="32"
src="iconos/anadir_lineal.svg"/>
<img class="icono-lleno" src="anadir_lineal.svg" alt="" width="32"
height="32"/>
</label>
<input type="checkbox" class="fab-checkbox" id="fab-toggle">
<ul class="fab-menu" style="top:68px;">
<li>Ejemplo 1
</li>
<li>Ejemplo 2
</li>
<li>Ejemplo 3
</li>
</ul>
</input>
</div>
label.fab-icono-secundario-menu {
align-items: center;
background: #FFFFFF;
border-radius: 30px;
border: 3px solid transparent;
box-shadow: 0px 3px 16px rgba(16, 15, 15, 0.2);
cursor: pointer;
display: flex;
height: 60px;
justify-content: center;
mix-blend-mode: normal;
padding: 9px;
width: 60px;
}
label.fab-icono-secundario-menu .icono-lineal
{
display: block;
}
label.fab-icono-secundario-menu .icono-lleno {
display: none;
}
label.fab-icono-secundario-menu:hover {
background-color: #EBF2F9;
}
label.fab-icono-secundario-menu:active{
background: #EBF2F9;
border: 3px solid #024588;
}
label.fab-icono-secundario-menu:active .icono-lineal
{
display: none;
}
label.fab-icono-secundario-menu:active .icono-lleno
{
display: block;
}
input.fab-checkbox {
position: absolute;
opacity: 0;
cursor: pointer;
}
.dropdown {
position: relative;
display: inline-block;
}
.fab-menu {
display: none;
position: absolute;
top: 58px;
left: 0;
margin: 0;
padding: 0;
background-color: #FFFFFF;
width: 100%;
min-width: 200px;
max-width: 240px;
filter: drop-shadow(0px 3px 16px rgba(16, 15, 15, 0.2));
border-radius: 10px;
}
.fab-menu li:first-child {
border-radius: 10px 10px 0 0;
}
.fab-menu li:last-child {
border-radius: 0 0 10px 10px;
}
.fab-menu li {
padding: 9px 20px;
text-decoration: none;
display: flex;
border-radius: 0 0 0 0 !important;
justify-content: flex-start;
align-items: center;
gap: 10px;
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-size: 16px;
line-height: 26px;
color: #024588;
cursor: pointer;
}
.fab-menu li:hover {
background-color: #EBF2F9;
}
.fab-menu li:first-child:hover {
background-color: #EBF2F9;
border-radius: 10px 10px 0 0 !important;
}
.fab-menu li:last-child:hover {
background-color: #EBF2F9;
border-radius: 0 0 10px 10px !important;
}
.fab-menu li:active {
background-color: #D7E5F4;
}
.fab-menu li:first-child:active {
background-color: #D7E5F4;
border-radius: 10px 10px 0 0 !important;
}
.fab-menu li:last-child:active {
background-color: #D7E5F4;
border-radius: 0 0 10px 10px !important;
}
.fab-checkbox:checked+.fab-menu {
display: block;
}
.fab-secundario-activo {
background: #EBF2F9;
border: 3px solid #024588;
}
function activarBoton1() {
const miBoton = document.getElementById("fab-secundario-label-1");
miBoton.classList.toggle("fab-secundario-activo");
}
Ya sea hacia arriba o hacia abajo dependiendo de la ubicación del FAB en la pantalla, este menú desplegable permite contener acciones relevantes para el usuario de fácil acceso. Estas acciones desencadenaran funciones relevantes para el usuario que la plataforma otorga.
<div class="dropdown">
<label id="fab-secundario-label-1" class="fab-icono-secundario-menu"
for="fab-toggle" onclick="activarBoton1()">
<img class="icono-lineal" width="32" height="32"
src="iconos/anadir_lineal.svg"/>
<img class="icono-lleno" src="anadir_lineal.svg" alt="" width="32"
height="32"/>
Nuevo
</label>
<input type="checkbox" class="fab-checkbox" id="fab-toggle">
<ul class="fab-menu" style="top:68px;">
<li>Ejemplo 1
</li>
<li>Ejemplo 2
</li>
<li>Ejemplo 3
</li>
</ul>
</input>
</div>
label.fab-secundario-menu {
align-items: center;
background: #FFFFFF;
border-radius: 30px;
border: 3px solid transparent;
box-shadow: 0px 3px 16px rgba(16, 15, 15, 0.2);
cursor: pointer;
display: flex;
height: 60px;
justify-content: center;
mix-blend-mode: normal;
padding: 9px;
width: 60px;
}
label.fab-secundario-menu .icono-lineal
{
display: block;
}
label.fab-secundario-menu .icono-lleno {
display: none;
}
label.fab-secundario-menu:hover {
background-color: #EBF2F9;
}
label.fab-secundario-menu:active{
background: #EBF2F9;
border: 3px solid #024588;
}
label.fab-secundario-menu:active .icono-lineal
{
display: none;
}
label.fab-secundario-menu:active .icono-lleno
{
display: block;
}
input.fab-checkbox {
position: absolute;
opacity: 0;
cursor: pointer;
}
.dropdown {
position: relative;
display: inline-block;
}
.fab-menu {
display: none;
position: absolute;
top: 58px;
left: 0;
margin: 0;
padding: 0;
background-color: #FFFFFF;
width: 100%;
min-width: 200px;
max-width: 240px;
filter: drop-shadow(0px 3px 16px rgba(16, 15, 15, 0.2));
border-radius: 10px;
}
.fab-menu li:first-child {
border-radius: 10px 10px 0 0;
}
.fab-menu li:last-child {
border-radius: 0 0 10px 10px;
}
.fab-menu li {
padding: 9px 20px;
text-decoration: none;
display: flex;
border-radius: 0 0 0 0 !important;
justify-content: flex-start;
align-items: center;
gap: 10px;
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-size: 16px;
line-height: 26px;
color: #024588;
cursor: pointer;
}
.fab-menu li:hover {
background-color: #EBF2F9;
}
.fab-menu li:first-child:hover {
background-color: #EBF2F9;
border-radius: 10px 10px 0 0 !important;
}
.fab-menu li:last-child:hover {
background-color: #EBF2F9;
border-radius: 0 0 10px 10px !important;
}
.fab-menu li:active {
background-color: #D7E5F4;
}
.fab-menu li:first-child:active {
background-color: #D7E5F4;
border-radius: 10px 10px 0 0 !important;
}
.fab-menu li:last-child:active {
background-color: #D7E5F4;
border-radius: 0 0 10px 10px !important;
}
.fab-checkbox:checked+.fab-menu {
display: block;
}
.fab-secundario-activo {
background: #EBF2F9;
border: 3px solid #024588;
}
function activarBoton1() {
const miBoton = document.getElementById("fab-secundario-label-1");
miBoton.classList.toggle("fab-secundario-activo");
}