0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

網頁側邊浮動按鈕怎麼做:LINE、電話、回到頂端、分享,純 HTML+CSS

網頁側邊浮動按鈕怎麼做:LINE、電話、回到頂端、分享,純 HTML+CSS 封面

客人看完服務介紹,想問價格,卻要捲回最上面找聯絡方式,很多人就這樣離開了。在畫面邊緣放一組一直跟著畫面走的按鈕,LINE、電話隨時點得到,是公司網站很划算的小功能。

這篇做一組常見的浮動按鈕:

  • 電腦版:固定在畫面右側中間,直向排列。
  • 手機版:變成畫面最下方的一排按鈕,手指好按。
  • 回到頂端:往下捲一段才出現。
  • 分享:手機上叫出系統的分享選單,電腦上沒有分享功能時改成複製網址。

HTML

HTML
<nav class="float-buttons" aria-label="快速聯絡">
  <a class="float-btn float-line" href="https://line.me/R/ti/p/@你的LINE官方帳號ID" target="_blank" rel="noopener">
    <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 5h16v11H10l-5 4v-4H4z"/></svg>
    <span>LINE</span>
  </a>
  <a class="float-btn float-phone" href="tel:+886212345678">
    <svg viewBox="0 0 24 24" aria-hidden="true"><rect x="7" y="2" width="10" height="20" rx="2"/><path d="M11 18h2"/></svg>
    <span>電話</span>
  </a>
  <button class="float-btn float-share" type="button">
    <svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="M8.7 13.5l6.6 4M15.3 6.5l-6.6 4"/></svg>
    <span>分享</span>
  </button>
  <a class="float-btn float-top" href="#">
    <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg>
    <span>頂端</span>
  </a>
</nav>

要改的地方:

  • LINE 連結:官方帳號用 https://line.me/R/ti/p/@ 後面接帳號 ID(ID 開頭的 @ 要保留)。在 LINE 官方帳號的後台可以找到「加入好友」的網址,直接貼過來最保險。
  • 電話:tel: 後面用國際格式,台灣是 +886,區碼去掉開頭的 0。例如 02-1234-5678 寫成 tel:+886212345678,手機一點就會撥號。
  • 圖示是用幾條線畫的簡單 SVG,顏色會跟著文字顏色走,不用另外準備圖片。每個按鈕都保留文字,客人一看就知道是什麼,報讀軟體也念得出來。

CSS

