第一課 關於側邊欄下拉手風琴的實現

来源:https://www.cnblogs.com/Liuxingtao/archive/2019/01/22/10303377.html
-Advertisement-
Play Games

一、 主要知識點:html佈局,css變換,js事件觸發 二.CSS屬性記憶: CSS規則:子元素會繼承父元素的佈局屬性。不專本改變子元素的屬性,其會跟隨父元素。 功能 語句 margin 外邊距 Padding 內邊距 關於文本的水平居中為: text-align: center; 關於文本的垂直 ...


一、  主要知識點:html佈局,css變換,js事件觸發

二.CSS屬性記憶:

CSS規則:子元素會繼承父元素的佈局屬性。不專門改變子元素的屬性,其會跟隨父元素。 

功能

語句

margin

外邊距

Padding

內邊距

關於文本的水平居中為:

 

text-align: center;

關於文本的垂直居中:

使行高等於背景元素的高度,一般用於單行固定,不易維護,

Iine-height:元素高;

Padding設置內邊距,使其自動撐開,建議使用這個

 

padding: 15px 0;

 

怪異魔盒

box-sizing: border-box;  可以保證元素大小不會隨著padding與margin變化。只會向內占用自己的空間。

CSS3中的box-sizing 屬性允許以特定的方式來指定盒模型,有兩種方式:

  • content-box:標準盒模型,又叫做 W3C盒模型,一般在現代瀏覽器中使用的都是這個盒模型
  • border-box:怪異盒模型,低版本IE瀏覽器中的盒模型

    區別:

    content-box:padding和border不被包含在定義的width和height之內。
    盒子的實際寬度=設置的width+padding+border
    border-box:padding和border被包含在定義的width和height之內。
    盒子的實際寬度=設置的width(padding和border不會影響實際寬度)


Position

定位屬性,用於h3上的3角形的實現,此次小3角形實現需要用到:(父:position: relative;相對位置),(子:position: absolute;絕對位置)。

transform

旋轉屬性 transform: rotate(0deg)

transition

動畫過渡效果,添加上此屬性,樣式變換會有漸變效果

transition: 1s;

.classname:hover{

}

 

滑鼠選中

例子:.wrap:hover//滑鼠選中

                            {

                              background-color: #67c33f;//滑鼠選中後變色

                              cursor: pointer; //滑鼠顯示形狀為小手

                             

                            }

         overflow

溢出屬性,用於div調整高度或寬度時溢出部分的屬性,

例子:overflow: hidden; 溢出隱藏

border-bottom: 1px solid #42495d;

下邊框為1px ,顏色是#42495d

屬性都是選定類名,在 css樣式中使用

例子:   .hide{<!--hide是類名-->

                                     overflow: hidden;

                                     height: 0;

                                     transition: 1s;

                            }

 

       

 

 

三、javascript元素的獲取,與事件的觸發,自定義原素

註意:js是自上向下執行的程式,要註意用戶觸發事件對其的影響,比如for迴圈,會跳過用戶觸發事件執行迴圈,所以要用自定義屬性下表。

源碼:

  1 <!doctype html>
  2 
  3 <html>
  4     <head>
  5         <meta charset='utf-8'>
  6         <meta name="keywords" content="側邊欄下拉">
  7         <meta name="description" content="側邊欄下拉手風琴">
  8         <title>第一課</title>
  9         <style>
 10             *{/*通配符不建議使用*/
 11                 margin: 0;
 12                 padding: 0;
 13             }
 14             html,body{
 15                 height: 100%;
 16             }
 17             .wrap{
 18                 width: 260px;
 19                 height: 100%;
 20                 background-color:#363a45;
 21                 text-align: center;
 22                 color: #fff;
 23             }
 24             .head{
 25             
 26                 padding: 20px 0;
 27                 background-color: #44495a;
 28                 
 29                 font-size: 20px;
 30             }
 31             .nav{
 32                 width: 250px;
 33                 margin: 10px 5px;
 34             }
 35             .nav-list{
 36                 margin-bottom: 5px;
 37             }
 38             .nav-list h3{
 39                 position: relative;/*相對位置*/
 40                 padding: 15px 0;
 41                 background-color: #3889d4;
 42 
 43                 transition: 1s;/*動畫過渡效果*/
 44 
 45                 font-size: 14px;
 46                 
 47             }
 48             .nav-list h3.on{/*給h3添加類名on用於效果變化提高性能 */
 49                 background-color: #393c4a;
 50             }
 51             .nav-list i{
 52                 position: absolute;/*絕對位置*/
 53                 top: 15px;   /*位置*/
 54                 right: 10px; /*位置*/
 55 
 56                 border: 8px solid transparent;/*transparent 全透明*/ /*畫出3角形1*/
 57                 border-left-color: #fff;/*左邊白色*/  /*畫出3角形2*/
 58 
 59                 transform-origin: 1px 8px;/*旋轉基點(x,y)*/
 60                 transform: rotate(0deg);/*旋轉角度*/
 61 
 62                 transition: 1s;/*動畫過渡效果*/
 63                 
 64             }
 65             .nav-list i.on{
 66                 transform: rotate(90deg);/*旋轉角度*/
 67             }
 68             .hide{
 69                 overflow: hidden;/*隱藏溢出部分*/
 70                 height: 0;
 71                 transition: 1s;/*動畫過渡效果*/
 72             }
 73             .hide h5{
 74                 padding: 10px 0;
 75                 ovewflow
 76                 background-color: #282c3a;
 77                 border-bottom:1px solid #42495d;
 78 
 79             }
 80             
 81         </style>
 82     </head>
 83     <body>
 84         <div class="wrap">
 85             <div class="head">國內各地景點</div>
 86             <div class="nav">
 87                 <ul>
 88                     <li class="nav-list">
 89                         <h3>北京的景點
 90                             <i></i>
 91                         </h3>
 92                         <div class="hide">
 93                         <h5>故宮</h5>
 94                         <h5>天壇</h5>
 95                         <h5>頤和園</h5>
 96                         <h5>長城</h5>
 97                         <h5>天壇公園</h5>
 98                         <h5>人民大會堂</h5>
 99                         </div>
