gpt4 book ai didi

javascript - Google 是如何制作滚动条的?

转载 作者:行者123 更新时间:2023-11-30 13:37:22 27 4
gpt4 key购买 nike

我刚刚在 http://www.google.com/finance 并注意到页面中间有一个看起来很棒的滚动条。

Google 如何创建这种滚动条的外观/感觉?

注意:此滚动条不同于 Google 在其 Wave 产品中使用的滚动条。

Screenshot

更新:

滚动条不会立即出现。不要刷新页面。让页面保持理想状态片刻,直到世界上有新的新闻报道。一旦出现新的新闻故事,新文章将导致滚动条出现。

最佳答案

非常有趣的问题。我只是有空余时间来实现这个简单的例子(花了大约 1 小时喝了一杯带糖果的茶 ;))。看看这个:

<script src='jquery.js'></script>
<script src='jquery-ui.js'></script>

<style>
.frame {
position: relative;
top: 150px;
left: 150px;
width: 500px;
height: 500px;
overflow: hidden;
border: 1px solid black;
}

.frame > div {
border: 1px solid black;
}

.frame .content {
margin-right: 0px;
height: 498px;
overflow: hidden;
}

.frame .scrollbar {
float: right;
width: 20px;
text-align: center;
}
.frame .scrollbar .scroller {
position: relative;
border-right: 1px solid black;
width: 10px;
height: 91.8%;
}
.frame .scrollbar .scroll-up, .frame .scrollbar .scroll-down {
cursor: pointer;
}
.frame .scrollbar .scroll-up:hover, .frame .scrollbar .scroll-down:hover {
background: blue;
color: White;
}

.frame .scroller-draggable {
background: #EEF1F7;
border: 1px solid #D5DFF3;
height: 20px;
margin-left: 1px;
margin-right: -10px;
cursor: pointer;
}
</style>

