搜尋
首頁web前端js教程手機開發必備技巧:javascript及CSS功能程式碼分享_javascript技巧

1. viewport:

也就是可視區域。對於桌面瀏覽器,我們都很清楚viewport是什麼,就是出去了所有工具列、狀態列、滾動條等等之後用於看網頁的區域,
這是真正有效的區域。由於行動裝置螢幕寬度不同於傳統web,因此我們需要改變viewport;

實際上我們可以操作的屬性有4 個:

複製程式碼 程式碼如下:

width -             //  viewport 的寬度(範圍從200 到10,000,預設為980 像素)
height -            //  viewport 的高度(範圍從223 到10,000)
 
initial-scale -     //  初始的縮放比例 (範圍從>0 到10)
 
minimum-scale -    //   允許使用者縮放到的最小比例
maximum-scale -    //   允許使用者縮放到的最大比例
 
user-scalable -    //   使用者是否可手動縮 (no,yes)

那麼到底這些設定如何讓Safari 知道呢?其實很簡單,就一個meta,形如:
複製程式碼 程式碼如下:

   //編碼

  // 離線應用的另一個技巧    
  // 隱藏狀態欄       
//指定的iphone中safari頂端的狀態條的樣式       
       //告訴裝置忽略將頁面中的數字識別為電話號碼     
 

在設定了initial-scale=1 之後,我們終於可以以1:1 的比例進行頁面設計了。關於viewport,還有一個很重要的概念是:iphone 的safari 瀏覽器完全沒有滾動條,而且不是簡單的“隱藏滾動條”,是根本沒有這個功能。 iphone 的safari 瀏覽器實際上從一開始就完整顯示了這個網頁,然後用viewport 查看其中的一部分。當你用手指拖曳時,其實拖的不是頁面,而是viewport。瀏覽器行為的改變不只滾動條,互動事件也跟一般桌面不一樣。

2. link:

複製程式碼 程式碼如下:

// 設定開始頁面圖片
// 在設定書籤的時候可以顯示好看的圖示
    // 肖像模式樣式      
 
//垂直畫面時使用的樣式

 
//橫屏時使用的樣式
 

3. 事件 :

複製程式碼 程式碼如下:

// 手勢事件
touchstart            //手指接觸螢幕時觸發
touchmove           //當已接觸螢幕的手指開始移動後觸發
touchend             //當手指離開螢幕時觸發
touchcancel
 
// 觸碰事件
gesturestart          //當兩個手指接觸螢幕時觸發
gesturechange      //當兩隻手指接觸螢幕後開始移動時觸發
gestureend
 
// 螢幕旋轉事件  
onorientationchange    
 
// 偵測觸控螢幕的手指何時改變方向      
orientationchange      
 
// touch事件支援的相關屬性
touches        
targetTouches      
changedTouches             
clientX    // X coordinate of touch relative to the viewport (excludes scroll offset)      
clientY    // Y coordinate of touch relative to the viewport (excludes scroll offset)      
screenX    // Relative to the screen       
screenY     // Relative to the screen      
pageX     // Relative to the full page (includes scrolling)    
pageY     // Relative to the full page (includes scrolling)    
target     // Node the touch event originated from     
identifier     // An identifying number, unique to each touch event

4. 螢幕旋轉事件:onorientationchange
新增螢幕旋轉事件偵聽,隨時可發現螢幕旋轉狀態(左旋、右旋或沒旋)。例:

複製程式碼 程式碼如下:

// 判斷螢幕是否旋轉
function orientationChange() {
    switch(window.orientation) {
      case 0: 
            alert("肖像模式 0,screen-width: " screen.width "; screen-height:" screen.height);
            break;
      case -90: 
            alert("左旋 -90,screen-width: " screen.width "; screen-height:" screen.height);
            break;
      case 90:   
            alert("右旋 90,screen-width: " screen.width "; screen-height:" screen.height);
            break;
      case 180:   
          alert("風景模式 180,screen-width: " screen.width "; screen-height:" screen.height);
          break;
    };
};
// 新增事件監聽
addEventListener('load', function(){
    orientationChange();
    window.onorientationchange = orientationChange;
});

5. 隱藏網址列 & 處理事件的時候,防止捲軸出現:

複製程式碼 程式碼如下:

// 隱藏網址列  & 處理事件的時候 ,防止捲軸出現
addEventListener('load', function(){
        setTimeout(function(){ window.scrollTo(0, 1); }, 100);
});

6. 雙手手指滑動事件:

複製程式碼 程式碼如下:

