Foros del Web » Creando para Internet » CSS »

Tachado sin enlace

Estas en el tema de Tachado sin enlace en el foro de CSS en Foros del Web. Hola, mi consulta es la siguiente. Tengo texto en una lista <ul><li>......... La mayoría del texto está puesto en enlaces, mi idea es que con ...
  #1 (permalink)  
Antiguo 18/05/2012, 18:35
Avatar de Agedjus  
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Tachado sin enlace

Hola, mi consulta es la siguiente.

Tengo texto en una lista <ul><li>.........
La mayoría del texto está puesto en enlaces, mi idea es que con css se tache el texto si no hay enlace y si hay enlace no se tache.

El problema que tengo es que se tachan tengan o no tengan enlace. He intentado usar !important pero no consigo dar con la solución...

Esto es lo que llevo probado:

HTML:
Código HTML:
<ul>
       <li><a href="enlace1.html" title="">Enlace 1</a></li>
       <li><a href="enlace2.html" title="">Enlace 2</a></li>
       <li><a href="enlace3.html" title="">Enlace 3</a></li>
        .
        .
        .
</ul> 
CSS:
Código:
li{
	text-decoration:line-through
}
li a{
	text-decoration:none
}
Gracias
  #2 (permalink)  
Antiguo 18/05/2012, 18:59
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Tachado sin enlace

podes añadir un span?
Código HTML:
Ver original
  1. <ul>
  2.        <li><a href="enlace1.html" title="">Enlace 1</a></li>
  3.        <li><a href="enlace2.html" title="">Enlace 2</a></li>
  4.        <li><a href="enlace3.html" title="">Enlace 3</a></li>
  5.        <li><span>sin enlace</span></li>
  6.        <li><span>sin enlace</span></li>
  7.        <li><span>sin enlace</span></li>    
  8. </ul>

Código CSS:
Ver original
  1. ul li span{
  2.     text-decoration:line-through;
  3. }
  4. ul li a{
  5.     text-decoration:none;
  6. }

  #3 (permalink)  
Antiguo 18/05/2012, 19:04
Avatar de Agedjus  
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Tachado sin enlace

Cita:
Iniciado por cristian_cena Ver Mensaje
podes añadir un span?
Sí, de hecho podría hacerlo con span, p, div o una etiqueta que me pueda inventar como <t>.

Mi pregunta es si es posible hacerlo sin tocar el HTML... para no tener que cargarlo más...

Gracias.
  #4 (permalink)  
Antiguo 18/05/2012, 19:40
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Tachado sin enlace

Se suponía que evitabas cargar el html, además inventar etiquetas no tiene sentido.

:not() es css3 con lo que esto implica. Desconozco de la existencia de selectores "ascendentes" o similar para emular esto con css2, ojalá alguien nos heche luz a ambos. Probá con esto:
Código HTML:
Ver original
  1. <ul>
  2.        <li><a href="enlace1.html" title="">Enlace 1</a></li>
  3.        <li><a href="enlace2.html" title="">Enlace 2</a></li>
  4.        <li>sin enlace</li>
  5.        <li>sin enlace</li>    
  6. </ul>
Código CSS:
Ver original
  1. ul li *:not(a){
  2.     text-decoration:line-through;
  3. }
__________________________________________________ ________

No hice la prueba, pero tal vez con este otro método puedas lograr mas compatibilidad:
Código HTML:
Ver original
  1. <ul id="lista">
  2.        <li><a href="enlace1.html" title="">Enlace 1</a></li>
  3.        <li><a href="enlace2.html" title="">Enlace 2</a></li>
  4.        <li><a href="enlace3.html" title="">Enlace 3</a></li>
  5.        <li>sin enlace</li>
  6.        <li>sin enlace</li>
  7.        <li>sin enlace</li>    
  8. </ul>
Código CSS:
Ver original
  1. #lista li {
  2. text-decoration: line-through;
  3. }
Usamos la librería jquery de javascript que nos permite movernos por el dom con comodidad:
Código Javascript:
Ver original
  1. $(function(){
  2.     $("#lista").find("li").find("a").parent().css({"text-decoration" : "none"});
  3. });


Saludos, espero te sirva
  #5 (permalink)  
Antiguo 19/05/2012, 04:06
Avatar de Agedjus  
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Tachado sin enlace

La primera forma con *:not(a) no me a llegado a funcionar, la segunda forma si, perfecta además.

Si realmente no se puede hacer en css2, esta sería la forma con lo que hacerlo.