CSS
.float-buttons {
  position: fixed;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 999;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.float-btn {
  --float-bg: #1e8a8a;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 64px;
  height: 64px;
  padding: 0;
  border: 0;
  border-radius: 16px;
  background: var(--float-bg);
  color: #fff;
  font: inherit;
  font-size: 13px;
  text-decoration: none;
  cursor: pointer;
  box-shadow: 0 4px 12px rgb(0 0 0 / 20%);
}

.float-btn svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.float-line { --float-bg: #2e9e4f; }
.float-phone { --float-bg: #ff6b35; }

/* 有些佈景主題會幫所有 <button> 設顏色,加 !important 才蓋得過 */
.float-buttons .float-btn {
  background-color: var(--float-bg) !important;
  color: #fff !important;
}

.float-btn:hover { filter: brightness(1.1); }
.float-btn:focus-visible { outline: 3px solid #ffd54a; outline-offset: 2px; }
.float-btn:focus:not(:focus-visible) { outline: none; }

.float-top {
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s, visibility 0.3s;
}
.float-top.is-visible {
  visibility: visible;
  opacity: 1;
}

@media (max-width: 767px) {
  .float-buttons {
    top: auto;
    right: 0;
    bottom: 0;
    left: 0;
    transform: none;
    flex-direction: row;
    gap: 0;
    padding-bottom: env(safe-area-inset-bottom);
    background: #1e8a8a;
  }
  .float-btn {
    flex: 1;
    width: auto;
    height: 56px;
    border-radius: 0;
    box-shadow: none;
  }
  body {
    padding-bottom: calc(56px + env(safe-area-inset-bottom));
  }
}

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

@media print {
  .float-buttons { display: none; }
}

重點說明:

  • position: fixed 讓按鈕固定在畫面上,捲動時不會跟著跑走。top: 50% 加 translateY(-50%) 是垂直置中。
  • 按鈕顏色用 CSS 變數 --float-bg,每顆按鈕只要改變數就換色。
  • 分享是 <button>,佈景主題可能會幫它「加料」。我們在 Twenty Twenty-One 測試時,分享按鈕被佈景主題改成別的顏色、多了一大圈內距,點完還出現虛線框。所以 CSS 裡把 padding 歸零,顏色加上 !important,滑鼠點完不顯示外框(用鍵盤 Tab 選到時才顯示黃色外框)。
  • 按鈕 64px,手機底部列 56px 高。手指點的按鈕至少要 44px 左右,太小很容易點錯。
  • 手機版變成底部按鈕列,並且在 body 下方留出同樣的高度,網頁最下面的頁尾才不會被按鈕蓋住。
  • env(safe-area-inset-bottom) 是 iPhone 底部橫條的高度,按鈕列會往上讓開。這個值要在網頁的 viewport 設定加上 viewport-fit=cover 才會有數字,沒有加的話就是 0,不影響其他功能。
  • 回到頂端平常是隱藏的,加上 is-visible 這個 class 才淡入。
  • scroll-behavior: smooth 讓「回到頂端」平滑捲上去;開了「減少動態效果」的人則是直接跳到頂端。
  • 列印網頁時把按鈕藏起來。

JavaScript:回到頂端、分享

JavaScript
const floatTop = document.querySelector('.float-top');
const floatShare = document.querySelector('.float-share');

// 往下捲超過 600px 才顯示「回到頂端」
window.addEventListener('scroll', () => {
  floatTop.classList.toggle('is-visible', window.scrollY > 600);
}, { passive: true });

// 回到頂端:用程式捲上去,網址後面不會多一個 #
floatTop.addEventListener('click', (e) => {
  e.preventDefault();
  window.scrollTo({ top: 0 });
});

// 手機叫出系統分享選單;沒有分享功能的瀏覽器改成複製網址
floatShare.addEventListener('click', async () => {
  const data = { title: document.title, url: location.href };
  if (navigator.share) {
    try {
      await navigator.share(data);
    } catch (e) {
      // 使用者按了取消,不用處理
    }
    return;
  }
  try {
    await navigator.clipboard.writeText(location.href);
    floatShare.querySelector('span').textContent = '已複製';
    setTimeout(() => { floatShare.querySelector('span').textContent = '分享'; }, 2000);
  } catch (e) {
    prompt('請複製這個網址:', location.href);
  }
});
  • 回到頂端:連結本身是 href="#",沒有 JavaScript 也能回到最上面;有 JavaScript 時改用程式捲動,網址才不會多出一個 #,客人之後分享出去的網址比較乾淨。捲動的速度照 CSS 的 scroll-behavior,開了「減少動態效果」就直接跳上去。
  • 分享:手機瀏覽器大多支援 navigator.share,按下去會出現 LINE、Facebook、訊息等選單,讓客人自己選要傳到哪裡,不用每個平台各放一顆按鈕。
  • 電腦上不支援的瀏覽器,改成把網址複製到剪貼簿,按鈕上的字暫時變成「已複製」。連複製都不允許時(例如沒有用 https 的網站),才跳出視窗讓人自己複製。
  • passive: true 告訴瀏覽器這段程式不會阻止捲動,手機捲動比較順。

放進 WordPress

  1. CSS:貼到 外觀 → 自訂 → 附加的 CSS;區塊佈景主題到 外觀 → 編輯器 → 樣式,在「更多」選單裡找「附加的 CSS」。
  2. HTML 和 JavaScript:用 wp_footer 輸出在每一頁的最下方。放在子佈景主題的 functions.php,或用 Code Snippets 外掛新增一段:
PHP
add_action( 'wp_footer', function () {
	?>
	<!-- 這裡貼上面的 HTML -->
	<script>
	// 這裡貼上面的 JavaScript
	</script>
	<?php
} );

把兩段註解換成上面的 HTML 和 JavaScript 就完成了。我們在測試網站的 Twenty Twenty-Five 和 Twenty Twenty-One 都放過,電腦版在右側、手機版在底部,回到頂端和分享都正常。

使用時要注意

  • 不要擋到內容。電腦版放在右側中間,螢幕比較窄的筆電上可能會蓋到文章右邊的字,可以把按鈕縮小,或在 1200px 以下就改成底部列(把 767px 改大)。
  • 不要和其他浮動的東西撞在一起。網站如果已經有聊天機器人、Cookie 同意視窗,位置要錯開。
  • 按鈕不要太多。三、四個最清楚,全部社群都放上去,客人反而不知道要點哪個。
  • LINE、電話要真的有人回。按鈕放得再好,打不通、已讀不回,客人一樣會走。

延伸閱讀

讓客人「想問的時候馬上找得到你」,是網站帶來詢問最直接的方法。正威網路行銷是 25 年經驗的基隆網頁設計工作室,網站會依照你的接單方式規劃聯絡動線,台北與全台客戶也歡迎來聊聊。

分享這篇文章

返回文章列表更多「CSS語法代碼」文章

發表留言

還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。

讓我們一起打造
您的專屬網站!