<div class="frame">
<div class="scrollbar">
<div class="scroll-up">[^]</div>
<div class="scroller">
<div class="scroller-draggable"></div>
</div>
<div class="scroll-down">[v]</div>
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer enim elit, tristique id tristique sed, vulputate eu libero. Nam nec lectus orci, at varius est. Aenean quis velit a lorem bibendum dignissim eu ac ipsum. Vestibulum convallis diam faucibus dolor placerat sed iaculis sapien mattis. Maecenas in velit nec mauris aliquam condimentum. Mauris porttitor magna id est ultrices dapibus. Fusce at urna felis. Quisque congue dignissim bibendum. Praesent egestas elementum ante, non condimentum libero tempor quis. Nullam fermentum tincidunt aliquam. Suspendisse nec mi velit. Nulla facilisi. Etiam vitae sem nec orci feugiat mattis a quis massa. Vivamus rutrum suscipit tempor. Proin varius interdum arcu eget auctor. Vivamus quis placerat nulla. Praesent imperdiet tempus dictum. Donec pharetra, orci ac gravida euismod, sapien tellus feugiat velit, eu egestas nunc nisi at enim. Phasellus blandit placerat neque, non rhoncus tellus commodo sit amet. Donec lectus erat, ornare sit amet venenatis id, viverra ac quam.</p>
<p>Sed aliquet metus vitae urna vulputate in mattis orci accumsan. Quisque dictum odio ac massa aliquet porttitor. Donec accumsan tortor sit amet ante vulputate at ullamcorper arcu auctor. Aenean gravida venenatis interdum. Aliquam erat volutpat. Integer eget dui vitae eros iaculis pharetra. In aliquam volutpat tincidunt. Sed vel imperdiet eros. Ut est nunc, venenatis sed varius et, scelerisque quis mi. Nullam aliquam pretium luctus. In hac habitasse platea dictumst. Etiam nec nibh libero. Nam pellentesque accumsan justo eget gravida. Ut egestas, mauris vitae egestas convallis, nibh turpis gravida justo, sit amet tincidunt libero orci eget metus.</p>
<p>Praesent convallis pellentesque tristique. Etiam vulputate, arcu sit amet dignissim feugiat, risus nulla adipiscing lectus, in dignissim metus mi iaculis sem. Duis pulvinar vehicula leo nec porta. Cras nisl felis, elementum sit amet commodo sit amet, gravida quis augue. Praesent pretium sapien ut orci rutrum auctor. Aliquam erat volutpat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed porta mattis cursus. Duis facilisis enim quam, quis imperdiet nulla. Mauris dapibus tincidunt felis vel ultrices. Fusce ut diam lectus. In lacinia ultrices leo, ut fringilla tellus egestas eget. Ut in odio et est tristique tempor quis a orci. Integer sodales adipiscing condimentum. Ut lacinia vehicula tellus sed feugiat. Sed libero libero, vestibulum ut pharetra nec, vestibulum vel augue. Aliquam consequat nibh id nulla porta porta.</p>
<p>Nullam ligula tortor, sollicitudin et sollicitudin a, vestibulum vel dui. Ut at facilisis nisi. Duis id ante quis augue iaculis congue. Nulla facilisi. Phasellus tincidunt condimentum nisi, ac ultricies augue ultricies et. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec id mauris a sapien suscipit adipiscing. Pellentesque accumsan pulvinar tortor et elementum. Nulla facilisi. Nulla tempor lectus et purus luctus ultricies. Phasellus aliquam, libero non ullamcorper vulputate, est lectus ultricies massa, vel tempus magna elit ac lacus. Sed id dui purus. Quisque vel erat ipsum. In in lectus diam, a tempor velit.</p>
<p>Duis tincidunt neque quis ipsum feugiat malesuada. Sed et tortor vel nunc porta commodo. Mauris lacinia suscipit sagittis. Praesent non nibh ac elit congue sagittis vitae non dui. Nunc risus urna, sodales faucibus rhoncus at, interdum faucibus velit. Vivamus ultrices neque vehicula turpis luctus non fringilla orci aliquam. Maecenas commodo, est vitae consequat scelerisque, metus sem malesuada dolor, non tincidunt nunc turpis non arcu. Donec rutrum mi nec neque dignissim ac gravida neque dignissim. Quisque porttitor elit a ante ultrices interdum. In tempor neque vitae tellus laoreet tincidunt. Pellentesque bibendum accumsan sapien suscipit vestibulum. Nullam justo libero, consectetur id rhoncus at, vulputate eu tortor. Suspendisse mattis, erat sed viverra malesuada, sapien leo interdum leo, in adipiscing nibh purus quis diam. Sed vitae convallis purus. Maecenas leo mauris, egestas ut vehicula vel, sodales non justo. In consequat scelerisque velit, id pharetra arcu fringilla eget.</p>
<p>Phasellus convallis porta velit at tempor. Etiam non quam tortor. Vivamus eget nulla turpis. Suspendisse potenti. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras sollicitudin arcu quis libero tristique vel tempus turpis eleifend. Fusce sed justo sed sem tempor mattis vel eu nulla. Phasellus hendrerit tellus et dui luctus fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas ullamcorper, dolor eu egestas tincidunt, velit nulla sollicitudin metus, a ultrices nunc diam eu ante. Suspendisse sit amet hendrerit ante. Proin viverra posuere dolor. Nullam blandit lacus quis tortor dignissim non hendrerit risus pharetra.</p>
</div>
</div>

<script type="text/javascript">
$(function () {
$(".frame .scrollbar").find(".scroll-up, .scroll-down").click(function () {
var $content = $(this).closest(".frame").children(".content");
var dir = $(this).is(".scroll-up") ? -20 : 20;
$content.scrollTop($content.scrollTop() + dir);
});

$(".frame .content")
.bind("mousewheel", function (e) {
$(this).scrollTop($(this).scrollTop() - e.wheelDelta);
})
.scroll(function (e) {
var $scroller = $(this).closest(".frame").children(".scrollbar").children(".scroller");
var $scrollerDraggable = $scroller.children(".scroller-draggable");

if ($scrollerDraggable.data("isscrolling"))
return;

var pos = $(this).scrollTop() / ($(this)[0].scrollHeight - $(this).height());
console.log([pos]);
$scrollerDraggable.css("top", ($scroller.height() - $scrollerDraggable.height()) * pos);
})

$(".frame .scroller-draggable").draggable({
axis: 'y',
containment: $(".frame .scroller"),
start: function () {
$(this).data("isscrolling", true);
},
drag: function (event, ui) {
var $scroller = $(this).closest(".scroller");
var $content = $scroller.closest(".frame").children(".content");
var pos = ui.position.top / ($scroller.height() - $(this).height());

$content.scrollTop(($content[0].scrollHeight - $content.height()) * pos);
},
stop: function () {
$(this).data("isscrolling", false);
}
});
});
</script>

它需要JQuery和Jquery UI,这个例子还有一些问题,但是主要思想已经实现了。示例仅在 Chrome 7 中测试。您可以从中制作一个 jquery 插件。

关于javascript - Google 是如何制作滚动条的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com