Advertisement
  1. Web Design
  2. UI Design

Cómo Crear un Menú Para Compartir en una Línea

by
Read Time:7 minsLanguages:

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

En este tutorial, aprenderemos a crear lo que se ha dado en llamar "un menú en línea para compartir". Este tipo de interface funciona haciendo emerger un menú que permite a los lectores compartir la página, citando el texto resaltado. Encontrarás una interfaz similar en algunas webs populares como Medium.

Antes de empezar a crear nuestro menú para compartir, examinaremos más de cerca cómo funciona la interfaz similar de Medium, por ejemplo, cómo se consigue que se muestre y como está posicionado respecto al área resaltada. Este es un paso útil que nos proporcionará la información técnica adecuada, eventualmente también determinar cómo vamos a escribir nuestros códigos de nuestro propio código.

¡Vamos!

Examinando la Interfaz de Medium

En la siguiente imagen, podemos ver que el menú compartido en Medium aparece en el centro del texto resaltado, independientemente de la longitud; Si seleccionamos sólo una sola palabra, una oración o todo el párrafo.

Highlighted word with the sharing button in MediumcomHighlighted word with the sharing button in MediumcomHighlighted word with the sharing button in Mediumcom
UI del Menu en Medium

Si miramos bajo el capó a través de Chrome DevTools, podemos encontrar la posición del menú se da a través de la top y left la propiedad en el estilo de la línea. Podemos ver el botón de compartir también se da con una clase de modificador adicional, highlightMenu--active, que lo hace visible.

Nota: Si todavía no está familiarizado con términos como Modificador, Bloqueo y Elemento, debería echar un vistazo a este tutorial anterior: Introducción a la Metodología BEM.

Estilos que posicionan el menú en línea para compartir en Medium

En la pestaña Estilos, podemos ver que su posición inicial se establece a través de CSS con la posición absoluta, la propiedad z-index para sobreponerse sobre los otros elementos de la página, el top y con la propiedad de visibility para poner los botones de visión.

Para resumir, tendremos que:

  1. Recuperar la longitud del área seleccionada para poder determinar el punto central de la selección.
  2. Cree un modificador para mostrar el elemento.
  3. Establezca la posición del menú para compartir con la propiedad top y left añadida a través de los estilos en línea.

Construir el menú para compartir

En este ejemplo, incluiremos los botones de Facebook y Twitter en el menú. Entregamos el icono de Facebook y Twitter con SVG, envuelto en un botón y un par de elementos div. Además, como se puede ver en el fragmento siguiente, también agregamos un elemento span para formar el triángulo en la parte inferior de los menús.

No hay una regla definitiva en términos de los colores y la forma del menú; No dude en diseñar el menú para que coincida con el diseño de su sitio. Vale la pena prestar atención a son el tamaño del botón; La altura y el ancho. Nuestro menú para compartir es, como se puede ver a continuación, 84px de ancho y 40px de altura. Utilizaremos estos dos valores para situar el menú compartido en el centro del área resaltada más adelante.

Inline sharing menu size inspected through Chrome DevToolsInline sharing menu size inspected through Chrome DevToolsInline sharing menu size inspected through Chrome DevTools

Los estilos que establecen la posición inicial y la visibilidad.

Y por último, la clase que vamos a anexar para hacer visible el botón de compartir.

Hacer que el menú para compartir funcione

En este punto, nuestro menú en línea para compartir no debe ser visible en la página. Además, cuando hacemos clic en el botón de Facebook y Twitter, la ventana para compartir no aparece en ninguna parte. Por lo tanto, en esta sección, escribiremos el JavaScript para que nuestros botones funcionen. Y comenzamos con la siguiente función getHighlight().

Esta función hará lo siguiente:

  • Recuperara el área resaltada usando la función JavaScript nativa, getSelection().
  • Devuelve un objeto que contiene el texto seleccionado, el elemento que envuelve el texto y el objeto Rectángulo del área seleccionada que nos da el tamaño, así como su posición—top, bottom, left y right—dentro de la página.

Nuestra siguiente función se llamara showMenu(). Como su nombre indica, esta función revelará el menú para compartir.

Específicamente, el código en esta función hace lo siguiente:

  1. Obtener un objecto desde la función getHighlighted().
  2. Ocultar y configurar el menú en su posición inicial cuando el área resaltada está vacía; no contiene texto.
  3. Evite que los botones aparezcan si el texto resaltado no está envuelto dentro de un párrafo.
  4. Por último, establezca la posición top y left, añada la clase sharing--shown para mostrar los botones para compartir. También he añadido unas pocas líneas de comentarios en línea que describen dónde se derivan algunos de los números definidos.

Vamos a suponer que la mayoría de los usuarios utilizan el ratón para resaltar el contenido en la web, por lo que vincular esta función en el evento mouseup. Los dispositivos móviles suelen tener sus propios menús contextuales sobre la selección de texto, por lo que nos estamos centrando en la web para este tutorial.

safari iossafari iossafari ios
Selección de texto en Safari iOS

Retrasamos la ejecución por 100ms usando la función setTimeout(), para asegurar que el contenido esté correctamente seleccionado.

Nuestra última función, openShareWindow(), es iniciar la ventana de compartir cuando se hace clic en los botones del menú. En este tutorial, lo usaremos principalmente para publicar la ventana para compartir de Twitter ya que Facebook tiene su propio SDK en JavaScript.

Click...Click...

A continuación, enlazamos los botones de uso compartido con el evento click y adjuntamos una función que iniciará la ventana para compartir.

Para el botón de compartir en Facebook, usamos el SDK en JavaScript de Facebook. El SDK nos permite pasar el texto para que aparezca en la ventana para compartir a través del parámetro quote.

Twitter no proporciona un SDK de JavaScript de esta manera. Así que aquí usamos nuestra función, openShareWindow(), y pasamos una URL formateada que cumple con sus directrices junto con el tamaño de la ventana.

Cuando hacemos clic en el botón de Twitter, se debe iniciar una ventana que aparece de la siguiente manera.

Concluyendo

¡Estamos listos con nuestro menú en línea para compartir! Vaya a la demostración para verla en acción, o el código fuente para ver las funciones en su totalidad. A continuación, puede mejorar el menú en línea para compartir con transiciones o animaciones para ofrecer una experiencia más atractiva.

Recursos adicionales

Hay varias APIs de JavaScripts que utilizamos para poner en marcha el menú para compartir. Algunos de ellos han sido mencionados en anteriores tutoriales de Envato Tuts+, mientras que otros pueden ser completamente nuevos para usted. Por lo tanto, aquí he incluido referencias para complementar este tutorial.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.