Gracias de verdad!!
  #6 (permalink)  
Antiguo 19/05/2012, 04:45
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Tachado sin enlace

A decir verdad quedé inquieto con esto de la "selección ascendente", googleando llegué a este artículo.
Tenes razón, la 1ra forma no funciona, no tenemos forma de seleccionar el "nodo de texto" del li sino que seleccionamos el "li" o el "li>a" y necesitariamos volver hacia atras en la jerarquia, del hijo al padre y creo que css3 no incorpora esto todavía.

Me alegro que te haya servido, saludos.
  #7 (permalink)  
Antiguo 19/05/2012, 07:15
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 17 años, 5 meses
Puntos: 539
Respuesta: Tachado sin enlace

@Cristian
Recibido el t

@Agedjus
En estos casos es conveniente consultar la documentación oficial.
Cita:
text-decoration
Esta propiedad describe las decoraciones que se agregan al texto de un elemento. Si la propiedad es especificada para un elemento a nivel de bloque, afecta a todos los descendientes a nivel de línea del elemento. Si es especificada para (o afecta) un elemento a nivel de línea, afecta a todas las cajas generadas por el elemento. Si el elemento no tiene ningún contenido o ningún contenido textual (ej., el elemento IMG en HTML), las aplicaciones del usuario deben ignorar esta propiedad.
Y continúa:
Cita:
El(los) color(es) requerido por la decoración del texto deberían derivar del valor de la propiedad 'color'.

Esta propiedad no es heredada, pero las cajas descendientes de una caja de bloque deberían tener en su formato la misma decoración (ej., deberían estar todas subrayadas). El color de las decoraciones debería permanecer igual aunque los elementos descendientes tuvieran diferente valores de 'color'.
T-decoration es una propiedad que afecta no a la caja en sí, sino a las cajas (generadas o contenidas) dentro de ella. A diferencia de | border | (por ejemplo).

Así que en su caso, al declarar t-decoration a un elemento de bloque (li) todo lo que declare para sus descendientes de línea (a) se sumará a la decoración declarada en li. Esto es, sus enlaces tendrán una doble decoración: tachado y no-subrayado (por defecto los enlaces tienen t-decoration: underline)

Así que, o utiliza toda una librería js o el contenido del | li | que no sea enlace lo etiqueta para poder declarar el t-decoration no al selector | li | sino a su contenido:
Código CSS:
Ver original
  1. li a {}
  2. li span {}
Porque con esta propiedad, para los elementos de línea es lo mismo li * {} que li {}

@Cristian
El selector de ascendente está todavía demasiado verde. Tal es así que aún no está definida ni la grafía a utilizar ni la sintaxis.
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++
  #8 (permalink)  
Antiguo 19/05/2012, 16:39
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Tachado sin enlace

Gracias kseso.
Tal cual, cargar toda una librería pudiendo pudiendo añadir unos span es absurdo.
Reescribí lo anterior con javascript puro, aunque se podría pulir un poco más:
  • damos: text-decoration: line-through; a todos los "ul.lista li"
  • cambiamos el valor de text-decoration de los <li> padres de enlaces cuyo contenedor superior en 2 niveles (o sea el ul) tenga la clase "lista".

Código HTML:
Ver original
  1. <ul class="lista">
  2.        <li><a href="enlace1.html">Enlace 1</a></li>
  3.        <li><a href="enlace2.html">Enlace 2</a></li>
  4.        <li>sin enlace</li>
  5.        <li>sin enlace</li>
  6. </ul>
Código CSS:
Ver original
  1. .lista li{
  2.     text-decoration: line-through;
  3. }
Código Javascript:
Ver original
  1. window.onload = function(){
  2.     var a = document.links;                   // seleccionamos todos los enlaces del documento ...
  3.     for(var i = 0; i < a.length; i++){        // ... y los recorremos
  4.         var ul = a[i].parentNode.parentNode;  // seleccionamos el tag ul
  5.         if(ul.className == "lista"){          // si tiene la clase "lista" entonces...
  6.             var li = a[i].parentNode;         // seleccionamos el li
  7.             li.style.textDecoration = "none"; // ... quitamos el line-trough del li
  8.         }
  9.     }            
  10. }

Saludos.
  #9 (permalink)  
Antiguo 20/05/2012, 07:49
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: Tachado sin enlace

Hola todos.

¿Y tiene que ser "tachado", Agedjus?.
¿Algo así no te sirve?

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">

<style type="text/css">

