B
blankito1998
Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
<li id="menu-item-12" class="home-icon menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-12"><a href="#"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M570.6 244C577.2 249.8 577.8 259.1 571.1 266.6C566.2 273.2 556 273.8 549.4 267.1L512 234.1V432C512 476.2 476.2 512 432 512H144C99.82 512 64 476.2 64 432V234.1L26.59 267.1C19.96 273.8 9.849 273.2 4.003 266.6C-1.844 259.1-1.212 249.8 5.414 244L277.4 4.002C283.5-1.334 292.5-1.334 298.6 4.002L570.6 244zM144 480H208V320C208 302.3 222.3 288 240 288H336C353.7 288 368 302.3 368 320V480H432C458.5 480 480 458.5 480 432V206.7L288 37.34L96 206.7V432C96 458.5 117.5 480 144 480zM240 480H336V320H240V480z"></path></svg> Home</a></li> podrias darle un stylo a esto, sobre todo a la foto que tiene porfa?Sí, claro. Aquí puedes ver un ejemplo de cómo se puede lograr esto:
HTML:<ul style="list-style: none; padding-left: 0;"> <li style="text-align: left;">Elemento 1</li> <li style="text-align: left;">Elemento 2</li> <li style="text-align: left;">Elemento 3</li> </ul>
En este caso,list-style: none;
elimina los puntos de la lista,padding-left: 0;
asegura que la lista está alineada a la izquierda ytext-align: left;
asegura que el texto dentro de los elementos de la lista están alineados a la izquierda.
Claro, puedes asignarle estilos personalizados a tu<li id="menu-item-12" class="home-icon menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-12"><a href="#"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Pro 6.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M570.6 244C577.2 249.8 577.8 259.1 571.1 266.6C566.2 273.2 556 273.8 549.4 267.1L512 234.1V432C512 476.2 476.2 512 432 512H144C99.82 512 64 476.2 64 432V234.1L26.59 267.1C19.96 273.8 9.849 273.2 4.003 266.6C-1.844 259.1-1.212 249.8 5.414 244L277.4 4.002C283.5-1.334 292.5-1.334 298.6 4.002L570.6 244zM144 480H208V320C208 302.3 222.3 288 240 288H336C353.7 288 368 302.3 368 320V480H432C458.5 480 480 458.5 480 432V206.7L288 37.34L96 206.7V432C96 458.5 117.5 480 144 480zM240 480H336V320H240V480z"></path></svg> Home</a></li> podrias darle un stylo a esto, sobre todo a la foto que tiene porfa?
<li>
y <svg>
de la siguiente manera:#menu-item-12 {
list-style: none;
text-align: left;
/* define more styles as needed */
}
#menu-item-12 svg {
width: 25px; /* you can adjust size as per your needs */
height: 25px;
fill: #000; /* this is the color of the icon, change as needed */
}
<svg>
(la imagen) cambie de tamaño y color. Modifica los valores según necesites.<li>
asociado se alineará a la izquierda y no mostrará ningún punto (a causa de list-style: none
).y poque no puedo cambiar el color de las letras??Claro, puedes asignarle estilos personalizados a tu<li>
y<svg>
de la siguiente manera:
CSS:#menu-item-12 { list-style: none; text-align: left; /* define more styles as needed */ } #menu-item-12 svg { width: 25px; /* you can adjust size as per your needs */ height: 25px; fill: #000; /* this is the color of the icon, change as needed */ }
Este código CSS hará que el<svg>
(la imagen) cambie de tamaño y color. Modifica los valores según necesites.
Además, el<li>
asociado se alineará a la izquierda y no mostrará ningún punto (a causa delist-style: none
).
Para cambiar el color del texto, necesitas usar la propiedady poque no puedo cambiar el color de las letras??
color
en tu CSS. El texto en tu código se encuentra dentro de la etiqueta <a>
, entonces puedes usar el siguiente estilo:#menu-item-12 a {
color: #000; /* Cambia este valor al color que prefieras, por ejemplo: rojo */
}
<a>
a negro. Cambia #000
al código de color que prefieras.podrias hacer que las <a> que se encuentren dentro de este menu-main-menu tengo un class?Eso no funciona porque estás intentando concatenar una cadena de texto con un objeto del DOM (clone). También, estás tratando de añadir nodos del DOM con un string HTML. Entonces, en lugar de eso, deberías crear un nuevo div, asignarle la clase, añadir el clon como su hijo, y luego añadir ese div al cuerpo del documento. Aquí te muestro cómo:
JavaScript:var menu = document.getElementById('menu-main-menu'); // Crea una copia del elemento var clone = menu.cloneNode(true); // Cambia la clase de la copia clone.className = 'nueva-clase'; clone.id = 'nueva-clase'; // Recorre cada uno de los hijos del elemento clonado y cambia su clase for (var i = 0; i < clone.children.length; i++) { clone.children[i].className = 'nueva-clase-hijos'; clone.children[i].id = 'nueva-clase-hijos'; } // Crea un nuevo div y le asigna la clase 'cloupert' var newDiv = document.createElement('div'); newDiv.className = 'cloupert'; // Añade el clon al nuevo div newDiv.appendChild(clone); // Añade el nuevo div al cuerpo del documento document.body.appendChild(newDiv);
Intenta con este código, debería funcionalmente igual a lo que estabas intentando hacer.
Por supuesto, puedes seleccionar todos los elementospodrias hacer que las <a> que se encuentren dentro de este menu-main-menu tengo un class?
<a>
que están dentro de 'menu-main-menu'
y asignarles una clase de esta manera:var menu = document.getElementById('menu-main-menu');
var anchors = menu.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++) {
anchors[i].className = 'tu-clase'; // Reemplaza 'tu-clase' con el nombre de la clase que deseas agregar
}
'tu-clase'
. Sólo reemplaza 'tu-clase'
con el nombre de la clase que deseas agregar.podrias darme el codigo completo del script porfaPor supuesto, puedes seleccionar todos los elementos<a>
que están dentro de'menu-main-menu'
y asignarles una clase de esta manera:
JavaScript:var menu = document.getElementById('menu-main-menu'); var anchors = menu.getElementsByTagName('a'); for (var i = 0; i < anchors.length; i++) { anchors[i].className = 'tu-clase'; // Reemplaza 'tu-clase' con el nombre de la clase que deseas agregar }
Este código recorre cada enlace en tu menú y les asigna la clase'tu-clase'
. Sólo reemplaza'tu-clase'
con el nombre de la clase que deseas agregar.
Por supuesto. El script completo, incluyendo tanto la clonación del menú como la adición de una clase a los enlaces, luciría más o menos así:podrias darme el codigo completo del script porfa
// Selecciona el menú original
var menu = document.getElementById('menu-main-menu');
// Clona el menú
var clone = menu.cloneNode(true);
// Cambia el id y la clase del menú clonado
clone.className = 'nueva-clase';
clone.id = 'nueva-clase';
// Selecciona todos los enlaces en el menú clonado
var anchors = clone.getElementsByTagName('a');
// Agrega una clase a cada enlace
for (var i = 0; i < anchors.length; i++) {
anchors[i].className = 'tu-clase'; // Cambia 'tu-clase' por el nombre de la clase que quieras
}
// Crea un nuevo div y le asigna la clase 'cloupert'
var newDiv = document.createElement('div');
newDiv.className = 'cloupert';
// Añade el menú clonado al nuevo div
newDiv.appendChild(clone);
// Añade el nuevo div al cuerpo del documento
document.body.appendChild(newDiv);
y que hiciste con el class del li no lo veo??Por supuesto. El script completo, incluyendo tanto la clonación del menú como la adición de una clase a los enlaces, luciría más o menos así:
JavaScript:// Selecciona el menú original var menu = document.getElementById('menu-main-menu'); // Clona el menú var clone = menu.cloneNode(true); // Cambia el id y la clase del menú clonado clone.className = 'nueva-clase'; clone.id = 'nueva-clase'; // Selecciona todos los enlaces en el menú clonado var anchors = clone.getElementsByTagName('a'); // Agrega una clase a cada enlace for (var i = 0; i < anchors.length; i++) { anchors[i].className = 'tu-clase'; // Cambia 'tu-clase' por el nombre de la clase que quieras } // Crea un nuevo div y le asigna la clase 'cloupert' var newDiv = document.createElement('div'); newDiv.className = 'cloupert'; // Añade el menú clonado al nuevo div newDiv.appendChild(clone); // Añade el nuevo div al cuerpo del documento document.body.appendChild(newDiv);
Este script hace lo siguiente:
1. Clona 'menu-main-menu'
2. Cambia el id y la clase del menú clonado
3. Agrega la clase 'tu-clase' a todos los enlaces del menú clonado
4. Crea un nuevo div y añade el menú clonado a este
5. Añade el nuevo div al cuerpo del documento
Solo asegúrate de reemplazar 'tu-clase' y 'nueva-clase' con los nombres correctos de las clases que deseas utilizar.
Mis disculpas por la confusión anterior. En el ejemplo no se modificaron las clases de los elementosy que hiciste con el class del li no lo veo??
<li>
. Si quieres asignar una clase nueva a los <li>
dentro del menú clonado, puedes hacerlo así:// Selecciona el menú original
var menu = document.getElementById('menu-main-menu');
// Clona el menú
var clone = menu.cloneNode(true);
// Cambia el id y la clase del menú clonado
clone.className = 'nueva-clase';
clone.id = 'nueva-clase';
// Selecciona todos los elementos li en el menú clonado
var listItems = clone.getElementsByTagName('li');
// Agrega una nueva clase a cada elemento li
for (var j = 0; j < listItems.length; j++) {
listItems[j].className = 'nueva-clase-li';
}
// Selecciona todos los enlaces en el menú clonado
var anchors = clone.getElementsByTagName('a');
// Agrega una clase a cada enlace
for (var i = 0; i < anchors.length; i++) {
anchors[i].className = 'tu-clase';
}
// Crea un nuevo div y le asigna la clase 'cloupert'
var newDiv = document.createElement('div');
newDiv.className = 'cloupert';
// Añade el menú clonado al nuevo div
newDiv.appendChild(clone);
// Añade el nuevo div al cuerpo del documento
document.body.appendChild(newDiv);
<li>
en el menú clonado y les asigna la clase 'nueva-clase-li'
. Solo asegúrate de reemplazar 'tu-clase', 'nueva-clase' y 'nueva-clase-li' con los nombres de las clases que deseas usar.$(".sub-menu").click(function() {Mis disculpas por la confusión anterior. En el ejemplo no se modificaron las clases de los elementos<li>
. Si quieres asignar una clase nueva a los<li>
dentro del menú clonado, puedes hacerlo así:
JavaScript:// Selecciona el menú original var menu = document.getElementById('menu-main-menu'); // Clona el menú var clone = menu.cloneNode(true); // Cambia el id y la clase del menú clonado clone.className = 'nueva-clase'; clone.id = 'nueva-clase'; // Selecciona todos los elementos li en el menú clonado var listItems = clone.getElementsByTagName('li'); // Agrega una nueva clase a cada elemento li for (var j = 0; j < listItems.length; j++) { listItems[j].className = 'nueva-clase-li'; } // Selecciona todos los enlaces en el menú clonado var anchors = clone.getElementsByTagName('a'); // Agrega una clase a cada enlace for (var i = 0; i < anchors.length; i++) { anchors[i].className = 'tu-clase'; } // Crea un nuevo div y le asigna la clase 'cloupert' var newDiv = document.createElement('div'); newDiv.className = 'cloupert'; // Añade el menú clonado al nuevo div newDiv.appendChild(clone); // Añade el nuevo div al cuerpo del documento document.body.appendChild(newDiv);
Este script ahora además recorre cada elemento<li>
en el menú clonado y les asigna la clase'nueva-clase-li'
. Solo asegúrate de reemplazar 'tu-clase', 'nueva-clase' y 'nueva-clase-li' con los nombres de las clases que deseas usar.
Tu código no está funcionando debido a que los nuevos elementos ".sub-menu" son agregados al DOM después de que se ejecuta el código jQuery. Este código sólo se aplica a los elementos que ya existen en la página cuando se ejecuta.$(".sub-menu").click(function() {
alert("hola");
});
porque no funciona con los nuevos sub-menu encontrados??
$(document).on('click', '.sub-menu', function() {
alert('hola');
});
sigue sin funcionarmeTu código no está funcionando debido a que los nuevos elementos ".sub-menu" son agregados al DOM después de que se ejecuta el código jQuery. Este código sólo se aplica a los elementos que ya existen en la página cuando se ejecuta.
Una forma de que este código funcione para los nuevos elementos es usar la función "on" de jQuery, la cual permite aplicar eventos a elementos futuros. Aquí un ejemplo:
JavaScript:$(document).on('click', '.sub-menu', function() { alert('hola'); });
Al hacer esto, estás diciendo "cuando hago clic en cualquier elemento con la clase .sub-menu que es un descendiente directo del documento (tanto ahora como en el futuro), ejecuta esta función".
Lo siento por las dificultades que estás enfrentando. Si el evento todavía no se dispara para los nuevos elementos .sub-menu, puede haber algunas posibles razones:sigue sin funcionarme
Lo siento por las dificultades que estás enfrentando. Si el evento todavía no se dispara para los nuevos elementos .sub-menu, puede haber algunas posibles razones:
1. Los elementos .sub-menu se están creando después de que este código se ejecuta: Asegúrate de que tu código jQuery se está ejecutando después de que se añaden los nuevos elementos .sub-menu al DOM.
2. Los selectores no están coincidiendo: Asegúrate de que los elementos .sub-menu realmente tienen la clase "sub-menu". Revisa si existen errores ortográficos o de otro tipo en las clases.
3. Problema de propagación de eventos: Si los elementos .sub-menu están siendo agregados dentro de otros elementos que tienen eventos click registrados, puede ser que estos eventos estén impidiendo la propagación del evento al .sub-menu.
Si nada de lo anterior soluciona el problema, por favor proporciona más información sobre tu código y cómo estás agregando los nuevos elementos .sub-menu. Esto ayudará a identificar el problema más fácilmente.
Claro, puedes comprobar si un elemento con la clase "nueva-clase-hijos" tiene un elementopuedes hacer que esto funcione solo con los class='nueva-clase-hijos' que tengan un ul??
$(document).on('click', 'nueva-clase-hijos', function() {
alert('hola');
});
<ul>
hijo de la siguiente manera:$(document).on('click', '.nueva-clase-hijos', function() {
if($(this).find('ul').length > 0) {
alert('hola');
}
});
$(this).find('ul').length > 0
comprueba si el elemento que se ha hecho clic tiene al menos un elemento <ul>
hijo. Si es así, entonces se ejecutará el código dentro del condicional. Por favor, ten en cuenta que necesitas añadir un punto antes de la clase, es decir, .nueva-clase-hijos
en lugar de nueva-clase-hijos
.#nueva-clase ul li{display:block;}Claro, puedes comprobar si un elemento con la clase "nueva-clase-hijos" tiene un elemento<ul>
hijo de la siguiente manera:
JavaScript:$(document).on('click', '.nueva-clase-hijos', function() { if($(this).find('ul').length > 0) { alert('hola'); } });
En este código,$(this).find('ul').length > 0
comprueba si el elemento que se ha hecho clic tiene al menos un elemento<ul>
hijo. Si es así, entonces se ejecutará el código dentro del condicional. Por favor, ten en cuenta que necesitas añadir un punto antes de la clase, es decir,.nueva-clase-hijos
en lugar denueva-clase-hijos
.
Puedes modificar los estilos de los elementos utilizando JavaScript de esta manera:#nueva-clase ul li{display:block;}
como funcionaria esto en js?
var elements = document.querySelectorAll("#nueva-clase ul li");
for (var i = 0; i < elements.length; i++) {
elements[i].style.display = "block";
}
ahora podrias agregarle un else para que sea display:none; cuando este visible?Puedes modificar los estilos de los elementos utilizando JavaScript de esta manera:
JavaScript:var elements = document.querySelectorAll("#nueva-clase ul li"); for (var i = 0; i < elements.length; i++) { elements[i].style.display = "block"; }
Este código selecciona todos los elementos que coinciden con el selector "#nueva-clase ul li" y establece su propiedad de visualización en "block".
Por supuesto, puedes agregar una condición para revisar el estado del elemento y con base en eso cambiar su visibilidad utilizando JavaScript de la manera siguiente:ahora podrias agregarle un else para que sea display:none; cuando este visible?
var elements = document.querySelectorAll("#nueva-clase ul li");
for (var i = 0; i < elements.length; i++) {
if (elements[i].style.display !== "none") {
elements[i].style.display = "none";
} else {
elements[i].style.display = "block";
}
}
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?