css position:sticky的嘗試

来源:https://www.cnblogs.com/handboy/archive/2019/12/08/12004343.html
-Advertisement-
Play Games

前言 sticky這種設計效果是經常出現的,比如陶寶右側的工具欄,當我們向下滾動到它的位置時,它就會黏住頂部跟隨滾動,類似position: fixed的效果,只不過它的觸發條件是當我們滾動到所在位置時,才觸發fixed的效果的: 我們經常的做法是用JavaScript去監聽滾動事件然後進行處理,比 ...


前言

sticky這種設計效果是經常出現的,比如陶寶右側的工具欄,當我們向下滾動到它的位置時,它就會黏住頂部跟隨滾動,類似position: fixed的效果,只不過它的觸發條件是當我們滾動到所在位置時,才觸發fixed的效果的:

我們經常的做法是用JavaScript去監聽滾動事件然後進行處理,比如會用到類似stickyjs的一些插件 http://stickyjs.com/ ,從2017年左右開始css中的position:sticky就是為了這中設計而誕生的,今天我們來認識一下它。

相容性

差不多兩年時間了,相容性還算可以的,對於那種面向技術人員,後臺管理人員的項目,我倒是覺得可以用上,畢竟他們只是升級一下瀏覽器不僅能體驗更好的效果,也能降低碼農的工作量:

https://caniuse.com/#search=position%3A%20sticky

學習使用

我們來實現陶寶右側的效果,就特別簡單了,沒什麼好學的,直接設置就行了:

.sidebar {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}

簡單例子: https://jsbin.com/vivixezule/edit?html,css,output

還有一種設計效果,比如疊加效果也能實現,還有很多效果,具體大家可以根據sticky特性自由發揮: 疊加效果: https://jsbin.com/fegiqoquki/edit?html,css,output

特性

position:sticky有個非常重要的特性,那就是sticky元素效果完全受制於父級元素們們們。如果你發現你設置了不起效果,可以檢查以下兩個原因:

  1. 父級元素不能有任何overflow:visible以外的overflow設置,否則沒有效果,因為改變了滾動容器(即使沒有出現滾動條)。
  2. 父級元素高度過小,根本不夠stikcy塊的滾動,就會沒有效果。

嘮叨

近幾年Web開發語言都在互相協作著,這種協作是一種促進,有時候我們總調侃學不動了,一直在變化,可是哪知道這些變化反而解決了我們的痛點,也許你習慣了,覺得不是痛點不去學,但是不能否認你學會之後,你會說以前太痛了,再也不想回去了,就像學會vue,react, angular 等,再回去jquery真的覺得有點痛苦了,但你不想學之前,總覺得jQuery不怎麼痛,你習慣了。

前後端的分離讓 JS接替了部分後端語言的工作,比如數據綁定交互等;css接替了部分JS工作,比如動畫和各種常見設計效果等,各種語言都在共同協作著,只是為瞭解決碼農痛點,我們能做的就是抽空瞄一眼,試一試,學一學 ,利永遠大於弊,學習的時間不僅可以為你大大的節省開發時間,更會讓你擁有愉悅的編程體驗

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 我個人覺得,中間件的部署與使用是非常難記憶的;也就是說,如果兩次使用中間件的時間間隔比較長,那基本上等於要重新學習使用。 所以,我覺得學習中間件的文章,越詳細越好;因為,這對作者而言也是一份珍貴的備忘資料。 Consul簡介 Consul一個什麼,我想大家通過搜索引擎一定可以搜索到;所以,我就 ...
  • #重啟docker服務應用,不自動開啟docker容器 docker update --restart=no (docker容器CONTAINER ID 或 docekr容器NAMES) #重啟docker服務應用,自動開啟docker容器 docker update --restart=alway ...
  • [TOC] 一、安裝前準備 1.雲盤下載安裝包以及客戶端工具 下載地址: "MySQL 5.7.28 + SQLyog" 2.官網下載安裝包 下載地址: "https://dev.mysql.com/downloads/installer/" 二、安裝步驟 1.執行安裝包 2.選擇安裝類型 Deve ...
  • 1.下載安裝包 下載地址 : http://download.redis.io/releases/,去裡面找對應的版本下載 例如 wget http://download.redis.io/releases/redis-5.0.0.tar.gz 2.解壓 tar -zxf redis-5.0.0.t ...
  • 資料庫操作中,我們需要的結果可能在兩張表甚至多張表中,這時候就需要表連接操作,多表查詢中的各個表之間的欄位會存在連接,比如主外鍵關聯,可以使用主外鍵來關聯每張表。表連接方式有以下幾種: JOIN: 如果表中有至少一個匹配,則返回行 LEFT JOIN(左連接): 即使右表中沒有匹配,也從左表返回所有 ...
  • --根據關鍵字查找包含此關鍵字的存儲過程名SELECT DISTINCT t1.name FROM SYSOBJECTS t1, SYSCOMMENTS t2WHERE t1.id = t2.idAND t1.xtype = 'P'AND t2.text LIKE '%關鍵字%' ...
  • who?(游標是什麼?)游標(cursor)官方定義:是系統為用戶開通的一個數據緩衝區,存放sql執行結果。每個游標區都有一個名字,用戶可以通過sql語句逐一從游標中獲取記錄,並賦值給變數,交由主語言進一步處理;個人理解:感覺游標和指針相似,指定結果集後一行行執行; why?(為什麼要學習游標)游標 ...
  • CREATE TABLE #TEST(A VARCHAR(10) NULL,B VARCHAR(MAX) NULL) INSERT INTO #TESTSELECT 'A','A001'UNION ALLSELECT 'A','A002'UNION ALLSELECT 'A','A003'UNION ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...