更改 div 内容的位置

Posted

技术标签:

【中文标题】更改 div 内容的位置【英文标题】:Change a div content in position 【发布时间】:2016-06-27 16:12:40 【问题描述】:

我想根据 div 位置更改文本。 一张图片值一千字,所以这是我想要的 gif:

这是我的代码:

https://jsfiddle.net/c0mk2wto/4/

<div class="image i_one"></div>
<div class="image i_two"></div>
<div class="image i_three"></div>

<div class="text t_one">One</div>
<div class="text t_two">Two</div>
<div class="text t_three">Three</div>

非常感谢!

【问题讨论】:

【参考方案1】:

试试这个(它展示了如何实现它的主要思想):https://jsfiddle.net/c0mk2wto/8/

var getDivClassByClass = function (className) 
    var divHash = 
      i_one: '.t_one',
      i_two: '.t_two',
      i_three: '.t_three'
    ,
    key,
    value,
    classN = '';
    for (key in divHash) 
       console.log(className, key);
       if (className.indexOf(key) >= 0) 
         classN = divHash[key];
         break;  
       
    
    return classN;
;

var scroll = function () 
    var images = [].slice.call(document.querySelectorAll('.image'));
    var positions = images.map(function (image) 
       var box = image.getBoundingClientRect();
       return 
         imageClass: image.className,
         closestTop: Math.abs(box.top)
       ;
    );
    positions.sort(function (p1, p2) 
            return p1.closestTop - p2.closestTop;
    );
    positions.forEach(function (pos, index) 
      var element = document.querySelector(getDivClassByClass(pos.imageClass));
      if (!index) 
         element.style.display = 'block';
       else 
         element.style.display = 'none';
      
    );

;

window.addEventListener('scroll', scroll, false);
scroll();

【讨论】:

【参考方案2】:

我认为添加数据属性可以更轻松地解决您的问题:) https://jsfiddle.net/c0mk2wto/10/

var targetTop = $(".t_one").position().top;

$(document).ready(function() 
    scrollAnimate(); // for init
).scroll(function() 
    scrollAnimate();
);

function scrollAnimate() 
    var _scrollTop = $(this).scrollTop();

    $('.text').addClass("hidden");

    $(".image").each(function() 

        if(targetTop >= $(this).position().top - _scrollTop &&
           targetTop <= $(this).position().top + $(this).height() - _scrollTop) 

            var id = $(this).data("id");
            $(".text[data-id=" + id + "]").removeClass("hidden");
        
    );

【讨论】:

您是否已将data-id 添加到 div?像这样:&lt;div class="image i_one" data-id="1"&gt;&lt;/div&gt; 并检查 jquery 库是否已完全加载。 hidden 应声明为display: none

以上是关于更改 div 内容的位置的主要内容,如果未能解决你的问题,请参考以下文章

将鼠标悬停在非同级 div 上时更改 SVG 样式

如何使用 CSS 更改 DIV 视频元素的位置?

拖放后更改div的样式

根据该值在数组中的位置更改 div 的类[关闭]

更改 DIV 的内容

更改 div 的内容 - jQuery