100                     </li>
101                     <li class="nav-list">
102                         <h3>南京的景點
103                             <i></i>
104                         </h3>
105                         <div class="hide">
106                         <h5>故宮</h5>
107                         <h5>天壇</h5>
108                         <h5>頤和園</h5>
109                         <h5>長城</h5>
110                         <h5>天壇公園</h5>
111                         <h5>人民大會堂</h5>
112                         </div>
113                     </li>
114                 </ul>
115             </div>
116         </div>
117         
118         <script>
119             var oList=document.querySelectorAll('.nav-list h3'),
120             oHide=document.querySelectorAll('.hide'),
121             oIcon=document.querySelectorAll('.nav-list i');//獲取css中的元素
122     
123 
124         /*oList[0].onclick=function(){//點擊事件->執行函數
125                 oHide[0].style.height='245px';//改變hide高度
126                 oList[0].style.backgroundColor= '#393c4a',//改變顏色
127                 oIcon[0].style.transform='rotate(90deg)';//修改角度   註釋原因使用添加類名on代替在js中直接調用屬性
128                                                                          ,其變化都在css中,就js只是添加一個類名這樣就提高了性能
129 
130                 oHide[0].style.height='245px';//改變hide高度
131                 oList[0].className= 'on',//改變顏色
132                 oIcon[0].className= 'on';//修改角度
133 
134             }*/
135             
136 
137             lastIdnex=0;//上一次點擊下標
138             
139             for(var i=0;i<oList.length;i++)
140             {
141 
142                 oList[i].index=i;//自定義屬性保存下標
143 
144                 oList[i].isClick=false;//沒有被點擊
145             
146                 oList[i].onclick=function() {//點擊事件->執行函數
147                     //清除上一次下標
148                     oHide[lastIdnex].style.height='0';//改變hide高度
149                     oList[lastIdnex].className= '';//改變顏色
150                     oIcon[lastIdnex].className= '';//修改角度
151 
152                     if(this.isClick){//被點了
153                         this.isClick=false;//開關變化
154                     }
155                     else
156                     {
157                         //設置當前下標
158                         oHide[this.index].style.height='245px';//改變hide高度
159                         oList[this.index].className= 'on';//改變顏色
160                         oIcon[this.index].className= 'on';//修改角度
161 
162                         oList[lastIdnex].isClick=false;//清除上一次開關
163                         oList[this.index].isClick=true;//開關變化
164                         lastIdnex=this.index;//保存當前下標
165                         
166                     }
167                 }
168 
169 
170             }
171 
172                 
173         </script>
174         
175     <body>
176 
177 </html>
View Code

剛開始使用博客園,還有好多不會用,只是單純的記錄自己記憶到的知識點,可能有許多不恰當的地方。

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、在網頁頭部加入分享標題和url,代碼如下: 二、HTML代碼如下: 三、JavaScript代碼如下: ...
  • 一、HTML代碼如下: 二、CSS代碼如下: 三、jQuery代碼如下: 四、效果圖如下: 本文摘自站長素材:http://sc.chinaz.com/jiaoben/150907458420.htm ...
  • html代碼 css代碼 js代碼 效果圖 ...
  • from:http://visjs.org/timeline_examples.html https://github.com/almende/vis https://github.com/moment/moment/ https://momentjs.com/ ...
  • 數組是js中最常用到的數據集合,其內置的方法有很多,熟練掌握這些方法,可以有效的提高我們的工作效率,同時對我們的代碼質量也是有很大影響。本文所有的慄子都是在es7環境下測試的,如果有問題歡迎留言交流 創建數組 我將創建數組的方式分為以下四大類 一、字面量方式 使用對象字面量方式創建數組是我們最常用的 ...
  • Quill是一個很流行的富文本編輯器,github上star大約21k: github:https://github.com/quilljs/quill/ 官網: https://quilljs.com/ 使用 下載: vue中使用: 效果 創建Quill實例需要兩個參數,container與opt ...
  • 首先,ES6 的 class 屬於一種“語法糖”,所以只是寫法更加優雅,更加像面對對象的編程,其思想和 ES5 是一致的。 function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function() { ...
  • if (window.performance) { console.info("window.performance is supported"); console.log(performance.navigation.type) } ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...