整合營銷服務商

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

          免費咨詢熱線:

          javascript實現單張或多張圖片持續無縫滾動

          景:

          想要實現圖片持續滾動,既然使用js,就千萬不要加css動畫、過渡等相關樣式,如果想要滾動的平滑一下,可以一像素一像素的感動,則很平滑,如果加了過渡動畫,當圖片重置為0時,會有往回倒的動畫效果,跟預期不符。

          原理:

          圖片滾動原理同圖片輪播原理,同樣也適用于文字滾動等一系列滾動,通過復制最后一張圖片或最后一堆文字插入第一行,或復制第一張圖片或一堆文字插入在結尾,來實現無縫拼接,前提:1、必須是沒有設置過渡動畫的,2、重置為0的時候與當前已經滾動到的高度對于圖片的位置而言肉眼看上去沒變化。

          實現:

          html主要包含三塊:

          1、最外層盒子,用來展示滾動圖的區域,overflow:hidden;

          2、滾動的盒子,主要改變該盒子的定位值,來實現滾動,里面包含所有要滾動的圖片或文字

          3、包含圖片或文字的盒子。

          代碼:

          class Roll {

          constructor(opts) {

          this.elem = opts.elem; // 圖片包含滾動長度的元素的

          this.elemBox = opts.elemBox; //圖片展示區域元素,為了獲取展示區域的高度

          this.direction = opts.direction;

          this.time = opts.time;

          this.init();

          this.roll = this.roll.bind(this)

          this.startRoll = this.startRoll.bind(this)

          this.stopRoll = this.stopRoll.bind(this)

          }

          init(){

          this.elemHeight = this.elem.offsetHeight;

          this.elemHtml = this.elem.innerHTML;

          this.elem.innerHTML = this.elem.innerHTML + this.elemHtml+ this.elemHtml;

          this.speed;

          // 如果向上滾或者向左滾動每次減1,向下滾或者向右滾動每次加1

          if(this.direction === 'top' || this.direction === 'left'){

          this.speed = -1;

          }else{

          this.speed = 1;

          }

          }

          roll(){

          switch (this.direction) {

          case "top":

          // 如果滾動的盒子的top值超出元素的高度,則置為0

          if(Math.abs(this.elemBox.offsetTop) >= this.elemHeight){

          this.elemBox.style.top = 0;

          }else{

          this.elemBox.style.top = this.elemBox.offsetTop + this.speed + 'px';

          }

          break;

          case "bottom":

          // 如果滾動的盒子的bottom值超出元素的高度,則置為0

          if(Math.abs(this.elemBox.offsetBottom) >= this.elemHeight){

          this.elemBox.style.bottom = 0;

          }else{

          this.elemBox.style.bottom = this.elemBox.offsetBottom + this.speed + 'px';

          }

          break;

          case "left":

          // 如果滾動的盒子的left超出元素的高度,則置為0

          if(Math.abs(this.elemBox.offsetLeft) >= this.elemHeight){

          this.elemBox.style.left = 0;

          }else{

          this.elemBox.style.left = this.elemBox.offsetLeft + this.speed + 'px';

          }

          break;

          case "right":

          // 如果滾動的盒子的right超出元素的高度,則置為0

          if(Math.abs(this.elemBox.offsetRight) >= this.elemHeight){

          this.elemBox.style.right = 0;

          }else{

          this.elemBox.style.right = this.elemBox.offsetRight + this.speed + 'px';

          }

          break;

          default:

          // 默認向上滾動,如果滾動的盒子的top超出元素的高度,則置為0

          if(Math.abs(this.elemBox.offsetTop) >= this.elemHeight){

          this.elemBox.style.top = 0;

          }else{

          this.elemBox.style.top = this.elemBox.offsetTop + speed + 'px';

          }

          }

          }

          stopRoll(){

          clearInterval(this.scrollTimer)

          }

          startRoll(){

          this.scrollTimer = setInterval(this.roll,this.time)

          }

          }



          原文鏈接:https://www.php.cn/js-tutorial-448891.html

          在Firefox中單獨設置滾動條樣式,你可以使用?@-moz-document??規則。這個規則允許你為特定的瀏覽器或瀏覽器引擎應用樣式。

          下面是一個例子,演示如何在Firefox中隱藏滾動條:

          @-moz-document url-prefix() {
            /* 在這里添加只對Firefox生效的樣式 */
            body {
              scrollbar-width: none;
            }
          }

          在上面的例子中,??@-moz-document url-prefix()??表示只有在URL以空字符串(即所有URL)為前綴的情況下,才會應用其中的樣式。在??body??元素中,??scrollbar-width: none;??將隱藏滾動條。

          請注意,這樣的規則只在Firefox中生效,而在其他瀏覽器中會被忽略。確保在使用這樣的規則時進行測試,以確保所需的效果在目標瀏覽器中按預期工作。

          在CSS中,??*???(星號)和 ??body?? 分別選擇不同的元素或元素集合。

          1. *?(星號)選擇器: 這是通配符選擇器,匹配文檔中的所有元素。使用 * 會選擇頁面上的每個元素,無論是塊級元素、行內元素還是其他類型的元素。例如:
          * {
            margin: 0;
            padding: 0;
          }

          上述代碼會將頁面中所有元素的內外邊距設置為零。

          1. body? 選擇器: 這是針對文檔的 <body> 元素的選擇器。body 選擇器用于針對整個文檔的主體部分應用樣式。例如:
          body {
            font-family: 'Arial', sans-serif;
            background-color: #f0f0f0;
          }

          上述代碼會將文檔主體部分的字體設置為 Arial,并將背景顏色設置為 #f0f0f0。

          所以,??*??? 是一個通用的選擇器,匹配所有元素,而 ??body??? 是特定于文檔主體的選擇器,用于選擇文檔主體元素并應用樣式。在某些情況下,你可能希望使用 ??body?? 選擇器,以更有針對性地影響文檔的主要內容區域。

          在最新的 Firefox 版本中,??-moz-scrollbar-thumb?? 偽類選擇器已被棄用,取而代之的是使用更通用的 CSS Scrollbar 模塊規范。為了在 Firefox 中優化滾動條并使其變細,你可以使用新的規范中的屬性。

          以下是一個簡單的示例,可以使 Firefox 中的滾動條變細:

          /* Firefox 滾動條樣式 */
          * {
            scrollbar-width: thin;
            scrollbar-color: #999999 #f0f0f0;
          }
          
          /* Webkit 滾動條樣式(Chrome, Safari等)*/
          *::-webkit-scrollbar {
            width: 12px;
          }
          
          *::-webkit-scrollbar-thumb {
            background-color: #999999;
          }
          
          *::-webkit-scrollbar-track {
            background-color: #f0f0f0;
          }

          上述樣式包含兩部分:

          1. ??scrollbar-width?? 和 scrollbar-color 是 Firefox 滾動條樣式的屬性。scrollbar-width: thin; 會使滾動條變細,而 scrollbar-color 用于定義滾動條的顏色。在這里,滾動條顏色被設置為灰色 (#999999),滾動條軌道的顏色被設置為淡灰色 (#f0f0f0)。
          2. 對于 Webkit 內核的瀏覽器(如 Chrome 和 Safari),使用 ::-webkit-scrollbar::-webkit-scrollbar-thumb::-webkit-scrollbar-track 來定義滾動條樣式。

          請注意,滾動條樣式在不同瀏覽器中可能會有所不同,因此上述樣式在 Firefox 中有效,而 Webkit 樣式在 Chrome 和 Safari 中有效。在實際使用中,你可能需要根據需要進行調整和測試,以確保在不同瀏覽器中都能達到預期的效果。

          用js來實現。

          html:

          <div class="box">
           <p class="animate">
           文字滾動的內容文字滾動的內容文字滾動的內容文字滾動的內容
           </p>
          </div>

          css:


          主站蜘蛛池模板: 久久se精品一区二区国产 | 国产女人乱人伦精品一区二区| 亚洲av成人一区二区三区在线播放| 成人免费一区二区无码视频| 国产成人一区二区精品非洲| 精品综合一区二区三区| 国产伦精品一区二区三区精品 | 人妻体内射精一区二区| 奇米精品视频一区二区三区| 亚洲日本一区二区一本一道| 在线精品一区二区三区| 亚洲AV美女一区二区三区| 一区二区三区www| 精品免费国产一区二区三区 | 亚洲一区AV无码少妇电影| 在线精品亚洲一区二区小说| 国产乱码精品一区二区三区四川 | 亚洲熟妇AV一区二区三区浪潮| 亚洲高清日韩精品第一区| 中日韩一区二区三区| 韩国福利视频一区二区| 天堂va在线高清一区| 精品人无码一区二区三区| 国产一区二区精品| 在线观看免费视频一区| 国产伦精品一区二区三区视频猫咪 | 国产一区二区好的精华液| 亚洲综合一区二区精品久久| 精品亚洲综合在线第一区| 亚洲色欲一区二区三区在线观看 | 日韩人妻一区二区三区免费| 91精品一区国产高清在线| 精品视频一区二区观看| 国产成人av一区二区三区在线观看 | 亚洲国产一区二区a毛片| 中文字幕无码一区二区免费| 在线视频一区二区三区四区| 亚洲av无码片区一区二区三区| 日韩精品人妻一区二区三区四区| 亚洲中文字幕无码一区| 国产伦精品一区二区三区|