無縫滾動的算法

一早上的時間做了一個簡單的無縫滾動,遇到的問題特別的多,而且對無縫滾動的算法也不是特別的清楚。

無縫滾動效果的原理:就是幾個圖片 ?浮動成為一排;然后讓圖片滾動,正常情況下圖片滾完,就留下了后面的空白,而我們的處理的邏輯就是讓圖片滾動到ul長度的一半的時候,迅速將ul拉回開始的位置。

遇到的問題:1、圖片的路徑問題

      2、/、\這兩個的區別;windows系統:反斜杠“\“用來表示目錄;正斜杠“/”用來表示網址、Url地址。

      3、絕對定位 相對定位

      4、算法的問題,包括 ul的width,滾動到ul長度的一半的時候,設置為0;

      5、初始化的問題,若沒有初始化,ul和div會有出入;

      6、margin 0 auto,無法居中的問題;解決辦法:要居中的元素,無浮動,無定位(居中前至少么有)

解決辦法:

如果不給一個div添加絕對定位或者相對定位屬性,而就去改動他的left和top值 是沒有效果的。div的left和top會一直是初始值。
相對定位是“相對于”元素在文檔中的初始位置;
絕對定位是“相對于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相對于”整個document.
windows系統:反斜杠“\“用來表示目錄;正斜杠“/”用來表示網址、Url地址。

?

<style>* {margin: 0px;padding: 0px;//若沒有初始化,會出現div和ul盡管寬度高度一樣,卻無法重合的怪像;
}#div1{width:1120px;height: 151px;margin: 100px auto; //居中的元素不能有定位,不能有浮動(至少該行代碼之前并無)background: red;position: relative;//相對定位是讓div相對自己來移動overflow: hidden;}#div1 ul{position: absolute;//要讓一個物體運動起來,必須要給加上position屬性。給ul加絕對定位,用意在于滾動的時候整個ul可以以一個整體來動,不用單個li運動

     left:0px;
        top:0px;}#div1 ul li{float: left;list-style-type:none;width: 280px;height: 151px;}
</style>
<body><div id="div1"><ul><li><img src="img/1.png" /></li><li><img src="img/3.jpg" /></li><li><img src="img/4.jpg" /></li><li><img src="img/5.jpg" /></li></ul></div>
</body>
<script>window.onload = function(){var oDiv = document.getElementById('div1');var oUl = oDiv.getElementsByTagName('ul')[0];var aLi = oUl.getElementsByTagName('li');oUl.innerHTML = oUl.innerHTML+oUl.innerHTML;oUl.style.width = aLi[0].offsetWidth * aLi.length+'px';setInterval(function(){if(oUl.offsetLeft<-oUl.offsetWidth/2){

oUl.style.left = '0';}else{oUl.style.left = oUl.offsetLeft-2+'px';}},30);} </script>
//offsetLeft 和 offsetTop 是元素自身在絕對定位時相對于父元素的值。

//style.left是可寫的,他接受offsetleft的賦值。
//style.left設置某個元素的位置,是實時刷新的,而且left是可以設置的。返回的是字符串。

//這里意思是,用任意一個li的寬度*li的length.這樣算出的就是ul的寬度,這樣就避免了ul占2行的情況。

