javascript - 粘列垂直滚动

标签 javascript jquery html css

我正在制作一个网格来以特定方式处理内容,并且当到顶部的距离为 0 时,我需要使其中一列沿着左列上的长文本垂直滚动。

在我的 CSS 上,我尝试了 position: Sticky;,但不起作用。

我还尝试将 jQuery 解决方案与 var sidebar = document.getElementById('sidebar'); Stickyfill.add(sidebar); 但什么也没有。

我错过了什么吗?

谢谢

.grid1{
  content: '';
  display: block;
  clear: both;
  width: 100%;
}

.grade2{
  display: inline;
}

.grid3 {
    display: grid;
    grid-template-columns: 43% 57%;
}

.column-1-1 { 
float: left; 
width: 45%;
background: red;
}

.column-1-2 { 
float: right; 
width: 53%; 
background: red;
}

.column-2-1 { 
float: left; 
width: 18%;
background: blue;
}

.column-2-2 { 
float: left; 
width: 67%;
background: blue;
margin-left: 15px;
}

.column-2-3 { 
float: right; 
width: 11%; 
background: blue;
}
    
.column-3-1 { 
grid-column:1;
grid-row: 1;
background: green;
}

.column-3-2 { 
grid-column:2;
grid-row: 1;
background: green;
}

.column-3-3 { 
grid-column-start: 1;
grid-column-end: 3;
background: green;
margin-top: 15px;
grid-row: 2;
}

.info { 
position: sticky;
position: -webkit-sticky;
top: 0;
}
<div class="grid1">
  <div class="column-1-1"><h6><strong>title1<hr></strong></h6></div>
  <div class="column-1-2"><h6><strong>title2<hr></strong></h6></div>
</div>
<div class="grid2">
  <div class="column-2-1"><p><strong>text</strong></p></div>
  <div class="column-2-3"><div class="info"><p><strong>infos</strong></p></div></div>   
  <div class="column-2-2">
     <div class="grid3">
        <div class="column-3-1">text</div>
        <div class="column-3-2">(LONG TEXT)</div>
        <div class="column-3-3">text</div>
     </div>
   </div>    
</div>

Illustration

最佳答案

刚刚找到了带有 jQuery 代码的解决方案:

Add/remove class with jquery based on vertical scroll?

$(function() {
    var header = $(".info");
    $(window).scroll(function() {    
        var scroll = $(window).scrollTop();
    
        if (scroll >= 90) {
            header.removeClass('info').addClass("info2");
        } else {
            header.removeClass("info2").addClass('info');
        }
    });
});
.grid1{
  content: '';
  display: block;
  clear: both;
  width: 100%;
}

.grade2{
  display: inline;
}

.grid3 {
    display: grid;
    grid-template-columns: 43% 57%;
}

.column-1-1 { 
float: left; 
width: 45%;
background: red;
}

.column-1-2 { 
float: right; 
width: 53%; 
background: red;
}

.column-2-1 { 
float: left; 
width: 18%;
background: blue;
}

.column-2-2 { 
float: left; 
width: 67%;
background: blue;
margin-left: 15px;
}

.column-2-3 { 
float: right; 
width: 11%; 
background: blue;
}
    
.column-3-1 { 
grid-column:1;
grid-row: 1;
background: green;
}

.column-3-2 { 
grid-column:2;
grid-row: 1;
background: green;
}

.column-3-3 { 
grid-column-start: 1;
grid-column-end: 3;
background: green;
margin-top: 15px;
grid-row: 2;
}

.info2 { 
position: fixed;
top: 0;
background:blue;
width: 11%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="grid1">
  <div class="column-1-1"><h6><strong>title1<hr></strong></h6></div>
  <div class="column-1-2"><h6><strong>title2<hr></strong></h6></div>
</div>
<div class="grid2">
  <div class="column-2-1"><p><strong>text</strong></p></div>
  <div class="column-2-3"><div class="info"><p><strong>infos</strong></p></div></div>   
  <div class="column-2-2">
     <div class="grid3">
        <div class="column-3-1">text</div>
        <div class="column-3-2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis turpis augue, lacinia ut viverra ac, posuere et nisl. Cras ac erat arcu. Ut et neque vehicula massa viverra auctor. Praesent vehicula justo sit amet enim blandit scelerisque. Aenean ullamcorper vitae dolor non dignissim. Proin vulputate porta ante, nec posuere leo lobortis nec. Fusce id ante a erat tempus pulvinar. Suspendisse magna dolor, tincidunt at tristique a, dictum vel urna. Praesent vehicula justo sit amet enim blandit scelerisque. Aenean ullamcorper vitae dolor non dignissim. Proin vulputate porta ante, nec posuere leo lobortis nec. Fusce id ante a erat tempus pulvinar. Suspendisse magna dolor, tincidunt at tristique a, dictum vel urna.
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis turpis augue, lacinia ut viverra ac, posuere et nisl. Cras ac erat arcu. Ut et neque vehicula massa viverra auctor. Praesent vehicula justo sit amet enim blandit scelerisque. Aenean ullamcorper vitae dolor non dignissim. Proin vulputate porta ante, nec posuere leo lobortis nec. Fusce id ante a erat tempus pulvinar. Suspendisse magna dolor, tincidunt at tristique a, dictum vel urna. Praesent vehicula justo sit amet enim blandit scelerisque. Aenean ullamcorper vitae dolor non dignissim. Proin vulputate porta ante, nec posuere leo lobortis nec. Fusce id ante a erat tempus pulvinar. Suspendisse magna dolor, tincidunt at tristique a, dictum vel urn
        </div>
        <div class="column-3-3">text</div>
     </div>
   </div>    
</div>

关于javascript - 粘列垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888191/

相关文章:

javascript - 通过调用方法检查数组的单个元素

javascript - Bootstrap 多选下拉列表未显示

javascript - jqPlot 饼图数据标签不显示

javascript - 使用 javascript 或 jquery 提交链接,无需刷新页面

html - 修复了 div 卡在父级中的问题 - CSS

html - CSS 中的位置固定水平居中

javascript - jQuery 切换脚本

javascript - `onsubmit` html 表单不起作用

html - 之前的 CSS 分页符(左和右)不起作用

javascript - 如何使用 Javascript 将事件添加到 html 标签