我不允许将 Jquery/Javascript 添加到该站点,因此我正在寻找任何方法来执行“返回顶部”按钮,并仅使用 CSS/HTML 将其转换到顶部....不要想这是可能的,但要检查是否有人遇到了解决方案。
5 回答
它不会是一个平滑的滚动,但你可以使用一个 achor 标签链接到页面的任何部分。这是 W3 学校的一个例子。
<!DOCTYPE html>
<html>
<body>
<h2><a id="top">There is a link at the bottom of the page!</a></h2>
<p>In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since.</p>
<p>"Whenever you feel like criticizing any one," he told me, "just remember that all the people in this world haven't had the advantages that you've had."</p>
<p>He didn't say any more, but we've always been unusually communicative in a reserved way, and I understood that he meant a great deal more than that. In consequence, I'm inclined to reserve all judgments, a habit that has opened up many curious natures to me and also made me the victim of not a few veteran bores. The abnormal mind is quick to detect and attach itself to this quality when it appears in a normal person, and so it came about that in college I was unjustly accused of being a politician, because I was privy to the secret griefs of wild, unknown men. Most of the confidences were unsought-frequently I have feigned sleep, preoccupation, or a hostile levity when I realized by some unmistakable sign that an intimate revelation was quivering on the horizon; for the intimate revelations of young men, or at least the terms in which they express them, are usually plagiaristic and marred by obvious suppressions. Reserving judgments is a matter of infinite hope. I am still a little afraid of missing something if I forget that, as my father snobbishly suggested, and I snobbishly repeat, a sense of the fundamental decencies is parcelled out unequally at birth.</p>
<p>And, after boasting this way of my tolerance, I come to the admission that it has a limit. Conduct may be founded on the hard rock or the wet marshes, but after a certain point I don't care what it's founded on. When I came back from the East last autumn I felt that I wanted the world to be in uniform and at a sort of moral attention forever; I wanted no more riotous excursions with privileged glimpses into the human heart. Only Gatsby, the man who gives his name to this book, was exempt from my reaction-Gatsby, who represented everything for which I have an unaffected scorn. If personality is an unbroken series of successful gestures, then there was something gorgeous about him, some heightened sensitivity to the promises of life, as if he were related to one of those intricate machines that register earthquakes ten thousand miles away. This responsiveness had nothing to do with that flabby impressionability which is dignified under the name of the "creative temperament"-it was an extraordinary gift for hope, a romantic readiness such as I have never found in any other person and which it is not likely I shall ever find again. No-Gatsby turned out all right at the end; it is what preyed on Gatsby, what foul dust floated in the wake of his dreams that temporarily closed out my interest in the abortive sorrows and short-winded elations of men.</p>
<a href="#top">Go to top</a>
</body>
</html>
基本上,href 使用 css 选择器来决定要转到哪个锚点
更新:所以我发现了一个关于平滑滚动的有趣链接,我想我会在这个问题上发布它。
据我所知,仅使用 CSS 无法实现平滑的页面转换。正如aaronman所说,您可以使用 HTML 属性id
来帮助跳转到页面上的不同位置。你给元素一个id,它可以是你想要的任何东西
<h1 id="whatever">Jump to me</div>
然后在页面的某个地方,你可以使用一个锚标签来跳转到这个。
<a href="#whatever">Jump to "Jump to me"</a>
其工作方式与定位 CSS 中的元素非常相似。您使用 id 定位它,然后href
将带您到那里。这对于目录等项目很有帮助。如果您正在制作诸如目录之类的内容,并且想要显示您已跳转到某个部分,则可以使用:target
伪类来完成此操作。这是一个非常基本的例子。
你可以在没有元素跳转的情况下做到这一点的方法是给出a
an href
of #
。这将直接跳转到页面顶部。几乎就像<html>
页面有一个id
of #
。
为了通过 CSS 滚动到页面顶部,您必须添加某种触发器来更改 CSS。也就是说,AFAIK,只能通过 html 内联 JavaScript 触发器或 javascript 中的 EventListeners 实现。
但是,您可以通过锚点( )的设置跳转到页面上的某个点href=#the_id_of_an_element
,但这并不平滑,而是瞬时的。
现在,我确实设法使某种平滑滚动到页面顶部,或者更确切地说是元素的开头,但是仅使用 CSS 会产生一些令人不安的副作用。不过,我会分享代码,看看它是否对任何人有帮助,或者有任何其他问题。
/*
KNOWN ISSUES
- requires constant user input.
Either through hover or buttonpress
-> If an element would be triggered, they cannot be untriggered. CSS is not made for this.
- moves the page
Well, what did you expect? CSS visualises the page. You can only move
the page through the CSS by editing visual content and making the page smaller,
basically forcing the client to move the user.
-> this also means that elements below the element are shown in the view
-> it is VERY visible, especially if you look at the scrollbar
- has a delay depending on where the user is at
The animation has to reach the position of the user, basically.
At least it works on IE?
But honestly, just use javascript to scroll to. It's literally an one-liner
*/
/* Transition types. Fairly universal available in browsers*/
.smooth-transition {
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.slow-transition {
-webkit-transition: all 1.5s ease;
-moz-transition: all 1.5s ease;
-ms-transition: all 1.5s ease;
-o-transition: all 1.5s ease;
transition: all 1.5s ease;
}
/* End of transition types */
.bottom {
position: fixed;
/*Position wherever, just know that you can set sizes using these*/
bottom: 0px;
height: 40px;
left: 0px;
right: 0px;
z-index: 10;
}
/*
Settings for the transitions
On active (which is click), the animation makes sure the page is made smaller, so
the top is shown again. This also causes the user to be moved upwards
After that animation, the page is restored in size.
*/
#move:active ~ .mover,
#move:focus:hover ~ .mover {
height: 0px;
}
#move:after {
content: "Back to top";
}
#move:focus:after {
content: "Hover to go up";
}
/*
The element that holds all the data
It's required for this element to also be at the end of the page,
otherwise the user will be moved upwards, but also with the end
of the page in sight. (This can be tweaked with the min-height
settings though. Height - height of whatever is beneath it, but
the user will still see the other elements)
*/
.mover {
/*
Min-height here is the amount of spacing between the element and
the top of the HTML page. In most cases, this is 100%, but if the
element is contained, then this min-height trick might not work
Just make sure that the min-height amount is the same as the visual
page size, and NOT its contents or its parent.
*/
min-height: 100%;
/*
Set to your div height. Unfortunately, animations from auto to
0px are not supported (yet?), and there's no real good trick
as a placeholder for this one. You could mess around with
max-height, but remember that this can cause a delay in animation
and creates differences in speed that are hard to tweak or measure.
*/
height: 1400px;
/*
In order to move the page, you'll have to suppress the content
that will be shown outside of the element. Ergo, hide the overflow.
*/
overflow: hidden;
}
/* To make the example element look pretty*/
#move:hover {
color: whitesmoke;
background-color: rgb(30,30,30);
}
#move {
background-color: rgb(50,50,50);
border-radius: 2px;
text-align: center;
line-height: 40px;
color: lightslategrey;
text-decoration: none;
}
/*
End of pretty CSS
*/
<link rel="stylesheet" href="test.css">
<html>
<h1>Welcome at the top</h1>
<a id="move" class="bottom" ></a>
<div class="mover slow-transition">
<p>Lorem ipsum dolor sit amet, movet soleat nullam an mei, ne mei ullum errem viris. Mea et esse nullam. No sit accumsan tacimates evertitur. Et sea mutat postea.
Summo numquam eu vix, vix populo denique suscipit no. Laudem elaboraret ei cum. Cetero quaeque oporteat pri in, pro simul persius an, mei in quis iriure molestie. Vix simul sententiae suscipiantur in, qui errem phaedrum mediocrem ex, ei mea commune interpretaris.
Id ius sumo choro accumsan. No qui facete fuisset noluisse, cum meis periculis hendrerit ut. His no quem malis minimum, veri posse abhorreant te eos, no ignota aperiam vocibus mei. Pro ex phaedrum maiestatis, an mei appareat adversarium. Pro ne atomorum consequuntur, velit viderer ei eam, vim luptatum adolescens id. Lucilius periculis ex eos, nullam laboramus his ex.
Ex eius deseruisse persequeris eos, ut mea enim mutat efficiendi, nam magna rebum labore ad. Ut verear maiorum nam, per an nibh maluisset. Quas viderer no vix, ut tantas molestiae aliquando vel, ne eam nibh mandamus. Mel ad sensibus tractatos, vim cu timeam explicari. Te duo choro option labores, ius principes ullamcorper cu.
Ei vis alienum corrumpit, ea has vero volutpat. Sit lobortis percipitur scripserit eu. Cu mea putent detraxit, mel purto eruditi contentiones in, et urbanitas honestatis sit. Quod numquam accusata et vim. Discere expetenda in per. Sit eu dolor persius, virtute repudiandae eum et.
Ne vix lobortis constituam, cum dicant iisque hendrerit cu. Scribentur efficiantur ex sed, pri ex congue tollit lobortis, vix affert aliquip tractatos at. Hinc esse legimus sit at, accusata hendrerit expetendis ex eum. Vide civibus sed at, et has ridens dictas noluisse.
His philosophia comprehensam cu, omnium abhorreant usu cu, ne quo vero eius consetetur. In cum nusquam pericula. Luptatum electram nec et, purto perpetua pri eu, an pri minim adolescens. Ex vel causae omittam, te vis semper patrioque, nec prima quaestio an. Ferri admodum definitionem est no, eu etiam tritani scriptorem eum.
Nam cu viris dictas eleifend, has an idque abhorreant, sed id choro inciderint reprehendunt. Pri putant aliquid intellegat at. Cibo discere at sed, id elitr nonumy has. Cu nam magna similique. Ex duis debet discere mei.
An pri partem delenit mnesarchum, ut nam honestatis reformidans. Cum no dicta verterem referrentur, sit ad dolore laboramus, docendi adipisci ad eos. Porro voluptaria mea at, feugait mnesarchum usu no. Essent nostro vituperata eam ut, dicat nemore maiestatis id est. In nec solum volumus detracto, ne vis scriptorem delicatissimi. Ea saepe similique vel.
Et bonorum molestiae sed, legere latine detracto duo at, per te alterum signiferumque. Novum regione civibus at pri, sit no debet phaedrum. Vis elitr nominati id, his justo soleat te, cum ut modus iusto qualisque. Nostro intellegat mei ei. Ea quo eleifend vituperata, sea at persius molestie pericula, ut vis melius molestie. Dolorem corrumpit vix ut, qualisque definiebas ea mea.
Cu quo solet cetero posidonium, ut sed erat utroque, est nostro explicari euripidis eu. Oratio deserunt his ad, verterem complectitur conclusionemque ne quo, vim imperdiet complectitur te. No invenire gloriatur has. Legimus accumsan eu mea. Cu pri nonumes eleifend salutandi.
Qui ei fugit cetero. Vis convenire interpretaris ex, cu vel patrioque assueverit dissentiet. Clita commune perpetua vel ex, te salutandi liberavisse interpretaris vix, te vide dictas invidunt mel. Mel id qualisque conclusionemque. Prima fabellas dignissim vim id, cum at elit luptatum concludaturque. Vix ex modus dolores voluptua.
No vis velit soluta nonumes, erant officiis tractatos vix id. In nam justo delicata, ridens sadipscing per eu. Vel solet melius in. At novum inermis atomorum est, ius no malorum nominati, no consulatu interpretaris mediocritatem eos.
At quis integre liberavisse eam. Modo eirmod ius ea. Posse omnes interpretaris cu cum. Ad audire vivendo quo. Et sed zril vidisse. Quo deleniti electram et, ex has accusam detraxit elaboraret.
Instructior deterruisset qui at. Dictas aeterno epicuri id cum, his nostro labores comprehensam ei. Nam cu vitae facilisis, no est scripta alienum tincidunt. Duo adhuc mazim lucilius at. Cu tacimates facilisis sed.
Ne rationibus referrentur pro, aliquip omittam id eam. Nec atqui noster persequeris ea. An clita dicunt sed, mea cu facer nulla prompta, ancillae fabellas vel eu. Mei ei utroque eligendi torquatos, nam ut omnes integre adversarium, mea ad omnes euripidis.
Essent invenire cu nec, sit cu commodo efficiendi. Ex sed dico causae. Wisi urbanitas cu eum. Laboramus efficiendi no sed, justo latine albucius ad eum. Pro eros euripidis id. Sit cetero aliquam delicata an, duo cu tota delenit.
Quo regione reformidans an, in dicit antiopam qui, omnis percipitur eum ad. Esse unum moderatius quo an, sanctus imperdiet elaboraret pro ex. Per fuisset mentitum ex. Ea pri saepe evertitur disputando. Audire maiorum consetetur no pri, his an eirmod honestatis.
Pro case mazim in, eos no esse graeco causae, quo liber prodesset deterruisset at. Cu agam ceteros reprehendunt pri. Pro ne agam fugit, assum putent te nam. Cum libris facilisi eu, suas nemore cu sed. Id option vivendum pro. In duo soleat ceteros detracto, qui cu quem officiis, eam eu solet audire dissentiunt. Te vis dicunt civibus placerat, quem cetero ne vix.
Fierent periculis at mel, viris eirmod constituam in eum. Cum diam consectetuer ea. Duo purto pertinax petentium in, ex veri atomorum consetetur pro. Ne eos equidem dolorem epicuri, sed prima consulatu in. Erat invidunt legendos ex duo. Ius suas principes dissentias an, eu vel dicat adipisci ocurreret. Ut summo dictas appellantur vis.
Nec ad nobis tritani molestiae. Ei vis erant corrumpit comprehensam. Has ad vero quaeque corpora, volumus ullamcorper eos ut. Saepe explicari per in, ceteros iracundia vituperata ea eos. Duo cu autem partem facilisi, eum at munere complectitur.
Cu nam virtute fabulas graecis, graece complectitur in est. Cum quot imperdiet ut. Et est consul dolorem theophrastus. Mazim delicatissimi eos ad. No quo dicat insolens consetetur, idque aliquando vis in, his et minimum deleniti. In modus petentium eum, id graece everti vim. Ut vocibus praesent est, cu pri modo vivendo consetetur, inani vocent antiopam usu et.
Ne est recusabo democritum, dicat melius noluisse ex sea. Mea ad posse atomorum, in sed facilis concludaturque. No veri sonet mel. Ornatus delenit an qui, usu te saepe utinam vivendum, idque urbanitas pro ex. Quo ludus erroribus ea. Ea saperet atomorum honestatis sit. Eu essent impedit deseruisse ius, ex dicit mandamus his, eu mel prompta qualisque necessitatibus.
Pri solet probatus at. Quo sint alienum ne. Reque malis sonet id mel, has enim mundi alienum.</p>
</div>
</html>
请务必阅读我在 CSS 中添加的注释,以便了解问题所在以及文件中所有内容的含义。不过,我相当肯定您几乎会立即注意到其中一种令人讨厌的副作用。
我的平滑滚动按钮实现的 CSS 和 HTML如下。
// For smooth scrolling
@media (prefers-reduced-motion: no-preference) {
html {
scroll-behavior: smooth;
}
}
.back-to-top-wrapper {
position: absolute;
top: 100vh; // How far should the scroll travel prior to the link appearing
right: 0.25rem;
bottom: -5em;
width: 3em;
}
.back-to-top-link {
position: fixed;
position: sticky;
margin-left: 4rem;
top: calc(100vh - 5rem);
display: inline-block;
text-align: center;
width: 3rem;
height: 3rem;
border-radius: 50%;
padding: 0.25rem;
border: 1px solid #000022;
background-color: #77E4F9;
}
<div class="back-to-top-wrapper">
<a href="#top" class="back-to-top-link">^</a>
</div>
您可以使用scroll-behavior: smooth;
onhtml
元素以及div
位于顶部的具有特定 id 的元素。您可以使用指向该特定 IDa
的属性。href
#top {
position: absolute;
top: 0;
left: 0;
}
body {
height: 500vh;
/*To simulate long page*/
}
html {
scroll-behavior: smooth;
}
.topBtn {
position: fixed;
bottom: 2%;
right: 2%;
}
<div id="top">
</div>
<div class="section">Top most Section</div>
<a href="#top" class="topBtn">Top</a>