整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          學會使用 CSS 自定義滾動條,能讓你做的產品更有用戶體驗

          定義滾動條現在越來越流行,很值得研究一翻。為什么需要自定義滾動?瀏覽器的默認的滾動條讓UI在多個操作系統中看起來不一致,使用定義滾動我們可以統一風格。

          我一直對如何在CSS中定制滾動條很感興趣,但一直沒有機會這樣做。今天,我就記錄一下自己的學習過程。

          簡介

          首先需要介紹一下滾動條的組成部分。滾動條包含 trackthumb,如下圖所示:

          track是滾動條的基礎,其中的 thumb是用戶拖動支頁面或章節內的滾動。

          還有一件重要的事情要記住,滾動條可以水平或垂直地工作,這取決于設計。另外,在一個多語言網站上工作時,這一點也會發生變化,該網站在從左到右(LTR)和從右到左(RTL)兩個方向上工作。

          自定義滾動條設計

          擁有一個自定義的滾動條曾經是webkit的專利,所以Firefox和IE被排除在游戲之外。我們有一種新的語法,只在Firefox中使用,當它被完全支持時,將使我們的工作更容易。我們先看一下舊的Webkit語法,然后再介紹新的語法。

          舊的語法

          滾動條的寬度

          首先,我們需要定義滾動條的大小。這可以是垂直滾動條的寬度,也可以是水平滾動條的高度

          .section::-webkit-scrollbar {
              width: 10px;
          }
          

          有了這一設置,我們就可以設置滾動條本身的樣式。

          滾動條 track

          這代表了滾動條的基礎。我們可以通過添加backgroundshadowsborder-radiusborder來對它進行造型。

          .section::-webkit-scrollbar-track {
              background-color: darkgrey;
          }
          

          滾動條 thumb

          準備好了滾動條的基礎后,我們就需要對滾動條的thumb進行樣式設計。這很重要,因為用戶可能會拖動這個thumb與滾動條進行交互。

          .section::-webkit-scrollbar-thumb {
              box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
          }
          

          至此,我們已經介紹了CSS中定制滾動條的老方法。讓我們探索一下新的語法。

          新語法

          Scrollbar Width

          正如它所說的,這定義了滾動條的寬度,有兩個值autothin。不好的地方就是,我們不能像webkit的語法那樣定義一個具體的數字。

          .section {
            scrollbar-width: thin;
          }
          

          Scrollbar Color

          有了這個屬性,我們可以為滾動條 trackthumb定義成對值的顏色。

          .section {
              scrollbar-color: #6969dd #e0e0e0;
              scrollbar-width: thin;
          }
          

          盡管這個新語法很簡單,但它是有限制的。我們只能添加顏色。我們不能添加shadows``、gradientsrounded`,或任何類似的東西,我們被允許定制的只是顏色。

          指定自定義滾動條的范圍

          要知道的一個重要問題是,在哪里定制滾動條。你希望樣式是通用的,對網站上的所有滾動條都有效嗎?還是你只想讓它用于特定的部分?

          使用舊的語法,我們可以編寫選擇器,而不必將它們附加到元素上,它們將應用于所有可滾動的元素。

          ::-webkit-scrollbar {
              width: 10px;
          }
          
          ::-webkit-scrollbar-track {
              background-color: darkgrey;
          }
          
          ::-webkit-scrollbar-thumb {
              box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
          }
          

          如果你想只適用于一個特定的部分,你需要在選擇器之前附加元素。

          .section::-webkit-scrollbar {
              width: 10px;
          }
          
          .section::-webkit-scrollbar-track {
              background-color: darkgrey;
          }
          
          .section::-webkit-scrollbar-thumb {
              box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
          }
          

          對于新的語法,它幾乎是一樣的。我注意到的是,如果你想要一個通用的樣式,它應該被應用于<html>元素,而不是<body>

          html {
              scrollbar-color: #6969dd #e0e0e0;
              scrollbar-width: thin;
          }
          

          我嘗試為<body>添加上面的內容,但它沒有像預期的那樣工作。

          現在我們知道了新舊語法的工作原理,接著,我們開始定制一些滾動條設計。

          自定義滾動條設計

          例1

          在研究定制滾動條之前,值得討論一下Mac OS中的默認樣式。下面是它的外觀。

          • 滾動條track 的左右兩邊都有邊框,背景色為純色。
          • 滾動條thumb是圓形的,左右兩邊都有空間。

          對于Windows,它有點不同。

          下面是我們根據上面的模擬圖來定制滾動條。

          .section::-webkit-scrollbar {
              width: 16px;
          }
           
          .section::-webkit-scrollbar-track {
              background-color: #e4e4e4;
              border-radius: 100px;
          }
           
          .section::-webkit-scrollbar-thumb {
              background-color: #d4aa70;
              border-radius: 100px;
          }
          

          trackthumb添加border-radius是必要的,因為它在::webkit-scrollbar上不起作用。

          在新的語法中,我們不能調整滾動條的寬度,唯一能做的的是改變 trackthumb的背景顏色。

          .section {
              scrollbar-color: #D4AA70 #e4e4e4;
          }
          

          例2

          對于這個例子,設計有點重,因為它包含漸變和陰影。我們可以應用內部陰影和漸變來模仿這種效果。來看看怎么做!

          .section::-webkit-scrollbar-thumb {
              background-image: linear-gradient(180deg, #D0368A 0%, #708AD4 99%);
              box-shadow: inset 2px 2px 5px 0 rgba(#fff, 0.5);
              border-radius: 100px;
          }
          

          示例地址:https://codepen.io/shadeed/pen/VwpOReG

          例3

          我們還可以為 thumbtrack添加邊框,這可以幫助我們處理一些棘手的設計。

          .section::-webkit-scrollbar-thumb {
              border-radius: 100px;
              background: #8070D4;
              border: 6px solid rgba(0,0,0,0.2);
          }
          

          基于同樣的例子,我們可以重置頂部和底部邊界為零,這樣thumb獲得一個有趣的效果。注意thumb頂部和底部的那些小元素。

          示例地址:https://codepen.io/shadeed/pen/qBrGvOx

          可以添加懸停效果嗎?

          我們可以為新舊語法的滾動條thumb添加懸停效果。

          /* 舊語法 */
          .section::-webkit-scrollbar-thumb:hover {
              background-color: #5749d2;
          }
          
          /* 新語法 */
          .section {
              scrollbar-color: #d4aa70 #e4e4e4;
              transition: scrollbar-color 0.3s ease-out;
          }
          
          .section:hover {
              scrollbar-color: #5749d2;
          }
          

          需要時顯示滾動條

          創建一個可滾動的元素是可以通過給overflow屬性添加一個除visible以外的值。建議使用auto關鍵字,因為它只在內容超過其容器時才會顯示滾動條。

          .section {
              overflow-y: auto;
          }
          

          可訪問性問題

          在定制滾動條設計時,請記住在 thumbtrack之間要有良好的對比,這樣它就容易被用戶注意。

          考慮一下下面這個自定義滾動條的 "壞 "例子。

          thumb 的顏色幾乎看不出來。這對用戶來說不是好事,因為如果他們習慣于通過thumb 滾動,這將增加他們的難度。


          作者:ishadeed 譯者:前端小智 來源:ishadeed

          原文:https://ishadeed.com/article/custom-scrollbars-css/

          情介紹


          文章目錄

          • 二、網站描述

          • 網站介紹

          • 四、網站演示

          • TML結構代碼

          • 如何讓學習不再盲目


          • 七、更多干貨

          題目


          HTML靜態網頁設計作業使用dreamweaver制作,采用DIV+CSS布局,共有多個頁面,首頁使用CSS排版比較豐富,色彩鮮明有活力。頂部導航及底部區域背景色為100%寬度,主體內容區域寬度

          一套優質的網頁設計應該包含 (具體可根據個人要求而定)


          1. 頁面分為頁頭、菜單導航欄(最好可下拉)、中間內容板塊、頁腳四大部分。

          2. 所有頁面相互超鏈接,可到三級頁面,有5-10個頁面組成。

          3. 頁面樣式風格統一布局顯示正常,不錯亂,使用Div+Css技術。

          4. 菜單美觀、醒目,二級菜單可正常彈出與跳轉。

          5. 要有JS特效,如定時切換和手動切換圖片輪播。

          6. 頁面中有多媒體元素,如gif、視頻、音樂,表單技術的使用。

          7. 頁面清爽、美觀、大方,不雷同。。

          8. 不僅要能夠把用戶要求的內容呈現出來,還要滿足布局良好、界面美觀、配色優雅、表現形式多樣等要求。

          <h

          網站布局方面:計劃采用目前主流的、能兼容各大主流瀏覽器、顯示效果穩定的浮動網頁布局結構。

          網站程序方面:計劃采用最新的網頁編程語言HTML5+CSS3+JS程序語言完成網站的功能設計。并確保網站代碼兼容目前市面上所有的主流瀏覽器,已達到打開后就能即時看到網站的效果。


          網站素材方面:計劃收集各大平臺好看的圖片素材,并精挑細選適合網頁風格的圖片,然后使用PS做出適合網頁尺寸的圖片。

          網站文件方面:網站系統文件種類包含:網頁結構文件、css網頁樣式文件、js網頁特效文件、images網頁圖片文件;


          網頁編輯方面:網頁作品代碼簡單,可使用任意HTML編輯軟件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html編輯軟件進行運行及修改編輯等操作)。
          其中:
          (1)html文件包含:其中index.html是首頁、其他html為二級頁面;


          (2) css文件包含:css全部頁面樣式,文字滾動, 圖片放大等;
          (3) js文件包含:js實現動態輪播特效, 表單提交, 點擊事件等等(個別網頁中運用到js代碼)。


          <h



          <h

          HTML結構代碼

          <!--
          * @Author: your name
          * @Date: 2022-02-16 22:58:33
          * @LastEditTime: 2022-02-16 22:58:54
          * @LastEditors: your name
          * @Description: 打開koroFileHeader查看配置 進行設置:
          * @FilePath: 北京黎紅學院 網頁成品4頁面\index.html

          CSS樣式代碼

          @charset "utf-8";body{ background:#fff;}.head{ width:100%; height:200px; margin:auto; background: url(../images/head_bj.png) top repeat-x #5d644a;}.head_in{ width:930px; height:200px; margin:auto; background: url(../images/head.png) top repeat-x #5d644a;}.head h1{ font-size:56px; line-height:158px; color:#900; text-align:center;}.nav{width:930px; height:40px; border:1px solid #646a52; margin:auto; background:#4c4d3d; }.nav ul{margin:auto;}.nav li{ height:30PX; float:left; padding:5px 20px;}.nav li a{ font-size:24px; color:#ccc; line-height:30px;}.nav li a:hover{ color:#362f2d;}.nav li:hover{ background:#fff}.nav li:hover a{ color:#362f2d;}.center{ text-align:center}.main{ width:100%; height:auto; min-height:500px; margin:auto;}.main_nav{width:940px; height:auto; margin:10px auto;}.main_nav li{ float:left; margin:10px; }.main_con{ width:100%; height:auto; min-height:300px; margin:auto;padding-top:20px; background:#006699;}.main_ad{ width:920px; height:260px; margin:auto; }.main_news{width:900px; height:auto; margin:auto; margin-top:10px; padding-bottom:20px;}.main_news h2{ font-size:26px; line-height:38px; color:#fff;}.main_news p{ font-size:14px; line-height:22px; color:#fff;}.main_news ul{padding-left:20px; }.main_news li{ padding-left:20px;}.main_news li a{ font-size:18px; line-height:32px; color:#fff; }.main_news li a:hover{ font-size:18px; line-height:32px; color:#ffd9b4; }.main_des{width:900px; height:auto; margin:auto; padding-bottom:50px; }.main_des h1{ font-size:28px; line-height:68px; color:#362f2d; text-align:center;}.main_des p{ font-size:16px; line-height:28px; color:#333; text-indent:2em;}.main_zhanshi{width:920px; height:auto; margin:auto;}.main_zhanshi li{ float:left; margin:10px;}.main_zhanshi img{ width:280px; height:200px;}.foot{ width:100%; height:90px; background:#600; margin:auto;text-align:center;}.foot_in{ width:960px; height:90px; padding-top:15px;margin:auto;text-align:center;}.foot_in p{ font-size:16px; line-height:26px; color:#fff; }*{ margin:0; padding:0; font-family:黑體; }.clear{ clear:both;}.fl{ float:left;}.fr{ float:right;}img{ border:none;}a{ text-decoration:none;}a:hover{ text-decoration:none;}li{ list-style-type:none;}.p10{ padding:10px;}.main .main_con .main_news h2 a {color: #FFF;}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374<h

          第一、帶著目標去學習,無論看書報課還是各種線下活動。
          首先要明確自己的學習目標是什么,是想解決什么問題,實現怎樣的目標。

          第二、學習要建立個人知識體系
          知識是學不完的,書籍是浩如煙海的。我們盡情徜徉其中的時候,千萬不要被海水淹死,沒有自我了。在學習過程中,我們會發現每一個知識點都是有她的邊界和背景的,我們要善于歸納整理知識

          第三、學到了就要用到

          有時,我們一天下來感覺學到了很多干貨,那么我們一定要將這些知識點和實際工作和生活聯系起來。知識和實踐相互聯系靠攏。愛學習是一件好事,但只有會學習的人,才有價值。

          .定位

          • 定位是一種更加高級的布局手段
            • 通過定位可以將元素擺放到頁面 - 使用position屬性來設置定位可選值:
            • static 默認值,元素是靜止的沒有開啟定位
            • relative 開啟元素的相對定位
            • absolute 開啟元素的絕對定位
            • fixed 開啟元素的固定定位
            • sticky 開啟元素的粘滯定位
            • 通過定位可以將元素擺放到頁面的任意位置

          1.1 相對定位

          • 當元素的position屬性值設置為relative時則開啟了元素的相對定位
          • 相對定位的特點:
            • 1.元素開啟相對定位以后,如果不設置偏移量元素不會發生任何的變化
            • 2.相對定位是參照于元素在文檔流中的位置進行定位的
            • 3.相對定位會提升元素的層級
            • 4.相對定位不會使元素脫離文檔流
            • 5.相對定位不會改變元素的性質塊還是塊,行內還是行內
          position: relative;

          1.2 絕對定位

          • 當元素的position屬性值設置為absolute時,則開啟了元素的絕對定位
          • 絕對定位的特點:
            • 1.開啟絕對定位后,如果不設置偏移量元素的位置不會發生變化
            • 2.開啟絕對定位后,元素會從文檔流中脫離
            • 3.絕對定位會改變元素的性質,行內變成塊,塊的寬高被內容撐開
            • 4.絕對定位會使元素提升一個層級
            • 5.絕對定位元素是相對于其包含塊進行定位的
          • 包含塊( containing block )
            • 正常情況下:包含塊就是離當前元素最近的祖先塊元素
          • 絕對定位的包含塊:
            • 包含塊就是離它最近的開啟了定位的祖先元素,如果所有的祖先元素都沒有開啟定位則根元素就是它的包含塊
          position: absolute;

          1.3 固定定位

          • 將元素的position屬性設置為fixed則開啟了元素的固定定位
          • 固定定位也是一種絕對定位,所以固定定位的大部分特點都和絕對定位一樣唯一不同的是固定定位永遠參照于瀏覽器的視口進行定位固定定位的元素不會隨網頁的滾動條滾動
          • position: fixed;

          1.4 粘滯定位

          • 當元素的position屬性設置為sticky時則開啟了元素的粘滯定位
          • 粘滯定位和相對定位的特點基本一致,不同的是粘滯定位可以在元素到達某個位置時將其固定
          • position: sticky;

          1.5 絕對定位元素的布局

          • 水平布局left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含塊的內容區的寬度
            • 當我們開啟了絕對定位后:水平方向的布局等式就需要添加left 和 right 兩個值此時規則和之前一樣只是多添加了兩個值: 當發生過度約束: 如果9個值中沒有 auto 則自動調整right值以使等式滿足 如果有auto,則自動調整auto的值以使等式滿足
            • 可設置auto的值 margin width left right
            • 因為left 和 right的值默認是auto,所以如果不指定left和right
            • 則等式不滿足時,會自動調整這兩個值
          • 垂直方向布局的等式的也必須要滿足top + margin-top/bottom + padding-top/bottom + border-top/bottom + height = 包含塊的高度

          1.6 元素的層級

          • 對于開啟了定位元素,可以通過z-index屬性來指定元素的層級
          • z-index需要一個整數作為參數,值越大元素的層級越高
          • 元素的層級越高越優先顯示
          • 如果元素的層級一樣,則優先顯示靠下的元素
          • 祖先的元素的層級再高也不會蓋住后代元素
          z-index: 3;


          2. 偏移量(offset)

          • 當元素開啟了定位以后,可以通過偏移量來設置元素的位置
          • top 定位元素和定位位置上邊的距離
          • bottom 定位元素和定位位置下邊的距離
          • 定位元素垂直方向的位置由top和bottom兩個屬性來控制 通常情況下我們只會使用其中一
            • top值越大,定位元素越向下移動
            • bottom值越大,定位元素越向上移動
          • left 定位元素和定位位置的左側距離
          • right 定位元素和定位位置的右側距離
          • 定位元素水平方向的位置由left和right兩個屬性控制 通常情況下只會使用一個
            • left越大元素越靠右
            • right越大元素越靠左
          position: relative;
          
                     left: 100px;
                     top: -200px;

          1. 字體

          • font-face可以將服務器中的字體直接提供給用戶去使用
          @font-face {
                         /* 指定字體的名字 */
                     font-family:'myfont' ;
                     /* 服務器中字體的路徑 */
                     src: url('./font/ZCOOLKuaiLe-Regular.ttf') format("truetype");
                }

          1.1 字體相關樣式

          • color 用來設置字體顏色
          • font-size 字體的大小
            • em 相當于當前元素的 一個font-size
            • rem 相對于根元素的一個font-size
            • 相關的單位
          • font-family 字體族(字體的格式)可選值:
            • 指定字體的類別,瀏覽器會自動使用該類別下的字體
            • serif 襯線字體
            • sans-serif 非襯線字體
            • monospace 等寬字體
            • font-family 可以同時指定多個字體,多個字體間使用,隔開字體生效時優先使用第一個,第一個無法使用則使用第二個 以此類推
          Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,"B8BF53",sans-serif
          font-family: 'Courier New', Courier, monospace;

          2. 圖標字體

          • 在網頁中經常需要使用一些圖標,可以通過圖片來引入圖標但是圖片大小本身比較大,并且非常的不靈活
          • 所以在使用圖標時,我們還可以將圖標直接設置為字體,然后通過font-face的形式來對字體進行引入
          • 這樣我們就可以通過使用字體的形式來使用圖標
          • fontawesome 使用步驟
            • 1.下載 https://fontawesome.com/
            • 2.解壓
            • 3.將css和webfonts移動到項目中
            • 4.將all.css引入到網頁中
            • 5.使用圖標字體 - 直接通過類名來使用圖標字體 class="fas fa-bell" class="fab fa-accessible-icon"
          • 通過偽元素來設置圖標字體
            • 1.找到要設置圖標的元素通過before或after選中
            • 2.在content中設置字體的編碼
            • 3.設置字體的樣式
          fab
            font-family: 'Font Awesome 5 Brands';
          
          fas
            font-family: 'Font Awesome 5 Free';
            font-weight: 900;
          <i class="fas fa-cat"></i>
          通過實體來使用圖標字體:
                    &#x圖標的編碼;
          <span class="fas">?</span>

          3. 行高

          • 可以將行高設置為和高度一樣的值,使單行文字在一個元素中垂直居中
          line-height: 200px;
          • 行高指的是文字占有的實際高度
            • 行間距 = 行高 - 字體大小
            • 也可以直接為行高設置一個整數
            • 如果是一個整數的話,行高將會是字體的指定的倍數
            • 可以通過line-height來設置行高
            • 行高可以直接指定一個大小(px em)
            • 行高經常還用來設置文字的行間距
          • 字體框
            • 字體框就是字體存在的格子,設置font-size實際上就是在設置字體框的高度
          • 行高會在字體框的上下平均分配
          /* line-height: 1.33; */
                     /* line-height: 1; */
                     /* line-height: 10 */

          4. 字體屬性

          • font 可以設置字體相關的所有屬性
            • font: 字體大小/行高 字體族
            • 行高 可以省略不寫 如果不寫使用默認值
            • 語法:
          font: 50px/2 微軟雅黑, 'Times New Roman', Times, serif;
          • font-weight 字重 字體的加粗
            • normal 默認值 不加粗
            • bold 加粗
            • 100-900 九個級別(沒什么用)
            • 可選值:
          • font-style 字體的風格
            • normal 正常的
            • italic 斜體
          font-weight: bold;
          font-weight: 500;
          font-style: italic;

          5. 文本樣式

          • text-align 文本的水平對齊
            • left 左側對齊
            • right 右對齊
            • center 居中對齊
            • justify 兩端對齊
            • 可選值:
          text-align: justify;
          • vertical-align 設置元素垂直對齊的方式
            • baseline 默認值 基線對齊
            • top 頂部對齊
            • bottom 底部對齊
            • middle 居中對齊
            • 可選值:
          vertical-align:baseline;
          • text-decoration 設置文本修飾
            • none 什么都沒有
            • underline 下劃線
            • line-through 刪除線
            • overline 上劃線
            • 可選值:
          text-decoration: overline;
          • white-space 設置網頁如何處理空白
            • normal 正常
            • nowrap 不換行
            • pre 保留空白
            • 可選值:
          white-space: nowrap;

          主站蜘蛛池模板: 色婷婷av一区二区三区仙踪林| 精品人妻系列无码一区二区三区| 午夜精品一区二区三区在线视 | 无码人妻久久一区二区三区 | 精品久久久中文字幕一区| 国产福利电影一区二区三区,日韩伦理电影在线福 | 亚洲av乱码一区二区三区按摩 | 无码精品人妻一区| 免费无码一区二区三区蜜桃大| 91精品国产一区二区三区左线| 中文字幕一区二区日产乱码| 国产精品资源一区二区| 亚洲AV成人一区二区三区观看| 国产成人精品一区二三区| 欧美日韩精品一区二区在线观看| 中字幕一区二区三区乱码 | 日本国产一区二区三区在线观看| 国产一区二区三区乱码网站| 亚拍精品一区二区三区| 精品一区二区三区四区在线播放 | 精品国产一区二区三区久久久狼| 亚洲国产日韩在线一区| 色屁屁一区二区三区视频国产| 精品乱人伦一区二区| 成人区精品一区二区不卡| 影院无码人妻精品一区二区| 一区二区三区免费视频播放器| 久久久久人妻精品一区三寸蜜桃| 人妻无码久久一区二区三区免费| 伊人色综合视频一区二区三区 | 亚洲一区二区三区无码影院| 久草新视频一区二区三区| 亚洲日韩精品国产一区二区三区| 国产成人免费一区二区三区| 国产在线无码视频一区二区三区| 亚洲福利视频一区二区三区| 午夜福利国产一区二区| 久久久久人妻一区精品性色av | 精品国产精品久久一区免费式| 99国产精品一区二区| 福利一区二区在线|