是否有可能/容易创建一个网页,它可以像Microsoft Excel电子表格一样应用‘冻结窗格’?这意味着标题和侧边栏应该保持固定位置,但当页面滚动时应该向下/向右滚动。
我需要类似于这个的东西,只不过我想把它应用到整个页面而不是一个表格。
是否有可能/容易创建一个网页,它可以像Microsoft Excel电子表格一样应用‘冻结窗格’?这意味着标题和侧边栏应该保持固定位置,但当页面滚动时应该向下/向右滚动。
我需要类似于这个的东西,只不过我想把它应用到整个页面而不是一个表格。
position: fixed
指令来完成。div
。#fixed-div {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 100px;
background-color: #000;
}
当您滚动时,此元素将保持固定在浏览器视口的最上方100px处。
此示例演示了垂直和水平方向上的效果。 http://jsfiddle.net/ukzYf/1/
希望这可以帮助到您。
你是否在寻找 position: fixed
?
这里有一个简单的工作示例:
.header {
position: fixed;
top: 0;
left: 0;
height: 50px;
background: red;
width: 100%;
}
.sidebar {
position: fixed;
top: 50px;
left: 0;
width: 100px;
background: blue;
height: 100%;
}
.content {
margin: 50px 0 0 100px;
padding: 10px;
width: 2000px;
}
<div class="header"></div>
<div class="sidebar"></div>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.<br>
Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.
Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. Curabitur lobortis nisl a enim congue semper. Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt. Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus. Aliquam ut massa in turpis dapibus convallis. Praesent elit lacus, vestibulum at malesuada et, ornare et est. Ut augue nunc, sodales ut euismod non, adipiscing vitae orci. Mauris ut placerat justo. Mauris in ultricies enim. Quisque nec est eleifend nulla ultrices egestas quis ut quam. Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus. Cras quis ligula sem, vel elementum mi. Phasellus non ullamcorper urna.<br>
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In euismod ultrices facilisis. Vestibulum porta sapien adipiscing augue congue id pretium lectus molestie. Proin quis dictum nisl. Morbi id quam sapien, sed vestibulum sem. Duis elementum rutrum mauris sed convallis. Proin vestibulum magna mi. Aenean tristique hendrerit magna, ac facilisis nulla hendrerit ut. Sed non tortor sodales quam auctor elementum. Donec hendrerit nunc eget elit pharetra pulvinar. Suspendisse id tempus tortor. Aenean luctus, elit commodo laoreet commodo, justo nisi consequat massa, sed vulputate quam urna quis eros. Donec vel.<br>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.<br>
Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.<br>
Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. Curabitur lobortis nisl a enim congue semper. Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt. Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus. Aliquam ut massa in turpis dapibus convallis. Praesent elit lacus, vestibulum at malesuada et, ornare et est. Ut augue nunc, sodales ut euismod non, adipiscing vitae orci. Mauris ut placerat justo. Mauris in ultricies enim. Quisque nec est eleifend nulla ultrices egestas quis ut quam. Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus. Cras quis ligula sem, vel elementum mi. Phasellus non ullamcorper urna.<br>
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In euismod ultrices facilisis. Vestibulum porta sapien adipiscing augue congue id pretium lectus molestie. Proin quis dictum nisl. Morbi id quam sapien, sed vestibulum sem. Duis elementum rutrum mauris sed convallis. Proin vestibulum magna mi. Aenean tristique hendrerit magna, ac facilisis nulla hendrerit ut. Sed non tortor sodales quam auctor elementum. Donec hendrerit nunc eget elit pharetra pulvinar. Suspendisse id tempus tortor. Aenean luctus, elit commodo laoreet commodo, justo nisi consequat massa, sed vulputate quam urna quis eros. Donec vel.
</div>
众所周知,CSS 规则
position: fixed;
通常应用于表头的CSS样式会将其与表格的tbody部分中相应的列之间的匹配关系打破,因为它会将目标HTML元素从DOM正常流中“分离”,使其作为独立元素进行操作。这意味着,如果任何一个td元素中的表格正文被编辑,并且相应列的宽度根据新文本长度而变化,thead就无法与其保持同步,导致列对齐出现问题。
要解决这个问题,您需要为每一列添加固定宽度,以防止由于列错位而导致布局混乱。
因此,我想提供另一种没有这种缺点的CSS解决方案:
.stickyClass > th
{
position: sticky;
top: 0;
}
class = "stickyClass"
将其插入到您要定位的HTML tr元素中。
它是如何工作的? 它将使所有嵌套的th元素(标题单元格)像往常一样运行,直到达到第二个CSS规则指示的滚动顶部(可以设置与0不同的值以匹配您的需求)。在滚动量之后,该元素会改变其行为并充当固定元素。粘性规则的优点在于它保持thead-tbody列宽度对应,因此即使编辑td内容文本并更改列本身的宽度,表格布局也不会破裂。因此,在弹性表格布局中使用它是一个很好的选择。
如果您有一个包含表格和其他内容的长文档,使用固定的CSS解决方案可以使表头保持可见,即使其他内容与其没有适当的关系。换句话说,表的固定元素保持固定且不可滚动,即使该特定表格不再是屏幕上可见的元素,因为滚动页面本身超出了表格边界。缺点:不幸的是,粘性CSS规则不能直接在thead和tr元素上工作(仍然存在一些小问题),因此您需要将其对准th子元素,在类名后添加> th。
这意味着这个答案并不能代替这个主题中的其他答案,而是将它们集成在一起,让您选择最适合自己需求的答案。
tbody{
overflow-y: auto;
height: 350px;
width: 102%;
}
thead,tbody{
display: block;
}
我使用Bootstrap CSS的col-md-xx定义列的宽度。如果不定义列宽,那么自动宽度无法匹配。102%是因为溢出会导致一些空间丢失。