Html anclaje para ajustar el offset a una cabecera fija [repetir]

Esta traducción de: compensar el ajustar una a HTML ancla para la cabecera fija [Duplicar]

Esta pregunta ya tiene una respuesta aquí: Esta pregunta ha sido contestada aquí:

Estoy tratando de limpiar el camino mis anclas funcionan. Estoy tratando de limpiar el trabajo de anclaje. Tengo una cabecera que se fija a la parte superior de la página, por lo que cuando se vincula a un ancla en otra parte de la página, la página salta por lo que el ancla está en la parte superior de la página, dejando el contenido detrás de la cabecera fija (espero que tiene sentido). tengo un título unido a la parte superior de la página, por lo que cuando se vincula a una página otra posición de anclaje, la página va a saltar, por lo que la parte superior de la página de ancla, y los contenidos que dejan detrás de un título fijo (espero que tenga sentido). Necesito una manera de compensar el ancla por el 25 píxeles desde la altura de la cabecera. Un método de anclaje que necesito una altura compensada 25 píxeles de la cabecera. Yo preferiría HTML o CSS, pero Javascript sería aceptable también. Yo prefiero HTML o CSS, Javascript, pero es aceptable.


# 1 planta

Referencia: https://stackoom.com/question/j23u/ compensado ancla HTML para adaptarse a una cabecera fija - Repetir


Casa # 2

He encontrado esta solución: He encontrado esta solución:

<a name="myanchor">
    <h1 style="padding-top: 40px; margin-top: -40px;">My anchor</h1>
</a>

Esto no crea ninguna brecha en los contenidos y enlaces de anclaje funciona muy bien. No causa ningún lagunas en los contenidos y enlaces de anclaje son de hecho muy bueno.


Casa # 3