// 雙手指滑動事件
addEventListener('load',  function(){ window.onmousewheel = twoFingerScroll;},
     false              // 相容於各式瀏覽器,以在冒泡階段呼叫事件處理程序 (true 擷取階段)
);
function twoFingerScroll(ev) {
    var delta =ev.wheelDelta/120;              //以 delta 值判斷(如正負) ,而後執行對應操作
    return true;
};

7. 判斷是否為iPhone:
複製程式碼 程式碼如下:

// 判斷是否為 iPhone :
function isAppleMobile() {
    return (navigator.platform.indexOf('iPad') != -1);
};

8. localStorage:

 範例 :(注意資料名稱  n  要用引號引起來)

複製程式碼 程式碼如下:

var v = localStorage.getItem('n') ? localStorage.getItem('n') : "";   // 如果名稱是  n 的資料存在 ,則將其讀出 ,賦予變數  v  。
localStorage.setItem('n', v);                            🎜> localStorage.removeItem('n');                            🎜>

9. 使用特殊連結:
 如果你關閉自動辨識後 ,又希望某些電話號碼能夠連結到 iPhone 的撥號功能 ,那麼可以透過這樣​​來聲明電話連結 ,

複製程式碼 程式碼如下:
打給我
傳簡訊


或用於單元格:


複製程式碼 程式碼如下:


10. 自動大寫與自動修正

要關閉這兩項功能,可以透過autocapitalize 與autocorrect 這兩​​個選項:

複製程式碼 程式碼如下:


11. WebKit CSS:

①「盒子模型」的具體描述性質的包圍盒塊內容,包括邊界,填充等等。

複製程式碼 程式碼如下:
-webkit-border-bottom-left-radius: radius;
-webkit-border-top-left-radius: horizo​​ntal_radius vertical_radius;
-webkit-border-radius: radius;      //容器圓角
-webkit-box-sizing: sizing_model; 邊框常數值:border-box/content-box
-webkit-box-shadow: hoff voff blur color; //容器陰影(參數分別為:水平X 方向偏移量;垂直Y 方向偏移量;高斯模糊半徑值;陰影顏色值)
-webkit-margin-bottom-collapse: collapse_behavior; 常數值:collapse/discard/separate
-webkit-margin-start: width;
-webkit-padding-start: width;
-webkit-border-image: url(borderimg.gif) 25 25 25 25 round/stretch round/stretch;
-webkit-appearance: push-button;   //內建的CSS 表現,暫時只支援push-button


②「視覺格式化模型」描述性質,決定了位置和大小的區塊元素。
複製程式碼 程式碼如下:

direction: rtl
unicode-bidi: bidi-override; 常數:bidi-override/embed/normal

③「視覺效果」描述屬性,調整的視覺效果塊內容,包括溢出行為,調整行為,能見度,動畫,變換,和過渡。
複製程式碼 程式碼如下:

clip: rect(10px, 5px, 10px, 5px)
resize: auto; 常數:auto/both/horizo​​ntal/none/vertical
visibility: visible; 常數: collapse/hidden/visible
-webkit-transition: opacity 1s linear; 動畫效果 ease/linear/ease-in/ease-out/ease-in-out
-webkit-backface-visibility: visibler; 常數:visible(預設值)/hidden
-webkit-box-reflect: right 1px; 鏡向反轉
-webkit-box-reflect: below 4px -webkit-gradient(linear, left top, left bottom,
from(transparent), color-stop(0.5, transparent), to(white));
-webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));; //CSS 遮罩/蒙板效果
-webkit-mask-attachment: fixed; 常數:fixed/scroll
-webkit-perspective: value; 常數:none(預設)
-webkit-perspective-origin: left top;
-webkit-transform: rotate(5deg);
-webkit-transform-style: preserve-3d; 常數:flat/preserve-3d; (2D 與3D)

④「產生的內容,自動編號,並列出」描述屬性,允許您更改內容的一個組成部分,創建自動編號的章節和標題,和操縱的風格清單的內容。
複製程式碼 程式碼如下:

content: “Item” counter(section) ” “;
This resets the counter.
First section
>two section
three section
counter-increment: section 1;
counter-reset: section;

⑤「分頁媒體」描述效能與外觀的屬性,控製印刷版本的網頁,如分頁符號的行為。
複製程式碼 程式碼如下:

page-break-after: auto; 常數:always/auto/avoid/left/right
page-break-before: auto; 常數:always/auto/avoid/left/right
page-break-inside: auto; 常數:auto/avoid

⑥「顏色和背景」描述屬性控制背景下的區塊級元素和顏色的文字內容的組成部分。
複製程式碼 程式碼如下:

