整合營銷服務商

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

          免費咨詢熱線:

          "決勝移動端:H5頁面如何一鍵禁用雙擊放大、雙指縮放與整體

          決勝移動端:H5頁面如何一鍵禁用雙擊放大、雙指縮放與整體縮放功能】

          在移動互聯網時代,H5頁面以其跨平臺兼容性和豐富的交互特性,成為眾多開發者構建移動端應用的首選。然而,在實際使用過程中,用戶可能會遇到雙擊放大、雙指縮放或整體縮放等操作帶來的困擾,尤其是在一些特定場景下(如游戲、閱讀、繪圖等),這些默認的縮放行為可能會影響用戶體驗。本文將深入解析如何通過CSS和JavaScript,一鍵禁用H5頁面的雙擊放大、雙指縮放及整體縮放功能,助您打造更為穩定、流暢的移動端交互體驗。

          一、理解移動端縮放機制

          1. 雙擊放大(Double Tap Zoom)

          雙擊放大是瀏覽器對移動端設備的默認響應行為,當用戶快速連續點擊屏幕兩次時,瀏覽器會自動將頁面內容放大到一個預設的縮放比例,以便用戶查看細節。

          2. 雙指縮放(Pinch Zoom)

          雙指縮放是利用多點觸控技術,通過兩個手指在屏幕上做開合動作來實現頁面內容的放大或縮小。這是移動設備上非常常見的交互方式,適用于查看圖片、地圖等需要精細操作的場景。

          3. 整體縮放(Meta Viewport Scaling)

          整體縮放主要由`<meta>`標簽中的`viewport`屬性控制,它定義了瀏覽器在渲染網頁時應如何調整其布局和縮放。例如,設置`initial-scale=1`意味著初始縮放比例為1:1,即網頁內容與設備寬度保持一致。

          二、禁用雙擊放大

          1. 使用CSS屬性

          css
          body {
            touch-action: manipulation;
          }
          

          在CSS中,可以利用`touch-action`屬性來控制元素的觸摸交互行為。將其設置為`manipulation`,即可禁用雙擊放大:

          2. 通過JavaScript阻止事件冒泡

          javascript
          document.addEventListener('dblclick', function(event) {
            event.preventDefault();
          });
          

          對于更復雜的應用場景,可能需要在JavaScript中處理雙擊事件,防止其觸發瀏覽器的默認放大行為:

          三、禁用雙指縮放

          javascript
          let initialTouchStartY = 0;
          let initialTouchStartX = 0;
          
          document.addEventListener('touchstart', function(event) {
            if (event.touches.length > 1) {
              event.preventDefault(); // 阻止默認行為,包括雙指縮放
              initialTouchStartY = event.touches[0].clientY;
              initialTouchStartX = event.touches[0].clientX;
            }
          });
          
          document.addEventListener('touchmove', function(event) {
            if (event.touches.length > 1) {
              event.preventDefault(); // 阻止默認行為,包括雙指縮放
              const currentTouchY = event.touches[0].clientY;
              const currentTouchX = event.touches[0].clientX;
              const diffY = Math.abs(currentTouchY - initialTouchStartY);
              const diffX = Math.abs(currentTouchX - initialTouchStartX);
          
              // 如果雙指滑動距離過小,可能是誤觸,允許正常滾動
              if (diffY < 10 && diffX < 10) return;
          
              // 否則,阻止所有滾動行為
              event.stopPropagation();
            }
          });
          
          document.addEventListener('touchend', function(event) {
            if (event.touches.length > 0) {
              event.preventDefault(); // 阻止默認行為,包括雙指縮放
            }
          });
          

          要禁用雙指縮放,通常需要借助于JavaScript監聽`touchstart`、`touchmove`和`touchend`事件,并在`touchmove`事件處理器中阻止默認行為:

          四、控制整體縮放

          1. 設置合理的viewport meta標簽

          html
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
          

          在HTML文檔的`<head>`部分添加以下`<meta>`標簽,確保頁面初始縮放比例為1,且禁止用戶手動縮放:

          2. 使用CSS媒體查詢優化布局

          css
          @media screen and (max-width: 768px) {
            /* 在小屏設備上的布局調整 */
          }
          
          @media screen and (orientation: landscape) {
            /* 橫屏模式下的布局調整 */
          }
          

          結合CSS媒體查詢,根據不同的設備寬度和屏幕方向動態調整布局,確保內容在各種屏幕尺寸下都能良好展示,從而降低用戶主動縮放的需求:

          五、實戰案例:禁用縮放功能的完整H5頁面示例

          html
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <style>
              body {
                touch-action: manipulation;
              }
            </style>
            <script>
              document.addEventListener('dblclick', function(event) {
                event.preventDefault();
              });
          
              let initialTouchStartY = 0;
              let initialTouchStartX = 0;
          
              document.addEventListener('touchstart', function(event) {
                if (event.touches.length > 1) {
                  event.preventDefault();
                  initialTouchStartY = event.touches[0].clientY;
                  initialTouchStartX = event.touches[0].clientX;
                }
              });
          
              document.addEventListener('touchmove', function(event) {
                if (event.touches.length > 1) {
                  event.preventDefault();
                  const currentTouchY = event.touches[0].clientY;
                  const currentTouchX = event.touches[0].clientX;
                  const diffY = Math.abs(currentTouchY - initialTouchStartY);
                  const diffX = Math.abs(currentTouchX - initialTouchStartX);
          
                  if (diffY < 10 && diffX < 10) return;
          
                  event.stopPropagation();
                }
              });
          
              document.addEventListener('touchend', function(event) {
                if (event.touches.length > 0) {
                  event.preventDefault();
                }
              });
            </script>
          </head>
          <body>
            <!-- 頁面內容 -->
          </body>
          </html>
          

          為了便于理解和實踐,以下是一個包含了禁用雙擊放大、雙指縮放及整體縮放功能的完整H5頁面示例:

          六、結語

          通過以上步驟,您已經掌握了在H5頁面中一鍵禁用雙擊放大、雙指縮放及整體縮放功能的方法。合理運用這些技巧,不僅能提升移動端用戶的瀏覽體驗,還能避免因不必要的縮放導致的布局錯亂等問題。在實際項目中,還需結合具體業務需求,靈活調整代碼實現,以達到最佳效果。希望本文能為您的移動端H5開發之路提供有力支持,助您決勝移動端!


          在響應式布局逐漸成為主流的今天,網頁或者app的流式布局已經不算是一個新鮮的詞匯了。今天我要講的一個內容也是跟頁面流式布局有關,如何讓你的網頁實現完美的縮放?

          網頁布局

          我們可以很快速的寫出一個響應式布局的頁面,首先看一下效果圖。

          網頁布局

          其中html部分的代碼如下:

          html部分代碼

          css中的item代碼為:

          css代碼

          通過以上代碼,完成上述的流式布局后,在我們改變瀏覽器窗口大小時,div也會隨之進行縮放。

          問題

          But,你以為這就是我們想要的結果嗎?

          當然不是!在改變瀏覽器窗口大小時,我們發現雖然div的寬度是進行了縮放,但是高度卻沒變,因此div的寬高比并未保持原始比例,我們可以看下以下的效果。

          縮放后寬高比

          從上圖中可以很容易看出,縮放后的div寬高比比之前小很多,這并不是我們想要的結果。

          我們需要達到的效果是在改變瀏覽器窗口大小時,div也會隨之進行等比例的縮放。

          實現辦法

          首先,可以使用Javascript代碼去實現,這是沒有問題的。但是綁定Javascript的onresize事件,在拖拽時可能會出卡頓現象,體驗不是很好。

          接下來我們通過CSS來實現以上的效果。

          使用的核心屬性是我們平時并不太注意的padding-bottom。

          padding-bottom有一個很容易讓人忽略的特性是,當取值為百分比形式時,其百分比的基數是父元素的寬度,而不是高度。

          因此我們可以在不用給父元素設置高度的時候,就可以通過padding-bottom屬性確定當前元素的高度。我們的做法如下。

          1. 將元素的height屬性設為0,通過padding-bottom屬性確定元素高度。

          2. 設置合理的padding-bottom值,例如上述的例子中,在寬度為21%時,如果需要高度是寬度的1.62倍,我們可以將padding-bottom取值為34%

          修改后的CSS代碼如下。

          修改后的CSS

          修改后,我們再次調整瀏覽器窗口的大小,就會發現div是等比例的進行縮放,完美達到了我們的要求。

          修改后等比例縮放

          疑問

          在這里,可能會有人有疑問如果設置overflow:hidden;那么里面的文字會不會因為超過height,就會被隱藏了?

          答案是不會的,根據CSS2.1的規范,overflow只會對處于padding外面的內容生效,即只有超出了 padding區域的內容才會被overflow屬性隱藏掉。而在設置padding-bottom后,實際已經決定了元素的height屬性,因此overflow:hidden;不會生效。

          總結

          今天這篇文章主要講解了利用CSS完成頁面等比例縮放的最簡單方式,你學會了嗎?

          TML是誰發明的?

          1.HTML的全稱是什么?

          超文本標記語言(Hyper Text Markup Language),是一種用于創建網頁的標準標記語言。

          2.誰發明的?

          是由Tim Berners-Lee發明的。

          HTML 起手應該寫什么?

          <!DOCTYPE html>
            <!--文檔類型為html 此行必須為第一行 前面空一行也會報錯-->
            <html lang="en">
              <!--html標簽 en是英語 zh-CN是中文-->
              
              <head>
                           <meta charset="UTF-8">
                             <!--文件的字符編碼-->
                             <meta name="viewport" content="width=device-width, initial-scale=1.0">
                               <!--content里的內容代表禁止縮放,兼容手機-->
                               <meta http-equiv="X-UA-Compatible" content="ie=edge">
                                 <!--content里的內容表示讓ie使用最新的內容-->
                                 <title>Document</title>
              </head>

          常用的表章節的標簽有哪些,分別是什么意思?

          1. h1-h6 標題
          2. section 章節
          3. article 文章
          4. p 段落
          5. header 頭部
          6. footer 腳部
          7. main 主要內容
          8. aside 旁支內容
          9. div 劃分,表示一個區塊

          全局屬性有哪些?

          1. class 用來對網頁元素進行分類。如果不同元素的class屬性值相同,就表示它們是一類的。
          2. contentteditable HTML 網頁的內容默認是用戶不能編輯,contenteditable屬性允許用戶修改內容。
          3. hidden hidden是一個布爾屬性,表示當前的網頁元素不再跟頁面相關,因此瀏覽器不會渲染這個元素,所以就不會在網頁中看到它。
          4. id id屬性是元素在網頁內的唯一標識符
          5. style 用來指定當前元素的 CSS 樣式
          6. tabindex 頁通常使用鼠標操作,但是某些情況下,用戶可能希望使用鍵盤,或者只有鍵盤可以用。因此,瀏覽器允許使用 Tab 鍵,遍歷網頁元素。也就是說,只要不停地按下按鈕 Tab 鍵,網頁的焦點就會從一個元素轉移到另一個元素,選定焦點元素以后,就可以進行下一步操作,比如按下回車鍵訪問某個鏈接,或者直接在某個輸入框輸入文字。
          7. title 用來為元素添加附加說明。大多數瀏覽器中,鼠標懸浮在元素上面時,會將title屬性值作為浮動提示,顯示出來。

          常用的內容標簽有哪些,分別是什么意思?

          1. ol+li 有序列表
          2. ul+li 無序列表
          3. dl+dt+dd 自定義的列表
          4. pre 顯示文本中的空白符號
          5. hr 分割線
          6. br 換行
          7. a 鏈接通過<a>標簽表示,用戶點擊后,瀏覽器會跳轉到指定的網址。
          8. em <em>是一個行內標簽,表示強調(emphasize),瀏覽器會以斜體顯示它包含的內容。
          9. strong <strong>是一個行內元素,表示它包含的內容具有很強的重要性,需要引起注意。瀏覽器會以粗體顯示內容。
          10. code 呈現一段計算機的代碼,各類語言。
          11. quote 行內的引用
          12. blockquote 塊的引用

          主站蜘蛛池模板: 亚洲爆乳无码一区二区三区| 精品欧美一区二区在线观看| 亚洲AV综合色区无码一区爱AV| 国产高清在线精品一区小说| 国产色情一区二区三区在线播放 | 日本免费一区二区三区| 色婷婷综合久久久久中文一区二区| 无码精品国产一区二区三区免费| 成人精品一区二区户外勾搭野战| 在线视频精品一区| 国产精品亚洲产品一区二区三区| 国产精品区一区二区三在线播放 | 国产一区二区不卡在线播放| 亚洲一区二区三区高清| 亚洲综合无码一区二区痴汉| 国产在线精品一区在线观看| 日本大香伊一区二区三区| 精品乱码一区二区三区四区| 狠狠爱无码一区二区三区| 国产精品丝袜一区二区三区| 国产精品亚洲一区二区在线观看| 久久久久国产一区二区三区| 日韩精品一区二区三区中文精品 | 亚洲爆乳无码一区二区三区| 免费高清在线影片一区| 亚洲成AV人片一区二区密柚| 国产一区二区三区在线看片| 亚洲AV日韩AV天堂一区二区三区| 日韩高清一区二区| 人妻无码一区二区不卡无码av| 国产中文字幕一区| 老熟妇仑乱一区二区视頻| 亚洲成a人一区二区三区| 无码国产精品一区二区免费式影视| 精品无码综合一区| 日本一区二区三区在线看| 88国产精品视频一区二区三区| 国产成人精品一区二三区 | 国产成人精品一区二三区熟女 | 亚洲福利视频一区二区三区| 日本韩国黄色一区二区三区|