Sugiere @moeffju AS, el que esto puede ser logrado con CSS . Como sugiere @moeffju, esto puede lograrse mediante CSS . El tema me encontré con (que yo 'Me sorprende que no he visto discutido) es el truco de la superposición de los elementos anteriores con relleno o un borde transparente evita estacionario y haga clic en Acciones en la parte inferior de las secciones debido a que el siguiente se llega más alto en el z-orden. mi problema (para mi sorpresa, no he visto a los temas tratados) se solapan elementos de conocimientos previos o lleno de un borde transparente para impedir el vuelo estacionario y haga clic en la parte inferior de estas piezas operación, debido a que la siguiente etapa en el Z.

Mejor FIX fue la que me encontré en el lugar en la sección A de contenido divque se encuentra en z-index: 1: He encontrado que la mejor solución es colocar la pieza en z-index: 1el divmedio:

// Apply to elements that serve as anchors
.offset-anchor {
  border-top: 75px solid transparent;
  margin: -75px 0 0;
  -webkit-background-clip: padding-box;
  -moz-background-clip: padding;
  background-clip: padding-box;
}

// Because offset-anchor causes sections to overlap the bottom of previous ones,
// we need to put content higher so links aren't blocked by the transparent border.
.container {
  position: relative;
  z-index: 1;
}

# 4 piso

Me encontré con este mismo tema y terminó hasta el manejo de los eventos de clic de forma manual, como: me encontré con el mismo problema, por último, haga clic manejado manualmente eventos, tales como:

$('#mynav a').click(() ->
  $('html, body').animate({
      scrollTop: $($(this).attr('href')).offset().top - 40
  }, 200
  return false
)

Desplazamiento de animación opcional, por supuesto. Por supuesto, la animación de desplazamiento es opcional.


Casa # 5

Como se trata de un problema de presentación, una solución CSS puro sería ideal. Dado que este es el foco de la presentación, por lo que la solución puro CSS sería la opción ideal. Sin embargo, esta cuestión se planteó en 2012 , y aunque el posicionamiento relativo / soluciones de márgenes negativos se han sugerido, estos enfoques parece bastante hacky, crear problemas de flujo de potenciales, y no puede responder dinámicamente a los cambios en el DOM / visor. Sin embargo, el problema está en 2012 propuso, a pesar de las soluciones propuestas margen de posicionamiento relativo / negativos, pero estos métodos parecen torpes, crea el problema de flujo potencial, y no se puede responder dinámicamente a los cambios DOM / ventana gráfica.

Que el Creo en mente con un uso de JavaScript que se Todavía (febrero de 2017) y en el mejor enfoque. Con esto en mente, creo que el uso de JavaScript todavía es (en febrero de 2017) la mejor manera. Vainilla-JS es una continuación cuál es la solución por Will tanto el respondan a las pulsaciones y resolver en el Anchor Página de hash de la carga (Véase jsFiddle) . La siguiente es una solución de vainilla-JS, responderá y resolver la página, haga clic en el anclaje de generación aleatoria cuando se carga ( ver jsFiddle) . En The Modificar .getFixedOffset()Método, se requieren cálculos si dinámicos. Si es necesario calcular de forma dinámica, modificar el .getFixedOffset()método. Eres un usando jQuery SI, aquí Solución A del fondo de pantalla con delegación de eventos Modificado de Better y desplazamiento suave . Si está utilizando jQuery, que es una solución modificada con una mejor delegado de eventos y desplazamiento suave .

(function(document, history, location) {
  var HISTORY_SUPPORT = !!(history && history.pushState);

  var anchorScrolls = {
    ANCHOR_REGEX: /^#[^ ]+$/,
    OFFSET_HEIGHT_PX: 50,

    /**
     * Establish events, and fix initial scroll position if a hash is provided.
     */
    init: function() {
      this.scrollToCurrent();
      window.addEventListener('hashchange', this.scrollToCurrent.bind(this));
      document.body.addEventListener('click', this.delegateAnchors.bind(this));
    },

    /**
     * Return the offset amount to deduct from the normal scroll position.
     * Modify as appropriate to allow for dynamic calculations
     */
    getFixedOffset: function() {
      return this.OFFSET_HEIGHT_PX;
    },

    /**
     * If the provided href is an anchor which resolves to an element on the
     * page, scroll to it.
     * @param  {String} href
     * @return {Boolean} - Was the href an anchor.
     */
    scrollIfAnchor: function(href, pushToHistory) {
      var match, rect, anchorOffset;

      if(!this.ANCHOR_REGEX.test(href)) {
        return false;
      }

      match = document.getElementById(href.slice(1));

      if(match) {
        rect = match.getBoundingClientRect();
        anchorOffset = window.pageYOffset + rect.top - this.getFixedOffset();
        window.scrollTo(window.pageXOffset, anchorOffset);

        // Add the state to history as-per normal anchor links
        if(HISTORY_SUPPORT && pushToHistory) {
          history.pushState({}, document.title, location.pathname + href);
        }
      }

      return !!match;
    },

    /**
     * Attempt to scroll to the current location's hash.
     */
    scrollToCurrent: function() {
      this.scrollIfAnchor(window.location.hash);
    },

    /**
     * If the click event's target was an anchor, fix the scroll position.
     */
    delegateAnchors: function(e) {
      var elem = e.target;

      if(
        elem.nodeName === 'A' &&
        this.scrollIfAnchor(elem.getAttribute('href'), true)
      ) {
        e.preventDefault();
      }
    }
  };

  window.addEventListener(
    'DOMContentLoaded', anchorScrolls.init.bind(anchorScrolls)
  );
})(window.document, window.history, window.location);

Casa # 6

Yo estaba buscando una solución a este también. También estoy en busca de soluciones. En mi caso, era bastante fácil . Para mí, es fácil.

Tengo un menú de lista con todos los enlaces: Tengo un menú que contiene una lista de todos los enlaces:

<ul>
<li><a href="#one">one</a></li>
<li><a href="#two">two</a></li>
<li><a href="#three">three</a></li>
<li><a href="#four">four</a></li>
</ul>

Y a continuación que los títulos donde debe ir. Y bajo el título debajo.

<h3>one</h3>
<p>text here</p>

<h3>two</h3>
<p>text here</p>

<h3>three</h3>
<p>text here</p>

<h3>four</h3>
<p>text here</p>

Ahora bien, porque tengo un menú fijo en la parte superior de la página no puedo hacer que se vaya a la etiqueta, porque eso sería detrás del menú. Ahora, porque tengo un menú fijo en la parte superior de la página, no puedo estar me mudé a la etiqueta, ya que más tarde menú.

En su lugar, pongo una etiqueta span dentro de mi etiqueta con el identificador adecuado. En su lugar, voy a poner en una etiqueta span con la correcta identificación del.

<h3><span id="one"></span>one</h3>

Ahora usa 2 líneas de CSS para posicionar de manera adecuada. Ahora usa 2 líneas de CSS para colocarlos correctamente.

h3{ position:relative; }
h3 span{ position:absolute; top:-200px;}

Cambiar el valor de la parte superior para que coincida con la altura de la cabecera fija (o más). Cambiar el valor máximo para que coincida con la altura de una cabecera fija (o más). Ahora supongo que esto funcionaría con otros elementos. Ahora, creo que también se puede utilizar con otros elementos.

Artículos originales publicados 0 · ganado elogios 73 · vistas 550 000 +

Supongo que te gusta

Origin blog.csdn.net/w36680130/article/details/105296309
Recomendado
Clasificación