-webkit-background-clip: content; 常數:border/content/padding/text
-webkit-background-origin: padding; 常數:border/content/padding/text
-webkit-background-size: 55px; 常數:length/length_x/length_y

⑦ 「字型」的具體描述性質的文字字體的選擇範圍內的一個因素。報告還描述屬性用於下載字體定義。
複製程式碼 程式碼如下:

unicode-range: U 00-FF, U 980-9FF;

⑧「文字」描述屬性的特定文字樣式,間距和自動滾屏。
複製程式碼 程式碼如下:

text-shadow: #00FFFC 10px 10px 5px;
text-transform: capitalize; 常數:capitalize/lowercase/none/uppercase
word-wrap: break-word; 常數:break-word/normal
-webkit-marquee: right large infinite normal 10s; 常數:direction(方向) increment(迭代次數) repetition(重複) style(樣式) speed(速度);
-webkit-marquee-direction: ahead/auto/backwards/down/forwards/left/reverse/right/up
-webkit-marquee-incrementt: 1-n/infinite(無窮次)
-webkit-marquee-speed: fast/normal/slow
-webkit-marquee-style: alternate/none/scroll/slide
-webkit-text-fill-color: #ff6600; 常數:capitalize, lowercase, none, uppercase
-webkit-text-security: circle; 常數:circle/disc/none/square
-webkit-text-size-adjust: none; 常數:auto/none;
-webkit-text-stroke: 15px #fff;
-webkit-line-break: after-white-space; 常數:normal/after-white-space
-webkit-appearance: caps-lock-indicator;
-webkit-nbsp-mode: space; 常數: normal/space
-webkit-rtl-ordering: logical; 常數:visual/logical
-webkit-user-drag: element; 常數:element/auto/none
-webkit-user-modify: read- only; 常數:read-write-plaintext-only/read-write/read-only
-webkit-user-select: text; 常數:text/auto/none

⑨「表格」所描述的佈局和設計效能表的具體內容。
複製程式碼 程式碼如下:

-webkit-border-horizo​​ntal-spacing: 2px;
-webkit-border-vertical-spacing: 2px;
-webkit-column-break-after: right; 常數:always/auto/avoid/left/right
-webkit-column-break-before: right; 常數:always/auto/avoid/left/right
–webkit-column-break-inside: logical; 常數:avoid/auto
-webkit-column-count: 3; //分欄
-webkit-column-rule: 1px solid #fff;
style:dashed,dotted,double,groove,hidden,inset,none,outset,ridge,solid

⑩「使用者介面」描述屬性,涉及到使用者介面元素在瀏覽器中,如滾動文字區,滾動條,等等。報告也描述屬性,範圍以外的網頁內容,如遊標的標註樣式和顯示當您按住觸摸觸摸
目標,如在iPhone上的連結。
複製程式碼 程式碼如下:

-webkit-box-align: baseline,center,end,start,stretch 常數:baseline/center/end/start/stretch
-webkit-box-direction: normal;常數:normal/reverse
-webkit-box-flex: flex_valuet
-webkit-box-flex-group: group_number
-webkit-box-lines: multiple; 常數:multiple/single
-webkit-box-ordinal-group: group_number
-webkit-box-orient: block-axis; 常數:block-axis/horizo​​ntal/inline-axis/vertical/orientation
–webkit-box-pack: alignment; 常數:center/end/justify/start

12. 動畫轉換
這是 Webkit 中最具創新力的特性:使用過渡函數定義動畫。

複製程式碼 程式碼如下:

-webkit-animation: title infinite ease-in-out 3s;
animation 有這幾個屬性:
-webkit-animation-name: //屬性名,就是我們定義的keyframes
-webkit-animation-duration:3s //持續時間
-webkit-animation-timing-function: //過渡類型:ease/ linear(線性) /ease-in(慢到快)/ease-out(快到慢) /ease-in-out(慢到快再到慢) /cubic-bezier
-webkit-animation-delay:10ms //動畫延遲(預設0)
-webkit-animation-iteration-count: //循環次數(預設1),infinite 為無限
-webkit-animation-direction: //動畫方式:normal(預設 正向播放); alternate(交替方向,第偶數次正向播放,第奇數次反向播放)

這些同樣是可以簡寫的。但真正讓我覺的很爽的是keyframes,它能定義一個動畫的轉變過程供調用,過程為0%到100%或from(0%)到to(100%)。簡單點說,只要你有想法,你想讓元素在這個過程中以什麼樣的方式改變都是很簡單的。
複製程式碼 程式碼如下:

