selectors selectores nuevos excluir etiquetas elemento ejemplos ejemplo css select html-table cross-browser highlight

selectores - selector padre css



Regla CSS para deshabilitar la columna de la tabla de resaltado al seleccionar (2)

Fondo

Buscando desactivar, resaltando la primera columna de una tabla.

Fuente HTML

<table> <tbody> <tr><td class="unselectable" unselectable="on"><button value="1" unselectable="on" class="unselectable"><div unselectable="on" class="unselectable">&#x2718;</div></button></td><td>Row 1</td></tr> <tr><td class="unselectable" unselectable="on"><button value="2" unselectable="on" class="unselectable"><div unselectable="on" class="unselectable">&#x2718;</div></button></td><td>Row 2</td></tr> <tr><td class="unselectable" unselectable="on"><button value="3" unselectable="on" class="unselectable"><div unselectable="on" class="unselectable">&#x2718;</div></button></td><td>Row 3</td></tr> </tbody> </table>

Fuente de CSS

*.unselectable { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: -moz-none; -ms-user-select: none; user-select: none; }

Violín

http://jsfiddle.net/2LQfg/1/

Problema

Cuando el usuario selecciona y arrastra el botón del mouse sobre la mesa, el texto del botón (✘) aparece resaltado (comportamiento no deseado). Cuando el usuario copia y pega los valores, el valor (✘) no está incluido (comportamiento deseado).

Para aclarar, este es el comportamiento actual (no deseado):

La siguiente imagen muestra el comportamiento deseado después de arrastrar el mouse sobre la tabla:

A la mayoría de los usuarios probablemente no les importe, pero es una experiencia de usuario ligeramente engañosa. Lo que sea que un usuario resalte el texto y lo copie, se espera que todo el texto resaltado se copie. Al agregar la clase unselectable , el valor de los botones (✘) se resalta, pero no se copiará. El usuario simplemente no debería poder resaltar (seleccionar) el (✘) porque está configurado como unselectable .

Ambiente

Estoy usando Firefox 19.0.2 en Xubuntu, pero busco una solución de navegador cruzado.

Pregunta

¿Qué es una forma de navegador cruzado para evitar que el usuario destaque la primera columna de la tabla (que contiene los botones)?

Relacionado


Solo una solución

Hasta ahora, solo he encontrado una solución bastante inconveniente para esto. Oculta todo el texto "real" en el elemento unselectable y lo reemplaza con pseudo-texto a través de a :before pseudo-element. Nota: si no hay necesidad de tener texto "real" en el html, entonces los elementos del span anidados (y por lo tanto algunos html redundantes) y los css asociados a continuación pueden eliminarse, pero todo depende de cuán "importante" sea el el texto está en su aplicación real (para lectores de pantalla, motores de búsqueda, etc.).

Ejemplo de Fiddle.

HTML

<table> <tbody> <tr><td><button value="1"><div class="unselectable" data-content="&#x2718"><span>&#x2718;</span></div></button></td><td>Row 1</td></tr> <tr><td><button value="2"><div unselectable="on" class="unselectable" data-content="&#x2718"><span>&#x2718;</span></div></button></td><td>Row 2</td></tr> <tr><td><button value="3"><div unselectable="on" class="unselectable" data-content="&#x2718"><span>&#x2718;</span></div></button></td><td>Row 3</td></tr> </tbody> </table>

CSS

*.unselectable { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: -moz-none; -ms-user-select: none; user-select: none; } *.unselectable span { display: none; } *.unselectable:before { content: attr(data-content); }


Parece que los navegadores no copian el contenido si está configurado a través de la regla CSS de content . Con suerte no es necesario que sea compatible con IE7

button.unselectable:after { content: "/2718"; }

http://jsfiddle.net/ExplosionPIlls/2LQfg/50/