li {font: 18px/120% "arial unicode ms", quivira, "ms mincho", 
"kalos greek", "dejavu sans", symbola, "ms ui gothic", "ms gothic", 
"ms pgothic", sans-serif; background-color: white; cursor: not-allowed; }

li:after {content:" ☒"; color: red; font-weight: bold; }

li > a {background-color: white; position: absolute; }

li > a:after{content:" ☑"; color: green; font-weight: bold; }

</style>
</head>
<body>

<ul>
       <li><a href="enlace1.html" title="">Enlace 1</a></li>
       <li><a href="enlace2.html" title="">Enlace 2</a></li>
       <li>sin enlace</li>
       <li>sin enlace</li>    
</ul> 

</body>
</html>
Aquí el problema es que text-decoration: none no está funcionando. Si lo ponemos al final debería limpiar todos los estilos anteriores. O si al menos existiera text-decoration: default...
  #10 (permalink)  
Antiguo 20/05/2012, 14:33
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 5 meses
Puntos: 1012
Respuesta: Tachado sin enlace

Cita:
Iniciado por cristian_cena Ver Mensaje
Reescribí lo anterior con javascript puro, aunque se podría pulir un poco más:
no lo he probado pero mentalmente funciona
Cita:
for (var i = 0, uls = document.querySelectorAll('.lista'); i < uls.length; i++) {
for (var j = 0, lis = uls[i].getElementsByTagName('li'); j < lis.length; j++) {
if (lis[j].childNodes[0].nodeType != 3) {
lis[j].style.textDecoration = 'none';
}
}
}
furoya +1
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #11 (permalink)  
Antiguo 20/05/2012, 15:18
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 17 años, 5 meses
Puntos: 539
Respuesta: Tachado sin enlace

Creo que Furoya no comprendió que el tachado se refiere a text-decoration: line-through; para el contenido de los li´s que no sean enlaces (≠<a href="#">...) y los que sí sean enlaces que no aplique text-decoration: line-through; y sí text-decoration: underline;

Y como no quiere/puede añadir una etiqueta más en los elementos que no son enlaces, pues no se puede lograr con sólo css por lo comentado en #7.


ah! vale! Que leí mal. Que es otra forma de diferenciarlos xD
__________________
Por una web con mucho estilo
+++ CUENTA ABANDONADA. ¿la quieres? +++
  #12 (permalink)  
Antiguo 20/05/2012, 20:23
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: Tachado sin enlace

Cita:
Iniciado por IsaBelM
uls = document.querySelectorAll('.lista');
...
¿Eso existe??!!
No hay caso. Voy a tener que aprender javascript.

Cita:
Iniciado por IsaBelM
furoya +1
...
¡Gracias!

Cita:
Iniciado por kseso?
ah! vale! Que leí mal. Que es otra forma de diferenciarlos xD
*
(Otro que escribe más rápido de lo que lee. Ahora somos .)


Quería agregar algo. Si no hubieses puesto el escript, cristian_cena, no me hubiese animado a postear esa "alternativa". Porque Agedjus no preguntó cómo podía diferenciar los ítems que no tenían links, sino que arremetió contra los line-through; y primero había que resolverle eso.
De cualquier forma, quizá solamente le sirva el tachado de texto, y no la marca de tachado al final.
  #13 (permalink)  
Antiguo 21/05/2012, 02:39
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Tachado sin enlace

Siempre, como dice el refrán, es mejor que sobre y no que falte, así todo tipo de alternativas y variaciones serán seguro de utilidad a agedjus. Gracias isabel también, el código a quedado mucho mejor
  #14 (permalink)  
Antiguo 19/09/2012, 08:11
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Tachado sin enlace

Que decir, nuevamente kseso nos vuelve a sorprender . Lean esto: http://ksesocss.blogspot.com/2012/09...ecoration.html
Código HTML:
Ver original
  1. <ul>
  2.        <li><a href="enlace1.html" title="">Enlace 1</a></li>
  3.        <li><a href="enlace2.html" title="">Enlace 2</a></li>
  4.        <li><a href="enlace3.html" title="">Enlace 3</a></li>
  5.        <li><span>sin enlace</span></li>
  6.        <li><span>sin enlace</span></li>
  7.        <li><span>sin enlace</span></li>    
  8. </ul>
Código CSS:
Ver original
  1. ul li{
  2.     text-decoration:line-through;
  3. }
  4. ul li a{
  5.     display:inline-block;
  6.     text-decoration:none;
  7. }
[fiddle]

Etiquetas: enlace, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:48.