-webkit-transform: 類型(縮放scale/旋轉rotate/傾斜skew/位移translate)
scale(num,num) 放大倍率。 scaleX 和 scaleY(3),可以簡寫為:scale(* , *)
rotate(*deg) 轉動角度。 rotateX 和 rotateY,可以簡寫為:rotate(* , *)
Skew(*deg) 傾斜角度。 skewX 和skewY,可簡寫為:skew(* , *)
translate(*,*) 座標移動。 translateX 和translateY,可簡寫為:translate(* , *)。

實作模擬彈出訊息框(Alert)的範例:
①定義過渡(在

@-webkit-keyframes DivZoom
{
0% { -webkit-transform: scale(0.01) }
60% { -webkit-transform: scale(1.05) }
80% { -webkit-transform: scale(0.95) }
100% { -webkit-transform: scale(1.00) }
}
.sZoom { -webkit-animation: DivZoom 0.5s ease-in-out }

(很容易看懂,將元素從縮小的0.01 倍--很小但不能為0 倍,放大到1.05 倍,再縮小到0.95倍,最後到1 倍即正常大小。整個過渡過程事件為0.5 秒,動畫方式為ease-in-out,即慢到快再到慢,預設只進行1 次過渡。 ②定義元素(在段):

複製程式碼 程式碼如下:


③啟動動畫(在 javascript 定義的函數中)

複製程式碼 程式碼如下:
function pHelp()
{
layerH.style.visibility = 'visible'
layerH.style.cssText = "-webkit-animation-delay: " Math.random() "ms"
layerH.className = 'sZoom'
}

(這個啟動函數就很好理解了。但是為什麼要使用-webkit-animation-delay 這句呢?因為當一個元素過渡顯示完成後,若其樣式沒有變化,下一次將無法進行過渡動畫顯示。我們巧妙的利用其動畫延遲時間定義,使其有所變化,就避免了上述問題。不會察覺的。
補充:

1. 鎖定 viewport


複製程式碼 程式碼如下:
ontouchmove="event.preventDefault()" //鎖定viewport,任何螢幕操作不移動使用者介面(彈出鍵盤除外)。


2. 被點擊元素的外觀變化,可以使用樣式來設定:


複製程式碼 程式碼如下:
-webkit-tap-highlight-color: 顏色


3. 偵測iPhone/iPod
開發特定設備的行動網站,首先要做的就是設備偵測了。以下是使用Javascript來偵測iPhone/iPod的UA,然後轉向專屬的URL。
複製程式碼 程式碼如下:

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
  if (document.cookie.indexOf("iphone_redirect=false") == -1) {
    window.location = "http://m.example.com";
  }
}

雖然Javascript是可以在水果設備上運作的,但使用者還是可以停用。它也會造成客戶端刷新和額外的資料傳輸,所以下面是伺服器端偵測和轉向:
複製程式碼 程式碼如下:

if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod')) {
  header('Location: http://yoursite.com/iphone');
  exit();
}

4. 阻止旋轉螢幕時自動調整字體大小
複製程式碼 程式碼如下:

html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {-webkit-text-size-adjust:none;}

5. iPhone才辨識的CSS
如果不想設備偵測,可以用CSS媒體查詢來專為iPhone/iPod定義樣式。
複製程式碼 程式碼如下:

@media screen and (max-device-width: 480px) {}

6. 縮小圖片
網站的大圖通常寬度都超過480像素,如果用前面的程式碼限制了縮放,這些圖片在iPhone版顯示顯然會超過螢幕。還好iPhone機能還夠,我們可以用CSS讓iPhone自動將大圖縮小顯示。
複製程式碼 程式碼如下:

@media screen and (max-device-width: 480px){
  img{max-width:100%;height:auto;}
}

7. 模擬:hover偽類
因為iPhone並沒有滑鼠指針,所以沒有hover事件。那CSS :hover偽類就沒用了。但iPhone有Touch事件,onTouchStart 類似 onMouseOver,onTouchEnd 類似 onMouseOut。所以我們可以用它來模擬hover。使用Javascript:
複製程式碼 程式碼如下:

var myLinks = document.getElementsByTagName('a');
for(var i = 0; i   myLinks[i].addEventListener('touchstart', function(){this.className = “hover”;}, false);
  myLinks[i].addEventListener('touchend', function(){this.className = “”;}, false);
}

再用CSS增加hover效果:
複製程式碼 程式碼如下:

a:hover, a.hover { /* 你的hover效果 */ }

這樣設計一個鏈接,感覺可以更像按鈕。並且,這個模擬可以用在任何元素上。
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具