<script>window.onload = function(){var oDiv = document.getElementById('div1');var oUl = oDiv.getElementsByTagName('ul')[0];var aLi = oUl.getElementsByTagName('li');oUl.innerHTML = oUl.innerHTML+oUl.innerHTML;oUl.style.width = aLi[0].offsetWidth * aLi.length+'px';setInterval(function(){if(oUl.offsetLeft<-oUl.offsetWidth/2){
                oUl.style.left = '0';}if(oUl.offsetLeft>0){oUl.style.left=-oUl.offsetWidth/2+'px';//處理圖片滾完斷層的問題,向右邊滾動,當滾動一半的時候要將ul往左扯,扯回去的位置肯定是負的,所以要加-號
            }oUl.style.left = oUl.offsetLeft+2+'px';//這個是向右邊滾動},30);}
</script>

?

轉載于:https://www.cnblogs.com/Jerry-spo/p/6514184.html

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

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

相關文章

ACM題目————一筆畫問題

描述 zyc從小就比較喜歡玩一些小游戲&#xff0c;其中就包括畫一筆畫&#xff0c;他想請你幫他寫一個程序&#xff0c;判斷一個圖是否能夠用一筆畫下來。 規定&#xff0c;所有的邊都只能畫一次&#xff0c;不能重復畫。 輸入第一行只有一個正整數N(N<10)表示測試數據的組數…

HALCON示例程序color_fuses_lut_trans.hdev通過顏色對保險絲進行分類

HALCON示例程序color_fuses_lut_trans.hdev通過顏色對保險絲進行分類 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off ()定義變量并初始化&#xff0c;這些變量都是下邊識別要用到的 FuseColors : [‘Orange’,‘Red’,‘Blue’,‘Yellow’,…

上海電驅動

從行業前景上來說還可以&#xff0c;但這個公司不行&#xff0c;公司各種坑&#xff0c;從上到下各種腐敗&#xff0c;打醬油的人比較多&#xff0c;在薪資方面除了技術部稍好一點&#xff0c;其他部門我建議你最好別去了&#xff0c;整體上這個公司員工沒幸福感&#xff01;只…

1056. 組合數的和(15)

1056. 組合數的和(15) 時間限制400 ms內存限制65536 kB乙級練習題解目錄給定N個非0的個位數字&#xff0c;用其中任意2個數字都可以組合成1個2位的數字。要求所有可能組合出來的2位數字的和。例如給定2、5、8&#xff0c;則可以組合出&#xff1a;25、28、52、58、82、85&#…

3、時間和隨機數

一、時間 1.1 使用Calendar/[?kl?nd?]/類獲取時間 1.1.1 常用方法 (1)public static Calendar getInstance&#xff08;&#xff09;: 使用默認時區和語言環境獲取一個基于當前時間的Calendar對象。 (2)public int get(int field) 返回給定日歷字段表示的日歷部分的數字…

哥尼斯堡的“七橋問題” (歐拉回路,并查集)

哥尼斯堡的“七橋問題” (25分) 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含兩個島嶼及連接它們的七座橋&#xff0c;如下圖所示。 可否走過這樣的七座橋&#xff0c;而且每橋只走過一次&#xff1f;瑞士數學家歐拉(Leonhard Euler&#xff0c;1707—1783)最終解決…

HALCON示例程序color_pieces.hdev通過MLP訓練器對彩色棋子進行分類識別

HALCON示例程序color_pieces.hdev通過MLP訓練器對彩色棋子進行分類識別&#xff1b;分別在彩色圖像下與灰度圖像下進行&#xff0c;從而產生對比。 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () dev_open_window (…

無人駕駛汽車之爭本田為何未戰先敗

摘要 : 本田汽車的研發部門對于汽車雖然理解深刻&#xff0c;但從整體而言&#xff0c;本田的造車理念還停留在上個時代&#xff0c;在未來的無人駕駛競爭中&#xff0c;本田已經有未戰先啊敗的苗頭。 百度百家The BIG Talk硅谷站連續5小時的高密度頭腦風暴&#xff0c;果然讓人…

理解git結構與簡單操作(四)合并分支的方法與策略

接上節&#xff0c;此時的dev分支與master分支的進度就不一樣了&#xff0c;所以需要將dev分支與master分支同步。這里需要的就是合并分支的操作&#xff0c;大家應該都知道用git merge或者git rebase。 git merge merge&#xff0c;即「合并」。 fast-forward 當出現我們上面圖…

HALCON示例程序color_segmentation_pizza.hdev披薩肉餅識別。

HALCON示例程序color_segmentation_pizza.hdev披薩肉餅識別。 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () read_image (Image, ‘color/pizza_01’) get_image_size (Image, Width, Height) dev_open_window (0,…

攝像機標定

利用攝像機所拍攝到的圖像來還原空間中的物體。在這里&#xff0c;不妨假設攝像機所拍攝到的圖像與三維空間中的物體之間存在以下一種簡單的線性關系&#xff1a;[像]M[物],這里&#xff0c;矩陣M可以看成是攝像機成像的幾何模型。 M中的參數就是攝像機參數。通常&#xff0c;這…

Linux下Tomcat重新啟動

在Linux系統下&#xff0c;重啟Tomcat使用命令操作的&#xff01; 首先&#xff0c;進入Tomcat下的bin目錄 cd /usr/local/tomcat/bin 使用Tomcat關閉命令 ./shutdown.sh 查看Tomcat是否以關閉 ps -ef|grep java 如果顯示以下相似信息&#xff0c;說明Tomcat還沒有關閉 root …

大數據和人工智能的關系是什么?

何為大數據&#xff1f;何為人工智能&#xff1f; 大數據&#xff0c;百度百科上是這么定義的&#xff0c;指無法在一定時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合&#xff0c;是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率…

【2017-03-09】SQL Server 數據庫基礎、四種約束

一、數據庫和內存的區別 數據庫&#xff1a;一些存儲在硬盤上的數據文件 內存&#xff1a;計算機臨時存儲的一些數據 二、常用數據庫 .Net - SQL Server PHP - MySql Java - Oreacl 三、SQL Server使用方法 1、新建數據庫 右鍵點擊“數據庫”&#xff0c;點擊“新建數據庫”。在…

HALCON示例程序color_simple.hdev在HSV空間篩選黃色線

HALCON示例程序color_simple.hdev在HSV空間篩選黃色線 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_close_window () dev_open_window (0, 0, 640, 480, ‘black’, WindowHandle) for i : 1 to 2 by 1 read_image (Image, ‘cable’ i) 將彩色圖片…

張正友標定法 【計算機視覺學習筆記--雙目視覺幾何框架系列】

三、致敬“張正友標定” 此處“張正友標定”又稱“張氏標定”&#xff0c;是指張正友教授于1998年提出的單平面棋盤格的攝像機標定方法。張氏標定法已經作為工具箱或封裝好的函數被廣泛應用。張氏標定的原文為“A Flexible New Technique forCamera Calibration”。此文中所提到…

SQL基礎三

關系數據庫操作語言 對關系數據庫進行操作標準語言是所謂的結構化查詢語言SQL&#xff0c;和其他程序語言不一樣的是&#xff0c;它是非過程語言。 SQL采用自然英語的結構&#xff0c;比較容易上手&#xff0c;目前SQL已經有了ANSI標準&#xff0c;哥哥數據庫廠商除了SQL語法外…

HTTP狀態碼詳解

HTTP狀態碼介紹 createTime--2016年9月24日09:41:48 參考鏈接&#xff1a;http://www.w3school.com.cn/tags/html_ref_httpmessages.asp概括&#xff1a;   1字開頭&#xff1a;消息。信息性狀態碼&#xff0c;代表請求已被接受&#xff0c;需要繼續處理。&#xff08;接受的…

HALCON示例程序connection.hdev分割連通域

HALCON示例程序connection.hdev分割連通域 示例程序源碼&#xff08;加注釋&#xff09; read_image (Image, ‘mreut’) 二值化 threshold (Image, Region, 190, 255)分割連通域 connection (Region, ConnectedRegions)使用面積進行篩選 select_shape (ConnectedRegions, S…

一張圖學習常見this的指向

在寫JS代碼時&#xff0c;this的出場頻率頗高&#xff0c;擔負了傳遞對象&#xff0c;作用域等等功能&#xff0c;堪稱全能超人。 但是this復雜多變&#xff0c;初學的時候想弄清楚并不簡單&#xff0c;繞著繞著就迷路了。“我是誰&#xff1f;我從哪來&#xff1f;我要到哪去&…