23_js面向對象

上次我們講運動函數,實際開發不會寫運動函數。只是講一下思想。

現在講一下用原生js去實現輪播圖,引入到對象

首先,要明確 面向對象不是語法,是一個思想,是一種編程模式

面向:朝向

面向對象:臉朝著對象 === 關注對象的編程模式

面向過程:臉朝著過程 === 關注過程的編程模式

舉例

  • 在面向過程時,我們要關注每一個元素,每一個元素之間的關系,順序。。。

  • 在面向對象時,我們只需要找到一個對象來幫我做某件事兒,我等待結果。

要去吃面條

  • 面向過程:

    • 用多少面粉

    • 加多少水

    • 和面

    • 切面條

    • 煮開水

    • 。。。

    • 煮面

    • 吃面

  • 面向對象

    • 找一個面館

    • 要一碗面

    • 等著吃

C 面向過程的

js java ios 面向對象的

01-輪播圖

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {padding: 0;margin: 0;list-style: none;}.box {width: 1000px;height: 500px;border: 2px solid red;position: relative;}img {width: 1000px;height: 500px;position: absolute;left: 0;top: 0;}span {position: absolute;width: 50px;height: 100px;background-color: rgba(0, 0, 0, 0.5);color: #fff;text-align: center;line-height: 100px;z-index: 2;font-size: 30px;}.left {left: 0;top: 200px;}.right {right: 0;top: 200px;}b {display: inline-block;width: 15px;height: 15px;border-radius: 50%;background-color: #ccc;}.focus {position: absolute;bottom: 30px;right: 100px;z-index: 2;}.active {background-color: tomato;}</style>
</head><body><div class="box"><ul><li><img style="z-index:1" src="./imgs/1.jpg" alt=""></li><li><img src="./imgs/2.webp" alt=""></li><li><img src="./imgs/3.webp" alt=""></li><li><img src="./imgs/4.webp" alt=""></li></ul><span class="left"> &lt; </span><span class="right">&gt;</span><div class="focus"><b class="active"></b><b></b><b></b><b></b></div></div><script>// 1-點擊焦點  有選中的樣式   同時還需要切換圖片// 2-自動輪播// 3-點擊左右箭頭// 4-鼠標移入 停止播放   移除 繼續播放var focus = document.querySelectorAll("b");var imgs = document.querySelectorAll("img");focus.forEach((list, i) => {list.onclick = function () {// 提前把所有的b身上的classname都去掉// 提前把所有的img身上的zindex歸0focus.forEach((item, idx) => {item.className = "";imgs[idx].style.zIndex = 0})focus[i].className = "active";imgs[i].style.zIndex = 1;}});// 自動輪播  每隔一秒鐘切換圖片和下邊的焦點// 自動輪播和點擊焦點   做的事兒是一樣的!!!!var num = 0;  //充當就是索引let timer = setInterval(() => {num++;if (num > 3) {num = 0;}focus.forEach((item, idx) => {item.className = "";imgs[idx].style.zIndex = 0})focus[num].className = "active";imgs[num].style.zIndex = 1;}, 1000)let box = document.querySelector(".box");// 鼠標移入停止輪播box.onmouseover = function () {clearInterval(timer);}// 鼠標移出 繼續輪播  繼續開啟定時器box.onmouseout = function () {timer = setInterval(() => {num++;if (num > 3) {num = 0;}focus.forEach((item, idx) => {item.className = "";imgs[idx].style.zIndex = 0})focus[num].className = "active";imgs[num].style.zIndex = 1;}, 1000)}// 點擊左右箭頭// 切換圖片,,,和 焦點樣式let left = document.querySelector(".left");left.onclick = function () {num--;if(num<0){num = 3}focus.forEach((item, idx) => {item.className = "";imgs[idx].style.zIndex = 0})focus[num].className = "active";imgs[num].style.zIndex = 1;}</script>
</body></html>

02-輪播圖封裝

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {padding: 0;margin: 0;list-style: none;}.box {width: 1000px;height: 500px;border: 2px solid red;position: relative;}img {width: 1000px;height: 500px;position: absolute;left: 0;top: 0;}span {position: absolute;width: 50px;height: 100px;background-color: rgba(0, 0, 0, 0.5);color: #fff;text-align: center;line-height: 100px;z-index: 2;font-size: 30px;}.left {left: 0;top: 200px;}.right {right: 0;top: 200px;}b {display: inline-block;width: 15px;height: 15px;border-radius: 50%;background-color: #ccc;}.focus {position: absolute;bottom: 30px;right: 100px;z-index: 2;}.active {background-color: tomato;}</style>
</head><body><div class="box"><ul><li><img style="z-index:1" src="./imgs/1.jpg" alt=""></li><li><img src="./imgs/2.webp" alt=""></li><li><img src="./imgs/3.webp" alt=""></li><li><img src="./imgs/4.webp" alt=""></li></ul><span class="left"> &lt; </span><span class="right">&gt;</span><div class="focus"><b class="active"></b><b></b><b></b><b></b></div></div><script>// 1-點擊焦點  有選中的樣式   同時還需要切換圖片// 2-自動輪播// 3-點擊左右箭頭// 4-鼠標移入 停止播放   移除 繼續播放function change(i) {// 提前把所有的b身上的classname都去掉// 提前把所有的img身上的zindex歸0focus.forEach((item, idx) => {item.className = "";imgs[idx].style.zIndex = 0})focus[i].className = "active";imgs[i].style.zIndex = 1;}var focus = document.querySelectorAll("b");var imgs = document.querySelectorAll("img");focus.forEach((list, i) => {list.onclick = function () {change(i)}});// 自動輪播  每隔一秒鐘切換圖片和下邊的焦點// 自動輪播和點擊焦點   做的事兒是一樣的!!!!var num = 0;  //充當就是索引let timer = setInterval(() => {num++;if (num > 3) {num = 0;}change(num);}, 1000)let box = document.querySelector(".box");// 鼠標移入停止輪播box.onmouseover = function () {clearInterval(timer);}// 鼠標移出 繼續輪播  繼續開啟定時器box.onmouseout = function () {timer = setInterval(() => {num++;if (num > 3) {num = 0;}change(num)}, 1000)}// 點擊左右箭頭// 切換圖片,,,和 焦點樣式let left = document.querySelector(".left");left.onclick = function () {num--;if (num < 0) {num = 3}change(num);}</script>
</body></html>

03-swiper輪播庫(框架)使用

搜索:swiper官網

輪播圖:左右點擊/圖片切換播放

開發有很多js庫 現在是挺麻煩的。你想用別人的東西下下載再說,引入

教你怎么看怎么使用

下載方法

怎么套

這些都是輪播圖的配置

復制過來右鍵格式化一下。這些類名什么不要亂改。不需要的你才刪掉。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="https://unpkg.com/swiper@8/swiper-bundle.min.css"><!--3.樣式也可以復制過來看看--><style>.swiper {width: 600px;height: 300px;
}  </style>
</head><body><!--2.添加html內容也是從庫復制過來的--><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide">Slide 1</div><div class="swiper-slide">Slide 2</div><div class="swiper-slide">Slide 3</div></div><!-- 如果需要分頁器 --><div class="swiper-pagination"></div><!-- 如果需要導航按鈕 --><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div>//注意引入庫的順序,你得先引入庫,才能使用里面的構造函數。不然就是報錯未定義  Swiper庫未定義<script src="https://unpkg.com/swiper@8/swiper-bundle.min.js"> </script>//4.初始化Swiper也是復制過來的放到標簽下邊<script>var mySwiper = new Swiper('.swiper', {  //第一步:通過new創建一個Swiper對象//第二步:一個個參數配置// direction: 'vertical', // 垂直切換選項loop: true, // 循環模式選項// autoplay:true,autoplay:{delay:1000},// 如果需要分頁器pagination: {el: '.swiper-pagination',},// 如果需要前進后退按鈕navigation: {nextEl: '.swiper-button-next',prevEl: '.swiper-button-prev',},})        </script></body></html>

04-面向對象

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>// 構造函數和對象 ==》 使用構造函數創建一個對象!!// 1- 構造函數  就是一個普通的函數 這個函數描述了對象的特點(對象的模板)// 2- 字面量創建對象// 3- 自定義構造函數// 內置的構造函數let obj = new Object();obj.name = "李福";obj.age = 18;obj.eat = function(){console.log("我喜歡吃魚!!");}// console.log(obj);// 字面量創建let obj1 = {};obj1.name = "李白";obj1.age = 19;obj1.sing=function(){console.log("我喜歡唱歌!!!");}// console.log(obj1);let obj2 = {name:"楊浩",age:20,dance:function(){return "我喜歡跳舞!!!"}}// console.log(obj2.name,obj2.age,obj2.dance());// 3- 自定義構造函數 -- 可以批量的定制對象的屬性和方法 (是一個模板)//   構造函數內部定義了  對象需要的屬性和方法!!!//   使用構造函數創建的一個個對象  他們都具有構造函數里邊定義好的屬性和方法!// 構造函數的特點:// 1- 首字母大寫的函數是構造函數// 2- 每次用這個構造函數時,需要加new 關鍵字  可以創建一個新的對象!!// 構造函數內 都是屬性和方法function Person(name,age){// 每new一次時,都會創建一個新的對象,-存入到this變量上 // let this = {}// 構造函數內的this是指加  new 調用時候所創建的對象//console.log(this);this.name = name;this.age = age;this.eat = function(){return "我喜歡吃面條"}// XXXX}let p1 = new Person("李福",18);let p2 = new Person("李白",19);let p3 = new Person("楊浩",20);console.log(p1.eat());console.log(p2);console.log(p3);</script>
</body>
</html>

05-輪播圖-面向對象版

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {padding: 0;margin: 0;list-style: none;}.box {width: 1000px;height: 500px;border: 2px solid red;position: relative;}img {width: 1000px;height: 500px;position: absolute;left: 0;top: 0;}span {position: absolute;width: 50px;height: 100px;background-color: rgba(0, 0, 0, 0.5);color: #fff;text-align: center;line-height: 100px;z-index: 2;font-size: 30px;}.left {left: 0;top: 200px;}.right {right: 0;top: 200px;}b {display: inline-block;width: 15px;height: 15px;border-radius: 50%;background-color: #ccc;}.focus {position: absolute;bottom: 30px;right: 100px;z-index: 2;}.active {background-color: tomato;}</style>
</head><body><div class="box"><ul><li><img style="z-index:1" src="./imgs/1.jpg" alt=""></li><li><img src="./imgs/2.webp" alt=""></li><li><img src="./imgs/3.webp" alt=""></li><li><img src="./imgs/4.webp" alt=""></li></ul><span class="left"> &lt; </span><span class="right">&gt;</span><div class="focus"><b class="active"></b><b></b><b></b><b></b></div></div><script>// 1-點擊焦點  有選中的樣式   同時還需要切換圖片// 2-自動輪播// 3-點擊左右箭頭// 4-鼠標移入 停止播放   移除 繼續播放// 一個功能就是一個構造函數!!!!// 1-點擊焦點  有選中的樣式   同時還需要切換圖片// 構造函數里都是 屬性 和方法!!!function MyMiSwiper() {// let this = {}this.focus = document.querySelectorAll("b");this.imgs = document.querySelectorAll("img");this.miEvent =  ()=> {this.focus.forEach((list, i) => {list.onclick =  ()=> {// 提前把所有的b身上的classname都去掉// 提前把所有的img身上的zindex歸0this.focus.forEach((item, idx) => {item.className = "";this.imgs[idx].style.zIndex = 0})this.focus[i].className = "active";this.imgs[i].style.zIndex = 1;}});}this.miEvent();}let m1 = new MyMiSwiper()console.log(m1);// 自動輪播  每隔一秒鐘切換圖片和下邊的焦點// 自動輪播和點擊焦點   做的事兒是一樣的!!!!// var num = 0;  //充當就是索引// let timer = setInterval(() => {//     num++;//     if (num > 3) {//         num = 0;//     }//     focus.forEach((item, idx) => {//         item.className = "";//         imgs[idx].style.zIndex = 0//     })//     focus[num].className = "active";//     imgs[num].style.zIndex = 1;// }, 1000)// let box = document.querySelector(".box");// // 鼠標移入停止輪播// box.onmouseover = function () {//     clearInterval(timer);// }// // 鼠標移出 繼續輪播  繼續開啟定時器// box.onmouseout = function () {//     timer = setInterval(() => {//         num++;//         if (num > 3) {//             num = 0;//         }//         focus.forEach((item, idx) => {//             item.className = "";//             imgs[idx].style.zIndex = 0//         })//         focus[num].className = "active";//         imgs[num].style.zIndex = 1;//     }, 1000)// }// // 點擊左右箭頭// // 切換圖片,,,和 焦點樣式// let left = document.querySelector(".left");// left.onclick = function () {//     num--;//     if (num < 0) {//         num = 3//     }//     focus.forEach((item, idx) => {//         item.className = "";//         imgs[idx].style.zIndex = 0//     })//     focus[num].className = "active";//     imgs[num].style.zIndex = 1;// }</script>
</body></html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76040.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76040.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76040.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

torch不能使用cuda的解決方案

遇到了這樣的報錯&#xff0c;說明 torch不能使用cuda 反思 我頻繁地嘗試安裝不同的 nvdia 驅動&#xff0c;浪費了很多時間。因為我的錯誤地認為nvidia會自帶cuda&#xff0c;其實cuda需要單獨安裝。 還有我的torch是cpu版本的&#xff0c;即使nvidia cuda安裝了&#xff0…

kettle從入門到精通 第九十三課 ETL之kettle kettle 調用web service接口5種方法,一文徹底搞懂

場景&#xff1a;群里有小伙伴向我求助如何調用web service接口&#xff0c;趁著周末時間&#xff0c;給兄弟們搞demo。 1、本次使用的web service服務接口地址是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?opgetSupportCityDataset&#xff0c; 此接口根據用戶輸入…

藍橋杯 14 天 十五屆藍橋杯 數字詩意

static boolean kkk(long x) {if(x1)return true;else {// 初始化xx為1&#xff0c;用于計算2的冪long xx 1;// 循環60次&#xff0c;檢查2的冪是否等于xfor (int i 1; i < 60; i) {xx * 2; // 每次將xx乘以2if (xx x) { // 如果xx等于x&#xff0c;說明x是2的冪&#xf…

異常與捕獲

1.C 異常概念 異常是一種處理錯誤的方式&#xff0c;當一個函數發現自己無法處理的錯誤時就可以拋出異常&#xff0c;讓函數的直接或間接的調用者處理這個錯誤。 throw&#xff1a;當問題出現時&#xff0c;程序會拋出一個異常。這是通過使用 throw 關鍵字來完成的。catch&am…

2025年最新自動化/控制保研夏令營預推免面試真題分享(東南大學蘇州校區/華東理工/南航/天大)

筆者來2021級本科自動化專業&#xff0c;以下部分將介紹我在夏令營以及預推免期間發生經歷和問題 東南大學蘇州校區蒙納士大學聯培 東南大學蘇州校區的項目算是一個比較小眾的項目&#xff0c;是第一年在蘇州校區&#xff0c;二三年到南京校區找導師&#xff08;不提供住宿自…

【SQL】MySQL基礎2——視圖,存儲過程,游標,約束,觸發器

文章目錄 1. 視圖2. 存儲過程2.1 創建存儲過程2.2 執行存儲過程 3. 游標4. 約束4.1 主鍵約束4.2 外鍵約束4.3 唯一約束4.4 檢查約束 5. 觸發器 1. 視圖 視圖是虛擬的表&#xff0c;它是動態檢索的部分。使用視圖的原因&#xff1a;避免重復的SQL語句&#xff1b;使用表的部分而…

OGG故障指南:OGG-01163 Bad column length (xxx) specified for column

報錯 OGG-01163 Bad column length (xxx) specified for column AAA in table OWNER.TABLE, maximum allowable length is yyy原因 源端修改了字段長度。 雖然源端和目標端的長度已經通過DDL語句修改到一致&#xff0c;在extract進程未重啟的情況下&#xff0c;生成的trail文…

Linux進程狀態補充(10)

文章目錄 前言一、阻塞二、掛起三、運行R四、休眠D五、四個重要概念總結 前言 上篇內容大家看的云里霧里&#xff0c;這實在是正常不過&#xff0c;因為例如 寫實拷貝 等一些概念的深層原理我還沒有講解&#xff0c;大家不用緊張&#xff0c;我們繼續往下學習就行&#xff01;&…

信息學奧賽一本通 1609:【例 4】Cats Transport | 洛谷 CF311B Cats Transport

【題目鏈接】 ybt 1609&#xff1a;【例 4】Cats Transport 洛谷 CF311B Cats Transport 【題目考點】 1. 動態規劃&#xff1a;斜率優化動規 【解題思路】 解法1&#xff1a;設a點的前綴和 輸入的 d d d序列是從 d 2 d_2 d2?到 d n d_n dn?&#xff0c;共n-1個數字。人…

bluecode-20240913_1_數據解碼

時間限制&#xff1a;C/C 1000MS&#xff0c;其他語言 2000MS 內存限制&#xff1a;C/C 256MB&#xff0c;其他語言 512MB 難度&#xff1a;困難 數據解碼 指定有一段經過編碼的二進制數據&#xff0c;數據由0個或多個"編碼單元"組成。"編碼單元"的編碼方式…

接口自動化進階 —— Pytest全局配置pytest.ini文件詳解!

pytest.ini 是 Pytest 的全局配置文件&#xff0c;用于自定義測試運行的行為和規則。通過配置 pytest.ini&#xff0c;可以避免在命令行中重復輸入參數&#xff0c;提升測試的效率和一致性。 1. 配置文件的位置和格式 位置&#xff1a;pytest.ini 文件通常放在項目的根目錄下。…

ModuleNotFoundError: No module named ‘demjson‘

錯誤 ModuleNotFoundError: No module named demjson 表明 Python 無法在其環境中找到名為 demjson 的模塊。demjson 是一個第三方庫&#xff0c;用于在 Python 中編碼和解碼 JSON 數據。如果你嘗試導入它但遇到了這個錯誤&#xff0c;那很可能是因為你的 Python 環境中沒有安裝…

1、C51單片機(STC8G2K64S4)串口實驗

一、串口1接線圖 1、下面是單片機外接電路圖&#xff0c;P30,P31分別用于RXD和TXD功能引腳 2、我們來查看單片機手冊 串口1需要設置的寄存器 串口1的功能腳配置選擇位&#xff0c;看電路圖選擇的是P3.0,P3.1。 3、串口1&#xff1a;SCON控制寄存器 設置為0x50:0101 0000。&a…

3PL EDI:SA Piper Logistics EDI需求分析

SA Piper Logistics成立于2005年&#xff0c;是一家專注于全球供應鏈管理的第三方物流服務商&#xff08;3PL&#xff09;&#xff0c;總部位于美國芝加哥。公司以“優化物流效率&#xff0c;重塑供應鏈價值”為使命&#xff0c;提供倉儲管理、運輸規劃、訂單履行及跨境清關等一…

vscode正則表達式使用

小標題 ^\d.\d.\d\s.*$ ^表示匹配字符串的開頭。\d\.\d\.\d表示匹配一到多個數字&#xff0c;接著一個小數點&#xff0c;再接著一到多個數字&#xff0c;然后又一個小數點和一到多個數字&#xff0c;用來匹配類似 “2.1.1” 這樣的標題號部分。\s表示匹配一個空格。.*表示匹配…

力扣.旋轉矩陣Ⅱ

59. 螺旋矩陣 II - 力扣&#xff08;LeetCode&#xff09; 代碼區&#xff1a; class Solution {const int MAX25; public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans;vector<int> hang;int len_nn;int arry[25][25]…

軟件工程面試題(十)

1、OSI七層模型tcp四層模型是什么樣的 OSI七層參考模型 :物理層 、數據鏈路層 、網絡層 、傳輸層、應用層、會話層、表示層 TCP/IP:第一層網絡接口層第二層 第二層??網間層 第三層??傳輸層 第四層??應用層 2、JAVA測試模式(ZZ): 模式(一) Main 模式 模式(二)…

淘寶雙十一大促監控系統開發:實時追蹤爆品數據與流量波動

以下是開發一個淘寶雙十一大促監控系統&#xff0c;以實時追蹤爆品數據與流量波動的詳細步驟及示例代碼&#xff1a; 實現思路 數據獲取&#xff1a;利用淘寶 API 或者爬蟲技術&#xff0c;獲取商品的銷售數據、瀏覽量等信息。數據存儲&#xff1a;將獲取到的數據存儲到數據庫…

高并發金融系統,“可觀測-可追溯-可回滾“的閉環審計體系

一句話總結 在高并發金融系統中&#xff0c;審計方案設計需平衡"觀測粒度"與"系統損耗"&#xff0c;通過雙AOP實現非侵入式采集&#xff0c;三表機制保障操作原子性&#xff0c;最終形成"可觀測-可追溯-可回滾"的閉環體系。 業務痛點與需求 在…

Docker 的實質作用是什么

Docker 的實質作用是什么 目錄 Docker 的實質作用是什么**1. Docker 的實質作用****2. 為什么使用 Docker?****(1)解決環境一致性問題****(2)提升資源利用率****(3)簡化部署與擴展****(4)加速開發與協作****3. 舉例說明****總結**Docker 的實質是容器化平臺,核心作用…