網頁Top按鈕 (網頁回到頂端)
參考原文:https://ezbox.idv.tw/131/back-to-top-button-without-images/
最近剛好在做一個網站練習專案,發現當頁面內容很長的時候很不好操作,常常滑鼠滾來滾去的,就查了一下有沒有簡單快速加入 website 的UI。當然類似的UI在很多第三方套件上有更多更好看的選擇,不過相對的也會帶入很多複雜的程式碼以及相對大的檔案內容,造成頁面讀取的負荷,找到的這個方式可以以最簡單的方式建立功能。
首先先確定是要用使用HTML+CSS+JQuery的方式來製作UI
如果網站原本就有使用 jQuery 甚至也有使用 Bootstrap 4 都可以直接套用,若原本沒有使用 jQuery 則需要先導入。
JQuery導入方法
首先要在HTML加入一行宣告
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
提供 JavaScript 的語法,可直接放在 head 裡面
<script>
$(function(){
$('#BackTop').click(function(){
$('html,body').animate({scrollTop:0}, 333);
});
$(window).scroll(function() {
if ( $(this).scrollTop() > 300 ){
$('#BackTop').fadeIn(222);
} else {
$('#BackTop').stop().fadeOut(222);
}
}).scroll();
});
</script>
尺寸定義這邊是使用 rem 來設定,在預設的情況下寬高分別是 40px、48px 及 56px
CSS語法選擇一種尺寸加入即可
40px
.toTop-arrow {
width: 2.5rem;
height: 2.5rem;
padding: 0;
margin: 0;
border: 0;
border-radius: 33%;
opacity: 0.6;
background: #000;
cursor: pointer;
position:fixed;
right: 1rem;
bottom: 1rem;
display: none;
}
.toTop-arrow::before, .toTop-arrow::after {
width: 18px;
height: 5px;
border-radius: 3px;
background: #f90;
position: absolute;
content: "";
}
.toTop-arrow::before {
transform: rotate(-45deg) translate(0, -50%);
left: 0.5rem;
}
.toTop-arrow::after {
transform: rotate(45deg) translate(0, -50%);
right: 0.5rem;
}
.toTop-arrow:focus {outline: none;}
48px
.toTop-arrow {
width: 3rem;
height: 3rem;
padding: 0;
margin: 0;
border: 0;
border-radius: 33%;
opacity: 0.6;
background: #000;
cursor: pointer;
position:fixed;
right: 1rem;
bottom: 1rem;
display: none;
}
.toTop-arrow::before, .toTop-arrow::after {
width: 25px;
height: 6px;
border-radius: 3px;
background: #f90;
position: absolute;
content: "";
}
.toTop-arrow::before {
transform: rotate(-45deg) translate(0, -50%);
left: 0.42rem;
}
.toTop-arrow::after {
transform: rotate(45deg) translate(0, -50%);
right: 0.42rem;
}
.toTop-arrow:focus {outline: none;}
56px
.toTop-arrow {
width: 3.5rem;
height: 3.5rem;
padding: 0;
margin: 0;
border: 0;
border-radius: 33%;
opacity: 0.6;
background: #000;
cursor: pointer;
position:fixed;
right: 1rem;
bottom: 1rem;
display: none;
}
.toTop-arrow::before, .toTop-arrow::after {
width: 31px;
height: 7px;
border-radius: 3px;
background: #f90;
position: absolute;
content: "";
}
.toTop-arrow::before {
transform: rotate(-45deg) translate(0, -50%);
left: 0.4rem;
}
.toTop-arrow::after {
transform: rotate(45deg) translate(0, -50%);
right: 0.4rem;
}
.toTop-arrow:focus {outline: none;}*/
另外附上參數說明:
按鈕大小:.toTop-arrow 中的 width 及 height
按鈕顏色:.toTop-arrow 中的 background 搭配 opacity 設定透明度
按鈕外型:.toTop-arrow 中的 border-radius,50% 變成圓形按鈕,0% 則是正方形
浮動位置:.toTop-arrow 中的 right 及 bottom
箭頭顏色:.toTop-arrow::before, .toTop-arrow::after 中的 background
箭頭粗細:.toTop-arrow::before, .toTop-arrow::after 中的 height: 7px; 及 width: 31px;
箭頭位置:.toTop-arrow::before 的 left 及 .toTop-arrow::after 的 right,及兩者的 translate(0, -50%)
按鈕顏色:.toTop-arrow 中的 background 搭配 opacity 設定透明度
按鈕外型:.toTop-arrow 中的 border-radius,50% 變成圓形按鈕,0% 則是正方形
浮動位置:.toTop-arrow 中的 right 及 bottom
箭頭顏色:.toTop-arrow::before, .toTop-arrow::after 中的 background
箭頭粗細:.toTop-arrow::before, .toTop-arrow::after 中的 height: 7px; 及 width: 31px;
箭頭位置:.toTop-arrow::before 的 left 及 .toTop-arrow::after 的 right,及兩者的 translate(0, -50%)
留言
張貼留言