Estructura del elemento de menú y CSS

Esta página profundiza en un único elemento de menú — el HTML que renderiza y cómo estilizar solo ese elemento usando la caja CSS del elemento (editar el elemento → Avanzado → Hoja de estilo interna/CSS).

Esta caja estiliza solo el elemento que estás editando, y el CSS viaja con el elemento cuando lo duplicas. Para CSS en todo el menú, usa CSS personalizado para este menú — ve Estructura del menú y CSS.


La estructura de un elemento

Cada elemento es un único li que contiene un div.inner. Dentro de .inner, en orden:

<li class="item level-1 …" data-name="Shop">
  <div class="inner inner-level1">
    <span class="arrow"></span>            <!-- flecha del submenú (si la hay) -->
    <!-- <span class="cart_count">3</span> --> <!-- insignia del carrito con conteo (opcional) -->

    <!-- MEDIA — icono O imagen (si el elemento tiene una imagen, el icono no se renderiza) -->
    <span class="icon"><i class="ri-store-2-line"></i></span>
    <!-- o -->
    <div class="image-border">
      <span class="image-box"><span class="image"><img src="…"></span></span>
    </div>

    <!-- TEXTO -->
    <div class="info">
      <div class="flexcol">
        <span class="name">Shop</span>
        <div class="description">Examina todas las categorías</div>   <!-- solo si completaste la descripción -->
      </div>
    </div>
  </div>
</li>

Las partes que puedes apuntar

Parte Selector Notas
El elemento en sí (la fila) & El li. & es un atajo para “este elemento”.
Envoltorio de contenido .inner Envuelve todo dentro del elemento
Glifo de icono .icon i Remix Icon (ri-…)
Imagen .image img (caja: .image-border, .image-box, .image) Se muestra en lugar del icono cuando el elemento tiene una imagen
Título .name La etiqueta
Descripción .description Solo existe si completaste el campo de descripción
Columna de texto .info, .flexcol Contiene nombre + descripción
Flecha .arrow Flecha del submenú
Insignia del carrito .cart_count Solo para elementos del carrito con un conteo

Escribiendo CSS para un elemento

La caja acepta tres formas, combinables juntas. Nunca escribes #SF-… y nunca añades una etiqueta <style> — Navi+ automáticamente limita todo a este elemento.

1. & — este elemento (recomendado)

& significa la fila del elemento (el li), justo como & en Sass:

& { border: 1px solid #eee; border-radius: 12px; }
&:hover { background: #f8fafc; }

2. Selectores internos — partes dentro del elemento

Usa los nombres de clase de la tabla anterior:

.name { font-weight: 700; }
.description { font-size: 12px; opacity: .8; }
.icon i { font-size: 22px; color: #2563eb; }
.image img { border-radius: 10px; }

Un espacio después de & también significa “dentro del elemento”, así que & .name y .name son lo mismo. & escrito sin espacio (&:hover, &.active) estiliza la fila en sí.

3. Declaraciones simples — el atajo anterior

Escribir propiedades sin un selector las aplica a la fila del elemento:

color: red;
font-weight: 700;

Esto sigue funcionando (los menús antiguos dependen de esto), pero & es más claro — y las declaraciones simples no pueden usarse dentro de @media.


Responsivo con @media

@media funciona aquí. Dentro de @media debes usar un selector (es CSS estándar), así que usa & para el elemento en sí:

/* Relleno más pequeño y oculta la descripción en teléfonos */
@media (max-width: 768px) {
  & { padding: 8px; }
  .description { display: none; }
  .name { font-size: 13px; }
}

Para mostrar u ocultar un elemento por dispositivo, prefiere Mostrar en móvil/Mostrar en escritorio en el editor — no CSS. En Wix, @media basado en viewport podría no coincidir con la pantalla real; usa los ajustes Display allí.


Ejemplos

Convertir un elemento en una píldora/insignia:

& { background: #111; color: #fff; border-radius: 999px; padding: 6px 14px; }
.name { color: #fff; }

Resalta en hover:

&:hover { transform: translateY(-2px); transition: transform .15s; }
&:hover .name { color: #2563eb; }

Icono más grande y coloreado:

.icon i { font-size: 24px; color: #e11d48; }

Imagen redondeada con marco sutil:

.image img { border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,.12); }

Compacto en móvil:

& { padding: 12px; }
@media (max-width: 768px) {
  & { padding: 6px; }
  .description { display: none; }
}

Cosas buenas de saber

  • Sin #SF-…, sin etiqueta <style> — Navi+ limita el CSS solo a este elemento; nunca afecta a otros elementos.
  • El CSS viaja con el elemento cuando lo duplicas (es por elemento, reutilizable).
  • Si una propiedad se establece tanto aquí como en los ajustes visuales del elemento (Media box/Inner box color, border, shadow…), el ajuste visual gana — se aplica en línea. Limpia ese ajuste si quieres que tu CSS tome precedencia.
  • Usa el icono expandir (esquina superior derecha de la caja) para un editor más grande; presiona Esc o Hecho para cerrar.

Documentación de soporte — Navi+